Post

유저 모드 User mode vs 커널 모드 Kernel mode


2024/06/07: 초안 작성
2024/06/08: 커널 모드 특징, 예시 작성
2024/06/09: 3가지 커널 모드 추가
2024/06/10: 3가지 커널 모드 보완

※ 내용에 오류가 있을 수 있습니다.
※ 내용을 계속 추가, 수정, 보완하고 있습니다.


목차


커널 모드와 유저 모드


운영 체제는 커널 모드와 유저 모드를 분리하여 유저 애플리케이션이 시스템의 핵심 기능을 직접 방해하지 못하도록 함으로써(격리) 안정성과 보안을 보장


  • 커널 모드는 운영 체제에서 가장 신뢰할 수 있는 가장 낮은 수준의 기능이자 소프트웨어와 하드웨어 사이의 중간자 역할

  • 커널은 하드웨어와 소프트웨어 간의 통신을 유지하는 것이 주요 임무. 커널은 BIOS 직후에 사용자가 컴퓨터에 처음 설치하는 소프트웨어

  • 커널 모드에서 크래시가 발생하면 PC 전체가 중단되는 치명적인 결과를 초래

  • OS 커널은 설치되는 하드웨어에 따라 다르며, 윈도우의 NT 커널(MS 386에서 처음 사용), 벨 연구소의 유닉스 코드 ae처럼 하드웨어에 유연한 OS(Hardware extraction layer coding)가 있음.

  • 소프트웨어가 CPU에 요청을 할 때 커널 CPU에 따라 다르게 처리하는 시스템 호출이 됨.

  • OS는 커널 모드와 유저 모드의 두 단계로 실행됨.

  • 유저 모드에서는 실행 코드가 하드웨어나 참조 메모리에 직접 액세스할 수 없음.

  • 유저 공간 User Space은 커널 공간 Kernel space보다 권한이 낮으며, 코드, 프로세스 데이터, 날짜 등 커널 공간의 하드웨어와 리소스에 직접 접근할 수 없고 가상 공간에만 접근할 수 있음.

  • 유저 공간에서 예외가 발생하면 단일 프로세스만 충돌되고 OS는 계속 실행되지만, 커널 공간 문제의 경우 컴퓨터를 재부팅하거나 OS를 다시 설치해야 할 수 있음.

  • Win OS에서 프로그램을 실행하면 개인 가상 주소 공간을 주고, 이 공간에선 무언가에 액세스할 수 없음.

  • 심지어 일부 주소는 커널 주소 공간용으로 되어 있으며, 커널 주소 공간에는 가상 주소 공간이 하나만 있음.

  • 프로그램을 실행하면 유저 공간과 커널 공간 사이를 전환함. 어떤 작업이 실행되는 동안 파일을 열거나 둘을 조합하여 파일을 열 수 있음.


커널 모드와 유저 모드 특징


커널 모드 Kernel Mode 특징

  • Privileged Mode라고도 함.

  • 커널 모드는 코드가 컴퓨터의 모든 리소스에 제한 없이 액세스할 수 있는 작동 모드. 하드웨어, 메모리 포함.

  • 운영 체제의 핵심 부분인 커널 Kernel은 커널 모드 Kernel Mode에서 실행됨.


특징


  • 모든 리소스에 대한 풀 액세스: 커널 모드에서 실행되는 코드는 모든 하드웨어 및 시스템 리소스에 대한 전체 액세스 권한을 가짐.

  • 높은 권한 High Privileges: 모든 CPU 명령을 실행하고 모든 메모리 주소를 참조할 수 있음.

  • OS 운영에서의 Critical한 작업 Critical Operations: 장치 드라이버 실행, 인터럽트 처리, 프로세스 스케줄링과 같은 작업은 커널 모드에서 수행됨.

    • 장치 드라이버 device drivers 및 시스템 호출 system calls과 같은 중요한 작업을 실행
  • 전체 시스템 보호: 커널 모드에서 충돌이 발생하면 중요한 데이터와 상태가 손상될 수 있고, 전체 시스템이 다운될 수 있음.

    • 오류가 발생하면 전체 시스템에 영향을 미칠 수 있음(재부팅하거나 OS 재설치 필요할 수 있음).

