사용자 모드와 커널 모드

아투·2026년 5월 6일

Operation System

목록 보기
10/22
post-thumbnail

정의

  • 사용자 모드와 커널 모드란 운영체제가 시스템 자원을 보호하기 위해 CPU에 부여한 권한의 등급 차이이다.

사용자 모드와 커널 모드가 중요한 이유

  • 만약 사용자와 커널 모드의 구분이 없다면 간단한 계산기 프로그램의 버그가 컴퓨터의 모든 메모리를 초기화하거나 하드디스크를 통째로 포맷할 수도 있다. 어떻게 해야 그러한 결과가 나올까?

  • 위험한 명령어의 무방비 노출
    CPU 명령어 중에는 시스템의 근간을 건드리는 아주 위험한 명령어들이 있다. 예를 들어 하드디스크에 데이터를 직접 쓰거나, 인터럽트를 끄거나 CPU를 멈추는 명령어들이 있다.

    • 구분이 있을 경우
      계산기가 실수로 하드디스크 포맷 명령어를 날리면 CPU가 권한을 체크하고 사용자 모드라는 감지하여 프로그램만 강제 종료(Segmentation Fault)시킨다.
    • 구분이 없을 경우
      계산기가 루프 문을 잘못 돌다가 메모리 주소가 꼬여서 우연히 하드디스크 제어 명령어 영역으로 진입하면, CPU는 이를 정상적인 요청으로 판단하고 즉시 디스크의 데이터를 지우기 시작할 수도 있다.
  • 메모리의 경계선이 사라짐
    운영체제는 커널 모드에서만 접근 가능한 커널 메모리 영역을 따로 관리한다. 여기에는 하드웨어 드라이버 정보, 파일 시스템 제어권 등이 있다.

    • 구분이 있을 경우
      일반 프로그램은 자기에게 할당된 메모리 밖을 넘보는 순간 OS에게 차단 당한다.
    • 구분이 있을 경우
      모든 프로그램이 물리 메모리 전체에 대한 마스터키를 가진 상태가 된다. 계산기 프로그램에서 포인터 변수 하나를 잘못 설정해서 $0x0000$ 부터 $0xFFFF$까지 0을 채우라는 코드가 실행된다면? 운영체제의 근간을 포함한 모든 데이터가 순식간에 0으로 초기화된다.
  • 하드웨어 직접 제어권(Direct I/O Access)
    HDD, SSD, 키보드 입력, 마우스 클릭, 마이크 소리, 모니터 화면 출력, 프린터 인쇄, 스피커 소리, 랜카드를 통한 데이터 송수신 등등 하드웨어를 제어하는 역할들을 모두 커널이 관리한다. 만약 프로그램 10개가 동시에 프린터에 출력 명령어를 실행한다고 가정해보자. 커널이 없다면 이 종이 순서가 뒤죽박죽이 되겠지만, 커널은 중간에서 스케줄링을 사용하여 순서대로 안전하게 장치를 사용할 수 있게 관리한다.


사용자 모드

사용자 모드는 제한된 권한만 부여된 구역이다. 이곳에서 프로그램이 제아무리 기괴한 짓을 하거나 무한 루프에 빠져 죽더라도, 그 피해는 해당 프로그램(프로세스)의 종료로 끝날 것이다. 시스템의 심장부인 커널과 물리적인 자원들은 커널 모드라는 방벽 뒤에 안전하게 숨겨져 있기 때문에, 사용자 모드의 사고가 시스템 전체의 붕괴로 이어지지 않는다.

만약 어거지로 경계를 무너뜨리려는 기행을 사용자가 벌이려고 해도 현대 CPU와 OS에서는 하드웨어 레벨에서 차단된다.

  • 사용자 프로그램이 커널 메모리를 훔쳐보려하면? -> 즉시 강제 종료
  • 사용자 프로그램이 직접 하드디스크를 포맷하려고 하면? -> CPU가 명령어 실행 거부

커널 모드

커널 모드 독점적 권한 (Permissions)

커널 모드에서 실행되는 코드는 CPU와 하드웨어에 대해 다음과 같은 제한없는 접근권은 가진다.

특권 명령어 실행 (Privileged Instructions)

전체 메모리 접근 (Unrestricted Memory Access)

하드웨어 직접 제어 (Direct Hardware Control)

인터럽트 처리 (Interrupt Handling)

커널 모드의 5대 핵심 역할

프로세스 및 스레드 관리 (Process Management)

메모리 관리 (Memory Management)

I/O 장치 및 드라이버 관리 (Device Management)

파일 시스템 관리 (File System Management)

네트워크 및 보안 (Networking & Security)

시스템 콜 (System Call)

CPU 보호 링 (Protection Rings)

컨텍스트 스위칭 (Context Switching)

0개의 댓글