컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서
사용자 및 다른 모든 소프트웨어와 하드웨어의 연결을 담당한다.
운영체제는 컴퓨터가 부팅될 때 메모리 내 커널 영역(kernal space)이라는 공간에 적재되며,
커널 영역을 제외한 공간은 사용자 영역(user space)으로, 일반적인 응용 프로그램이 적재된다.
→ 커널 영역에 적재된 운영체제가 사용자 영역에 적재된 프로그램들에 자원을 할당하고 실행을 돕는 것
운영체제에는 크게 두 가지의 목표가 있다.
사용자의 입장 : 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 (즉, 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행해줌)
전공자의 입장 : 컴퓨터 시스템의 자원을 효율적으로 관리하는 것
여기서 말하는 자원이란 프로세스(CPU), 메모리, 기억장치, 입출력 장치 등을 말한다.
자원의 효율적 관리란 ?
단일 작업
한 번에 하나의 작업만 처리 (ex: MS-DOS 프롬프트)
다중 작업
동시에 두 개 이상의 작업을 처리 (ex: UNIX, MS Windows 등)
시분할 시스템
: CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템
다중 프로그래밍 시스템
: 메모리 공간을 분할해 여러 프로그램을 동시에 메모리에 올려놓고 CPU가 항상 작업을 수행할 수 있도록 하는 시스템
다중처리기 시스템
: 하나의 컴퓨터 안에 CPU가 여러 개 설치된 시스템
단일 사용자 (Single User)
다중 사용자 (Mulit User)
일괄 처리 (Batch Processing)
- 작업 요청의 일정량을 모아서 한꺼번에 처리
- 작업이 완전히 종료될 때까지 기다림
현대의 운영체제에 적합하지 않음
시분할 (Time Sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
- interactive한 방식
현대의 운영체제
실시간 (Realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간시스템을 위한 OS
- ex) 미사일 제어, 반도체 장비, 로봇 제어
시분할과 비슷해보이지만, 프로그램이 동작하기 위해 정확한 시간이 필요로 하는 운영체제
Multitasking : 컴퓨터 전반에서 하나의 프로그램이 끝나기 전에 다른 프로그램이 컴퓨터에서 실행 가능한 것
Multiprogramming : 여러 프로그램이 메모리에 올라가 있음을 강조
Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미 강조
Multiprocess : 여러 프로그램이 동시에 실행
MultiProcessor : 하나의 컴퓨터에 CPU가 여러 개 붙어있음을 의미
CPU가 한개일때 작업이 긴 것이 있으면 나머지 작업은 오래 기다려야 하는데 이를 해결하는 방법 ?
CPU 스케줄링
- 어떤 프로그램부터 CPU를 이용하게 할지 결정
- 얼마나 오랫동안 CPU를 이용하게 할지 결정
프로그램이 많아지만 각 프로그램이 갖는 메모리 공간이 작아져서 프로그램이 원활하게 실행되지 않는 경우 ?
메모리 관리의 필요성
- 실행할 프로그램을 메모리에 적재
- 더 이상 실행되지 않는 프로그램을 메모리에서 삭제
디스크를 읽을 때 헤드의 움직임을 최소화하면서 효율적으로 읽어들이는 방법 ?
파일 관리를 효율적으로 하는 방법
- 엘리베이터 스케줄링과 유사한 방법
(먼저 버튼을 눌러도 우선 탑승이 가능하지 않은 방식)
I/O device를 관리하기 위해 인터럽트를 사용하여 CPU에게 작업 사항이 있음을 알림
입출력 관리
- 복수의 프로그램이 동일한 입출력장치 접근 시도 시 동시 접근 방지