커널 모드 예시

  • 장치 드라이버: 하드웨어 구성 요소와 직접 통신

  • 시스템 호출 System Calls: 사용자 애플리케이션과 OS 간의 인터페이스

  • 메모리 관리: 메모리 할당 및 할당 해제를 관리


유저 모드 User Mode 특징

  • 리소스에 대한 제한된 액세스

  • 유저 애플리케이션을 실행

  • 오류는 애플리케이션 내에서 발생(OS는 계속 실행됨).


커널 모드의 3가지 유형


3가지 커널 모드 비교


특징모놀리식 커널마이크로커널(사무엘 커널)하이브리드 커널
핵심 철학모든 서비스를 커널 모드에서 실행되는 하나의 블록으로 통합 커널기능을 최소화하고 대부분의 서비스를 유저 공간에서 실행일부 서비스는 커널 모드에서, 다른 서비스는 사용자 공간에서 실행 두 가지의 장점 결합
성능컨텍스트 전환이 없어 고성능IPC로 인한 잠재적 성능 오버헤드균형 잡힌, 중요 서비스에 최적화됨
복잡성복잡성이 높고 관리가 어려움IPC 메커니즘으로 인해 복잡함트레이드 오프의 균형을 맞추기 어려움
안정성덜 안정적, 버그가 시스템을 다운시킬 수 있음더 안정적, 버그가 사용자 공간에 격리됨균형 잡힌 안정성, 설계에 따라 다름
보안덜 안전함, 취약점이 전체 시스템에 영향더 안전함, 사용자 공간 격리균형 잡힘, 보안은 설계에 따라 달라짐
예제Linux, UnixMinix, QNXWindows NT, MacOS


  • 커널 모드와 유저 모드 구분과 달리 커널 모드에는 3가지 유형이 있음.

  • 운영체제마다 채택한 커널 유형이 있음.

  • Linux 운영 체제는 모놀리식 커널, Minix 운영 체제는 마이크로커널, Windows NT 운영 체제는 하이브리드 커널을 사용

  • 모놀리식 커널, 마이크로커널(또는 사무엘 커널), 하이브리드 커널은 운영 체제가 하드웨어 및 소프트웨어 리소스를 관리하는 방식에 관한 고유한 아키텍처 접근 방식과 철학

  • 운영체제가 시스템의 요구 사항에 따라 커널 유형을 선택함.

  • 커널 유형을 이해하면 프로젝트 요구 사항과 제약 조건에 가장 적합한 운영 체제를 설계하고 선택하는 데 도움이 됨.


모놀리식 커널 Monolithic Kernel

  • 성능에 중요한 시스템에 가장 적합. 효율성이 가장 중요하고 엄격한 테스트 및 보안 관행으로 시스템 충돌 위험 최소화


마이크로커널 Microkernels (or Samuel Kernel)

  • 성능 raw performance보다 안정성, 보안, 모듈성이 더 중요한 시스템(임베디드 시스템, 높은 안정성이 요구되는 시스템 등)에 이상적


하이브리드 커널 Hybrid Kernel

  • 데스크톱 및 서버 운영 체제와 같이 성능과 안정성 간의 적절한 균형이 필요한 범용 운영 체제에 적합


1. 모놀리식 커널 Monolithic Kernel


  • 모놀리식 커널은 핵심 기능과 모든 드라이버를 포함한 전체 운영 체제가 커널 모드에서 실행되는 커널 유형

  • 이 설계는 모든 시스템 서비스를 단일 주소 공간에서 실행되는 하나의 큰 코드 블록으로 통합함.

특징

  • 단일 주소 공간: 모든 운영 체제 서비스(예: 장치 드라이버, 파일 시스템 관리, 메모리 관리 등)가 동일한 주소 공간에서 실행

  • 성능: 대부분의 시스템 호출에서 사용자 모드와 커널 모드 간에 컨텍스트 전환이 필요하지 않으므로 모놀리식 커널은 매우 빠를 수 있음.

  • 복잡성: 커널의 크기가 크고 서비스가 통합되어 있어 커널이 복잡하고 관리하기 어려울 수 있음.

장점

  • 고성능: 커널 공간 내에서 직접 통신하므로 시스템 호출을 빠르게 실행할 수 있음.

  • 설계의 단순성: 모든 것이 하나의 큰 프로그램의 일부이므로 초기에 설계하고 구현하기가 더 쉬움.

