반응형
본 글은 (KOCW) 운영체제, 이화여자대학교 반효경 교수님의 강의를 듣고 내용을 요약 및 정리했습니다.
스터디를 진행하는 것에 목적이 있으며, 자세한 사항은 여기를 참고하시면 됩니다.
OS란?
- 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 좁은 의미의 운영체제 = 커널
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
- 커널: 컴퓨터에서 항상 수행되는 프로그램
- 넓은 의미의 운영체제
- 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
OS의 목표?, 목적
- 컴퓨터 시스템의 자원을 효율적으로 관리 (가장 중요한 목적)
- 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
- 형평성 있는 자원 분배
- 주어진 자원의 최대한의 성능을 내도록!
- 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당
- 실행 중인 프로그램들에 메모리 공간을 적절히 분배
- 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공(각종 소프트웨어, 사용자를 위함)
- 사용자/프로그램들이 독립적인 컴퓨터에서 수행되는 것 같은 환경을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
운영 체제의 분류
동시 작업 가능 여부
- 단일 작업(single tasking): 한 번에 하나의 작업만 처리
- Ms-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- 다중 작업(multi tasking): 동시에 두 개 이상의 작업 처리
- UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
사용자 수
- 단일 사용자
- MS-DOS, MS Windows
- 다중 사용자(동시 접속)
- UNIX, NT Server
처리 방식
- 일괄처리(Batch Processing)
- 작업 요청의 일정량을 모아서 한꺼번에 처리
- 작업이 완전 종료될 때까지 기다려야 함
- 시분할(Time Sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- 키보드를 치면 바로 화면에 결과가 나타남
- 동시 요청이 많을수록 응답시간이 늦어질 수 있다
- interactive 한 방식
- 실시간(Realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- 공장 제어, 반도체 장비, 제어
- 실시간 시스템의 개념 확장
- Hard RealTime System
- 데드라인이 철저히 지켜져야 하는 시스템
- Soft RealTime System
- 데드라인은 있지만 크게 지켜지지 않아도 치명적이지 않은 시스템
- Hard RealTime System
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
용어 정리
- Multitasking, Multiprogramming, Time Sharing, MutliProcess
- 컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미
- Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조
- Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 것을 강조
- MutliProcessor
- 하나의 컴퓨터에 CPU가 여러 개 있음을 의미
운영 체제의 예
유닉스
- 코드의 대부분을 C언어로 작성
- 기계어, 어셈블리어로 운영체제를 만들기 어려워 프로그래밍 언어 C언어를 운영체제를 만들기 위해 만들었음
- 오픈 소스
- 높은 이식성
- 다른 컴퓨터에 가져가도 C언어로 작성되어 있어 컴파일하면 잘 작동
- 최소한의 커널 구조
- 핵심 기능만 커널에 구현하여 메모리 부담을 줄임
- 복잡한 시스템에 맞게 확장 용이
- 프로그램 개발에 용이
- 다양한 버전: System V, FreeBSD, SunOS, Solaris, Linux
DOS(Disk Operating System)
- MS사에서 1981년 IBM-PC(개인용)를 위해 개발
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계(주 기억 장치: 640kb)
MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play, 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 불안정성
- 풍부한 지원 소프트웨어
운영 체제의 구조
운영 체제의 역할은 자원을 효율적으로 관리하는데 있었다 각 자원들을 어떻게 효율적으로 관리해야 할지를 결정해야 하는 데 이를 간단하게 뒤에서 배우기 전에 맛보기로 정리한다
- CPU
- CPU 스케쥴링: 누구한테 CPU를 줘야할까?
- 100초가 걸리는 작업을 뒤로하고 뒤에 1초면 해결할 수 있는 작업 100개를 먼저 처리한다면 전체 대기시간을 줄일 수 있음
- 메모리
- 한정된 메모리를 어떻게 쪼개어 쓸 수 있을까
- 프로그램마다 메모리를 얼마만큼 나누어 가져야 원활하게 처리를 할 수 있을까?
- 무조건 1/n보다 상황에 따라 특정 프로그램에 메모리를 많이 할당해서 빨리 처리해 버리자
- 메모리가 부족하면 쫓아내야 하는데, 다시 사용될 확률이 낮은(미래를 예측) 자원을 내쫓아버려야 한다
- 어떻게 미래를 예측하지? 과거의 사용률을 보고 판단하면 예측할 확률이 높아짐
- Disk
- 디스크에 파일을 어떻게 보관해야 하는가?
- 연속적인 저장? 조각조각 나누어 저장?
- 디스크를 읽으려면 헤드를 움직이면서 읽기 때문에 순서를 바꿔서 헤드의 이동을 낮추면 성능이 좋아진다
- 엘리베이터 스케쥴링과 비슷하다
- 먼저 들어온 대로 처리한다면? 2층 갔다가 100층 갔다가 3층 갔다가 99층 갔다가 하는 것은 비효율적
- 디스크는 헤드가 움직이면서 처리하기 때문에 적게 움직이게 스케쥴링해야 함
- I/O Device
- 각기 다른 입출력장치와 컴퓨터 사이에 어떻게 정보를 주고받게 할까?
- CPU에 인터럽트를 보내서 입출력이 필요함을 알리는 방식
- 프로세스 관리
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 프로세스 간 협력
- 그 외
- OS 보호 시스템
- 네트워킹
- 명령어 해석기(CLI)
정리
컴퓨터 전체를 통제하는 것이 운영체제다 어떻게 자원을 효율적으로 관리할 수 있을지, 나 라면 어떻게 자원을 관리할 것인지를 생각하며 접근해야 한다
- 운영체제에 대해 설명해 주세요
- 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이며 컴퓨터 시스템의 자원을 효율적으로 관리하는 역할, 컴퓨터 시스템을 편리하게 사용할 수 있도록 환경을 제공해 주는 역할을 하는 소프트웨어를 운영체제라고 합니다.
- 유닉스 운영체제에 대해서 설명해 주세요
- 멀티 유저, 멀티태스킹을 지원하여 대형 컴퓨터를 위해 만들어진 운영체제입니다. 기계어, 어셈블리어로 멀티 유저, 멀티 태스킹을 지원하기가 복잡하고 어려워 이를 쉽게 작성하고자 프로그래밍 언어 C언어가 개발되었으며 코드의 대부분을 C언어로 작성되었습니다. 또한 C언어로 구현되어 컴퓨터에 대한 의존성 없이 C컴파일러만 맞다면 다른 컴퓨터에서도 실행가능한 높은 이식성을 가지며 메모리의 부담을 줄이기 위해 최소한의 커널 구조를 사용합니다
커널 구조에 대해서는 다음 블로그를 참고하면 좋을 것 같습니다
반응형
'CS' 카테고리의 다른 글
OS - Process (0) | 2023.10.16 |
---|---|
OS - System Structure & Program Execution (0) | 2023.10.15 |
라우팅 (0) | 2023.10.12 |
TCP/IP 4계층 (0) | 2023.09.29 |
쿠키와 세션 (0) | 2023.09.28 |