컴퓨터 시스템의 자원을 효율적으로 관리하고, 사용자와 하드웨어 간의 인터페이스 역할을 수행하는 소프트웨어
운영체제의 핵심 부분은 커널(Kernel) 이며, 하드웨어와 직접 상호 작용하며 시스템 자원을 관리하는 역할을 수행
운영체제의 핵심 기능 중 하나
이를 이해하기 위해 먼저 자원(Resource) 개념을 알아야 함
운영체제는 응용 프로그램을 대신하여 CPU, 메모리, 보조기억장치 등의 자원을 관리하고, 프로그램들이 자원을 원활하게 사용할 수 있도록 지원
메모리에는 여러 개의 프로그램(프로세스)이 적재될 수 있지만, CPU는 한 번에 하나의 프로세스만 실행 가능
따라서 운영체제는 공정하고 합리적인 CPU 할당을 위해 CPU 스케줄링을 수행
CPU 스케줄링 알고리즘을 통해 실행 순서와 사용 시간을 결정
운영체제는 실행 중인 프로그램을 메모리에 적재하고, 종료된 프로그램을 삭제하는 역할을 수행
이를 위해 가상 메모리(Virtual Memory) 기법을 활용
운영체제는 보조기억장치를 효율적으로 관리하기 위해 파일 시스템을 제공
파일 시스템을 통해 데이터 저장 및 접근이 용이하도록 파일 및 디렉터리(폴더) 구조를 관리
운영체제의 입출력장치 및 캐시 메모리 관리
컴퓨터의 핵심부품인 CPU, 메모리, 보조기억장치 외에 입출력장치와 캐시메모리도 운영체제에 의해 관리되는 자원
운영체제는 일부 입출력장치의 장치 드라이버, 하드웨어 인터럽트 서비스 루틴을 제공하거나 캐시메모리의 일관성을 유지하는 등의 기능을 제공
운영체제는 실행 중인 프로그램을 프로세스(Process) 라고 하며, 프로세스 내에서 실행 단위를 스레드(Thread) 라고 함
운영체제는 프로세스와 스레드가 원활하게 실행될 수 있도록 자원을 배분하고 실행 순서를 제어

운영체제도 일종의 프로그램이기 때문에 실행되려면 반드시 메모리에 적재되어야 함
하지만 운영체제는 일반 응용 프로그램과 다르게 특별한 프로그램이므로 커널 영역(Kernel Space) 이라는 공간에 따로 적재되어 실행 됨
1️⃣ 커널 영역(Kernel Space)
- 운영체제(OS)가 적재되어 실행되는 공간
- 하드웨어 제어 및 자원 관리 기능 수행
2️⃣ 사용자 영역(User Space)
- 응용 프로그램(Web Browser, 게임 등)이 실행되는 공간
- 직접 CPU, 메모리 등의 자원에 접근할 수 없음
- 운영체제의 도움을 받아야만 시스템 자원에 접근 가능
운영체제의 기능을 사용하려면 커널 영역의 코드를 실행해야 함
사용자 프로그램은 **운영체제의 코드(커널 영역 코드)를 직접 실행할 수 없음
대신, 시스템 콜을 호출하여 운영체제의 기능을 요청

1️⃣ 소프트웨어 인터럽트 발생
- 응용 프로그램이 시스템 콜을 호출하면 소프트웨어 인터럽트 발생
- CPU는 현재 실행 중인 작업을 백업하고, 커널 영역으로 전환
2️⃣ CPU의 커널 모드 전환 및 운영체제 실행
- CPU는 커널 모드로 전환되며, 운영체제가 시스템 콜을 처리
- 시스템 콜에 해당하는 운영체제 코드가 실행
3️⃣ CPU가 사용자 모드로 재전환
- 운영체제의 시스템 콜 처리가 끝나면 CPU는 다시 사용자 모드로 전환
- 응용 프로그램이 계속 실행
CPU는 실행 과정에서 사용자 모드와 커널 모드를 구분하여 실행
| 실행 모드 | 설명 |
|---|---|
| 사용자 모드 (User Mode) | 응용 프로그램이 실행되는 모드. 운영체제 서비스 제공 불가. |
| 커널 모드 (Kernel Mode) | 운영체제가 실행되는 모드. 자원 접근 및 시스템 관리 가능. |
응용 프로그램은 실행 과정에서 시스템 콜을 매우 자주 호출
예를 들어, "Hello, World!" 를 출력하는 단순한 프로그램조차 600번 이상의 시스템 콜을 호출
참고: 북스터디 - 이것이 취업을 위한 컴퓨터 과학이다 (Chapter 3-1)