User Mode & Kernel Mode

- 프로세스가 Instruction을 수행하기 위해 CPU를 사용할 때 해당 프로세스가 어떤 모드인지에 따라 CPU의 실행이 달라짐
- I/O나 프로세스와 관련된 시스템 단의 연산들을 User Mode의 프로세스가 제어하지 못하도록 함
- 시스템을 보호하기 위해 CPU의 실행 모드가 구분되어 있음
- Mode의 구분은 하드웨어 단에서 인식
- 수행하려는 Instruction이 적절한 Mode에서 이뤄지는지에 따라 실행 여부가 결정됨
- Kernel Mode 프로세스
- Instruction에 대해 모든 권한을 가지고 있음
- 대표적으로는 운영체제가 Kernel Mode에 해당됨
- 운영체제는 I/O 장치 제어 등 시스템 상에서 처리해야 하는 모든 Instruction을 하드웨어에게 요구할 수 있음
- User Mode 프로세스
- 사용자에 의해 구동된 어플리케이션
- Instruction에 대해 범용적인 권한은 가지고 있지만 Kernel Mode만큼의 권한을 갖지 못함
시스템콜

- User Mode의 프로세스가 자식 프로세스 생성, Read/Write 작업. 파일 Open/Close 등의 작업을 수행하려고 하면 하드웨어 단에서 거절됨
- 위 작업들은 Kernel Mode의 프로세스에서만 가능하기 때문에 대체적으로 운영체제에게 해당 작업을 요청하여 서비스를 제공 받음
- 이를 **실행 모드 전환(Execution Mode Switch)**라고 함
- 시스템콜 : Kernel Mode에게만 제공되는 Instruction들을 이용하기 위해 운영체제가 해당 서비스들을 요청할 수 있도록 제공하는 통로
- 실행 모드 전환 과정
- User Mode의 프로세스가 시스템콜을 호출
- 프로세스가 요청한 대로 운영체제가 수행
- 다시 User Mode로 복귀
- open, write, shm, fork 등이 시스템콜임

- 실행 모드 전환 과정
- Context switch도 시스템콜에 의한 것