단점

  • 안정성 및 보안 위험: 커널의 어느 부분에서든 버그가 발생하면 전체 시스템이 다운되거나 보안이 손상될 수 있음.

  • 유지 관리: 크기와 상호 의존성으로 인해 유지 관리 및 업데이트가 어려움.

예시

  • Linux 커널: Linux 운영 체제는 모놀리식 커널을 사용함.


2. 마이크로커널(새뮤엘 커널) Microkernel (or Samuel Kernel)


  • 마이크로커널(또는 사무엘 커널)은 커널 모드에서 실행되는 기능을 최소화하는 것을 목표로 하는 커널의 한 유형. 대신 장치 드라이버, 파일 시스템 및 네트워크 프로토콜과 같은 대부분의 서비스를 사용자 공간에서 실행하고 메시지 전달을 통해 통신함.

특징

  • 최소한의 코어: 프로세스 간 통신, 기본 스케줄링, 메모리 관리와 같은 필수 서비스만 커널 모드에서 실행됨.

  • 모듈화: 필수적이지 않은 서비스는 사용자 공간에서 별도의 프로세스로 실행됨.

  • 프로세스 간 통신(IPC): 커널과 사용자 공간 서비스 간의 통신을 위해 메시지 전달에 크게 의존함.

장점

  • 안정성 및 보안: 사용자 공간 서비스의 버그가 전체 시스템을 다운시키지 않으며 독립적으로 다시 시작할 수 있음.

  • 모듈성 및 유연성: 전체 시스템에 영향을 주지 않고 개별 서비스를 쉽게 유지 관리, 업데이트 및 확장할 수 있음.

단점

  • 성능 오버헤드: 잦은 컨텍스트 전환과 IPC로 인해 모놀리식 커널에 비해 성능 오버헤드가 발생할 수 있음.

  • 구현의 복잡성: 효율적인 IPC 메커니즘이 필요하기 때문에 설계 및 구현이 더 복잡해짐.

예시

  • Minix: 마이크로커널 기반 운영 체제의 예


3. 하이브리드 커널 Hybrid Kernel


  • 하이브리드 커널은 모놀리식 아키텍처와 마이크로 커널 아키텍처의 조합. 일부 서비스는 성능상의 이유로 모놀리식 커널처럼 커널 모드에서 실행하고, 다른 서비스는 모듈성과 안정성을 위해 마이크로커널처럼 사용자 공간에서 실행하여 두 설계의 장점을 모두 활용

특성

  • 혼합 접근 방식: 모놀리식 및 마이크로커널 설계의 요소를 모두 통합

  • 선택적 서비스 배치: 성능에 중요한 서비스는 커널 모드에서 실행하고, 다른 서비스는 사용자 공간에서 실행할 수 있음.

  • 유연성: 커널 모드에서 실행되는 서비스와 사용자 공간에서 실행되는 서비스를 조정하여 다양한 요구 사항에 맞게 조정할 수 있음.

장점

  • 균형 잡힌 성능과 안정성: 모놀리식 커널의 고성능과 마이크로커널의 모듈성 및 안정성 사이에서 적절한 균형을 이룰 수 있음.

  • 유연성: 커널과 사용자 공간 간에 서비스를 이동하여 특정 사용 사례에 맞게 더 쉽게 최적화할 수 있음.

단점

  • 복잡성: 모놀리식 설계와 마이크로커널 설계 간의 균형을 맞추기 위해 설계 및 관리가 복잡할 수 있음.

  • 문제 발생 가능성: 신중하게 설계하지 않으면 두 아키텍처의 단점을 모두 계승할 수 있음.

예시

  • Windows NT: 최신 Windows 버전을 포함한 Windows NT 운영 체제는 하이브리드 커널을 사용함.



[참고자료]

[Linkedin] Kernel mode V$ User mode!!
https://www.linkedin.com/pulse/kernel-mode-v-user-pallab-sarma/

[Microsoft Learn] User mode and kernel mode
https://learn.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode

[GeeksforGeeks] User mode and Kernel mode Switching https://www.geeksforgeeks.org/user-mode-and-kernel-mode-switching/

This post is licensed under CC-BY-NC-ND-4.0 by the author.