2 분 소요

커널 모드(Kernel Mode)와 유저 모드(User Mode)

커널모드와 유저 모드는 컴퓨터 시스템에서 실행되는 프로세스의 권한 수준을 나타낸다.

이 두 모드는 운영체재와 사용자 프로세스 간의 보안과 자원 관리를 제어하는데 중요한 역할을 한다.

커널 모드와 유저 모드는 시스템의 안정성과 보안을 유지하기 위한 목적을 가지고 있다. 유저 모드에서 실행되는 응용 프로그램은 자신의 주어진 작업을 수행하며, 커널 모드에서는 운영체제의 핵심 기능을 수행하고 자원을 관리한다.

커널 모드(Kernel Mode)

  • 커널 모드는 운영체제의 핵심 부분인 커널이 실행되는 모드이다.
  • 커널 모드에서 실행되는 코드는 최상위 권환과 특권을 가지며, 운영체제의 모든 자원에 직접적으로 접근이 가능하다.
    • 이러한 접근 권한으로 인해 커널 모드에서 실행되는 코드는 시스템의 핵심적인 작업을 수행할 수 있다.
    • 커널 모드에서는 하드웨어 제어, 메모리 관리, 인터럽트 처리 등과 같은 중요한 기능들을 담당한다.
  • 커널 모드에서 실행되는 코드는 보안 및 안정성을 위해 엄격한 규칙과 제한을 받지 않는다.

유저 모드(User Mode)

  • 유저 모드는 사용자 프로세스가 실행되는 모드이다.
  • 이 모드에서 실행되는 코드는 제한된 권한을 가지며, 시스템 자원에 직접적인 접근이 제한된다.
    • 유저 모드에서 실행되는 코드는 운영체제의 보호 및 안정성을 유지하기 위해 제한된 환경에서 동작한다.
    • 유저 모드에서 시스템 자원에 직접 접근할 수 없으며, 운영체제의 서비스를 사용하기 위해서는 커널 모드로의 전환을 요청해야 한다.
  • 유저 모드에서 실행되는 응용 프로그램은 시스템 호출(Syscall)이라고 하는 특별한 명령을 사용하여 운영체제의 기능을 호출할 수 있다.
    • 시스템 호출은 운영체제에게 서비스를 요청하고, 필요한 작업을 수행한 뒤 결과를 다시 유저 모드로 변환한다.
    • 시스템 호출을 통해 유저 모드에서 커널 모드로의 전환과 운영체제의 다양한 서비스를 이용할 수 있다.

모드의 전환

  1. 유저 모드에서 커널 모드로의 전환
    • 사용자 프로세스가 운영체제의 기능이나 자원에 접근해야 할 경우, 시스템 호출(syscall)을 통해 운영체제의 서비스를 요청한다. 이때, 사용자 프로세스는 유저 모드에서 커널 모드로의 전환을 수행한다.
    • 전환 과정은 이와 같은 단계로 이루어진다.
      • 사용자 프로세스는 시스템 호출 인터페이스를 통해 운영체제에게 서비스를 요청한다.
      • CPU는 현재 실행 중인 명령어의 주소와 프로세스 상태 등의 정보를 저장하고, 인터럽트를 발생시킨다.
      • 인터럽트 핸들러(Interrupt Handler)가 실행되어 커널 모드로 전환된다.
      • 커널 모드에서 운영체제는 요청된 서비스를 처리하고 결과를 반환한다.
      • 인터럽트 핸들러가 완료되면, CPU는 저장된 프로세스 상태를 복원하고 다시 유저 모드로 전환한다.
    • 이렇게 전환된 커널 모드에서는 운영체제의 권한과 특권을 통해 하드웨어 자원에 접근하고 필요한 작업을 수행할 수 있다.
  2. 커널 모드에서 유저 모드로의 전환
    • 커널 모드에서 실행 중인 코드가 사용자 프로세스에게 제어를 넘기고 유저 모드로 전환되는 과정을 말한다. 이는 주로 시스템 호출의 결과를 사용자 프로세스에게 반환하고, 프로세스의 제어를 다시 사용자에게 넘기는 경우에 발생한다.
    • 전환 과정은 이와 같은 단계로 이루어진다.
      • 커널 모드에서 실행 중인 코드는 시스템 호출이 완료되었음을 감지하고, 사용자 프로세스에게 반환할 결과를 준비한다.
      • 커널 모드에서 유저 모드로 전환하기 위해 CPU는 프로세스 상태 및 실행 위치 등의 정보를 저장하고, 인터럽트를 발생시킨다.
      • 인터럽트 핸들러가 실행되어 유저 모드로 전환된다.
      • 사용자 프로세스는 저장된 프로세스 상태를 복원하고, 반환된 결과를 처리하며 프로세스의 실행을 계속한다.

업데이트: