- 컴퓨터 하드웨어 위에 설치되어 하드웨어와 사용자/소프트웨어를 연결하는 소프트웨어
- 좁은 의미의 운영체제 : 커널 (운영체제의 핵심 부분으로 메인 메모리에 상주하는 부분)
- 넓은 의미의 운영체제 : 커널뿐 아니라 주변 시스템 유틸리티까지 포함한 개념
- ex) 윈도우 운영체제를 깔면 커널뿐 아니라 메인 메모리에 상주하지 않는 다른 소프트웨어도 포함되어있음
- 하드웨어(CPU, 메모리, 입출력 장치)를 효율적으로 관리
- 효율적으로 관리 = 주어진 자원으로 최대한의 성능을 내도록 / 사용자간의 형평성있는 자원 분배
- 하드웨어 자원뿐 아니라 소프트웨어 자원(프로세스, 파일)도 관리
- 사용자가 컴퓨터를 편하게 사용할 수 있는 환경을 제공
- 사용자는 서로 다른 프로그램을 동시에 실행할 수 있음
- 동시 작업 가능 여부
- 단일 작업 (single tasking) : 한번에 하나의 프로그램만 실행 가능
- 다중 작업 (multi tasking) : 동시에 두 개 이상의 프로그램 처리 가능
- 현대 운영체제는 다중 작업을 지원
- 처리 방식
- 일괄 처리 (batch processing) : 작업 요청의 일정량을 모아서 한번에 처리
- 시분할 (time sharing)
- 여러 작업을 수행할때 CPU를 일정한 시간 단위로 분할하여 사용
- Interactive한 방식 (input을 넣으면 output이 바로 나옴) / 짧은 응답 시간 / 작업 종료의 데드라인 없음
- 현대 운영체제는 시분할을 지원
- 실시간 (real time)
- 정해진 시간 안에 작업이 반드시 종료됨을 보장해야하는 시스템을 위한 운영체제 ex) 미사일 제어
- CPU는 매 순간 하나의 작업만 수행할 수 있지만 짧은 시간으로 분할하여 CPU를 할당하기 때문에 유저는 동시에 실행되는 것처럼 느낌
- (CPU가 하나 달린 운영체제에서) '여러 작업을 동시에 수행함'을 뜻하는 유사한 용어들
- multitasking
- multiprogramming : 여러 프로그램이 메모리에 동시에 올라가있음을 강조 (메모리 측면)
- time sharing : 시간을 분할하여 CPU를 나누어 쓴다는 의미를 강조 (CPU 측면)
- multiprocess : 프로세스 측면
- multiprocessor : 하나의 컴퓨터에 CPU(processor)가 여러개 붙어있음
- ex) 이쪽 CPU에서는 프로그램A 실행, 저쪽 CPU에서는 프로그램B 실행이 가능
- 운영체제는 컴퓨터의 자원(CPU, memory, Disk, I/O device)를 관리
- 각 자원별 이슈
- CPU : 어떤 프로세스에게 CPU를 줄까? (CPU 스케쥴링)
- CPU는 매우 빠른 자원이므로 시간을 작게 쪼개서 여러 프로세스들이 CPU를 나눠씀
- memory : 한정된 메모리를 어떻게 나눠서 쓸까? (메모리 관리)
- 각 프로세스들이 메모리를 1/n 하지않고 특정 프로세스에게 메모리를 몰아줌
- 미래에 사용될 가능성이 높은 데이터는 메인 메모리 / 그렇지 않음면 disk에 저장
- disk : 디스크에 파일을 어떻게 보관하지? (파일 관리)
- 디스크 헤더의 이동을 최소화하기 위해 순서대로 요청을 처리하지 않곡 헤더에 가까운 요청부터 처리
- I/O device : 입출력 장치들과 CPU간에 어떻게 정보를 주고 받지? (입출력 관리)
- 입출력 장치는 CPU에게 알릴 내용이 있으면 인터럽트를 호출
- CPU는 인터럽트가 오면 다음 작업을 하기 전에 입출력 장치의 요청을 처리
- 소프트웨어 자원 : 프로세스 관리
- 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
- CPU : 어떤 프로세스에게 CPU를 줄까? (CPU 스케쥴링)