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들을 이용하기 위해 운영체제가 해당 서비스들을 요청할 수 있도록 제공하는 통로
    • 실행 모드 전환 과정
      1. User Mode의 프로세스가 시스템콜을 호출
      2. 프로세스가 요청한 대로 운영체제가 수행
      3. 다시 User Mode로 복귀
    • open, write, shm, fork 등이 시스템콜임
  • Context switch도 시스템콜에 의한 것