커널은 OS의 핵심 요소로, 컴퓨터 하드웨어와 프로세스의 보안, 자원관리, 하드웨어 추상화등의 역할을 수행한다.
자원관리를 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등을 담당한다.
응용프로그램 | ||
커널 | ||
CPU | 메모리 | 외부 기기 |
운영체제는 커널에서 관리하는 중요 자원에 사용자가 쉽게 접근하지 못하도록 커널모드와 사용자 모드로 모드를 나눈다.
커널 모드: 하드웨어에 직접 접근해 메모리, CPU와 같은 자원을 사용할 수 있다.
사용자 모드: 커널 모드의 자원에 접근할 수 없게 제한을 둔다.
시스템 콜: 사용자 모드에서 커널 모드에 접근해 필요한 기능을 수행할 수 있게 하는 시스템 함수.
=> 커널은 시스템 콜로 받은 요청을 처리한 후 다시 시스템 콜로 결과 값을 반환한다.
=> 프로세스 제어, 파일 조작, 장치 관리, 데이터의 유지 보수, 통신, 보호를 할 수 있다.
=> 프로세스를 생성하는 fork(), 부모프로세스가 자식 프로세스의 수행을 기다리는 wait()