운영체제의 역할
- 자원: 프로그램 실행에 마땅히 필요한 요소
- 소프트웨어
- 하드웨어
CPU 관리: CPU 스케줄링
- 실행 중인 모든 프로그램들이 공정하고 합리적으로 CPU를 할당받도록 CPU의 할당 순서와 사용 시간 결정
메모리 관리: 가상 메모리
- 실제 물리적인 메모리 크기보다 더 큰 메모리를 이용할 수 있도록 하는 기술
파일/디렉터리 관리: 파일 시스템
- 보조기억장치 내의 정보를 파일 및 디렉터리 단위로 접근, 관리할 수 있도록 만드는 운영체제 내부 프로그램
프로세스 및 스레드 관리
- 프로세스: 실행 중인 프로그램
- 스레드: 프로세스를 이루는 실행의 단위

시스템 콜과 이중 모드
- 운영체제의 기능을 제공받기 위해서는 커널 영역에 적재된 운영체제 코드를 실행해야 한다

- 시스템 콜: 응용 프로그램은 시스템 콜을 호출하여 운영체제 코드 실행
- 운영체제의 서비스를 제공 받기 위한 수단으로, 호출 가능한 함수의 형태를 가짐
- `open()`, `close()`, `read()`, `write()` 등

시스템 콜 과정
- 사용자 영역을 실행하는 과정에서 시스템 콜이 호출되면 CPU는 현재 수행 중인 작업을 백업
- 커널 영역 내의 인터럽트를 처리하기 위한 코드(시스템 콜을 구성하는 코드)를 실행
- 다시 사용자 영역의 코드 실행 재개

- 사용자 모드: 사용자 영역에 적재된 코드를 실행할 때의 모드
- 운영체제 서비스를 제공받을 수 없는 실행 모드
- 커널 모드: 커널 영역에 적재된 코드를 실행할 때의 모드
- 운영체제 서비스를 제공받을 수 있는 실행 모드
