◼ 사용자 영역과 커널 영역
- 커널 영역
커널이 작업하는 영역으로 CPU 작업 스케줄이나 하드웨어를 제어하는 디바이스 드라이버와 메모리를 관리하는 기능 등을 수행한다.
- 사용자 영역
사용자 영역은 일반 프로그램이 실행되는 영역이다. 커널이 작업해야하는 일을 요청하기 위해서는 시스템콜을 사용해야한다.
◼ 사용자 모드와 커널 모드
각각의 영역에서의 모드가 존재하며 커널모드
와 사용자모드
가 존재한다. 각각의 영역, 모드를 둔 이유는 운영체제의 핵심기능이 전부 들어있는 커널을 보호
하기 위해서이다.
◻ 커널 모드 kernel mode
특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드
- 커널 영역의 운영체제 os가 사용하는 모드
- 커널 모드에서만 실행 가능한 기능들이 있다.
- 시스템 콜은 커널 모드로 실행한다.
◻ 사용자 모드 user mode
사용자 영역의 응용프로그램이 사용하는 모드
- 사용자 영역의 응용프로그램이 커널 영역의 기능을 사용하려면 시스템 콜을 사용해야한다.
◼ 예제
파일을 열기도 하고 연산을 수행하기도 하는 응용프로그램을 실행한다고 가정해보자.
- 파일을 여는 함수 open()함수를 실행하게 되면 이는 메모리에 접근하는 일이므로 시스템 콜을 실행하게 되고 현재 모드를 커널모드로 전환하게 된다.
- 운영체제는 파일에 접근하기 위해 본인의 함수인 sys_open()함수를 실행하고 실행 결과를 응용프로그램에 반환해주고 사용자모드로 다시 전환한다.
- 응용프로그램은 해당 함수 이후의 코드를 계속해서 실행한다.
◼ 요약
- 커널모드와 사용자 모드로 구분하는 이유는 커널영역을 보호하기 위해서이다.
- CPU는 커널 모드와 사용자 모드를 왔다갔다하며 작업을 수행하게 해준다.
- 커널 영역의 기능을 사용하기 위해서는 시스템 콜을 이용해야한다.
- 시스템 콜은 커널 모드에서 진행된다.