커널과 시스템 콜
운영체제의 계층 구조
커널 (Kernel)
운영체제의 핵심 부분으로, 하드웨어를 직접 제어한다.
커널의 종류:
| 종류 | 설명 | 예시 |
|---|---|---|
| 모놀리식 커널 | 모든 기능이 커널 공간에 있음 | Linux, Unix |
| 마이크로 커널 | 최소 기능만 커널에, 나머지는 사용자 공간 | Minix, QNX |
| 하이브리드 커널 | 두 방식의 혼합 | Windows NT, macOS |
운영체제의 동작 모드
1. 사용자 모드 (User Mode)
응용 프로그램이 실행되는 모드다.
사용자 모드에서는 제한된 권한만 주어진다. 응용 프로그램은 자신에게 할당된 메모리 영역만 접근할 수 있으며, 다른 프로세스의 메모리나 시스템 영역을 함부로 접근할 수 없다. 이러한 제한은 잘못된 프로그램이나 악의적인 코드로부터 시스템을 보호하기 위함이다.
또한, 사용자 모드에서는 하드웨어에 직접 접근할 수 없다. 파일을 읽거나 네트워크 통신을 하는 등 하드웨어 자원이 필요한 작업은 운영체제를 통해서만 가능하다. 응용 프로그램은 시스템 콜을 통해 커널에게 서비스를 요청하고, 커널이 대신 작업을 수행한 후 결과를 돌려받는다.
2. 커널 모드 (Kernel Mode)
운영체제가 실행되는 모드다.
커널 모드에서는 모든 권한을 보유한다. 운영체제 커널은 시스템의 모든 메모리에 접근할 수 있고, 모든 CPU 명령어를 실행할 수 있다. 이는 시스템 자원을 관리하고 하드웨어를 제어하기 위해 필요한 권한이다.
이러한 권한을 바탕으로 커널 모드에서는 하드웨어를 직접 제어할 수 있다. CPU, 메모리, 디스크, 네트워크 카드 등 모든 하드웨어 장치에 직접 명령을 내릴 수 있으며, 이를 통해 응용 프로그램이 요청한 작업을 실제로 수행한다.
따라서 커널 모드의 주요 역할은 시스템 자원 관리다. 프로세스 스케줄링, 메모리 할당, 파일 시스템 관리 등 운영체제의 핵심 기능들이 모두 커널 모드에서 실행된다. 사용자 모드에서 시스템 콜이 발생하면 커널 모드로 전환되어 요청된 작업을 수행한 후 다시 사용자 모드로 복귀한다.