[OS] 모드

do_it·2025년 9월 30일

os

목록 보기
3/13

0. 모드(Mode)의 기본 개념 이해

모드란?

안정성과 보안을 확보하기 위해 CPU가 실행중인 코드의 권한 수준을 구분하는 것

CPU에서의 실행 모드를 의미

CPU가 현재 어떤 명령어르 어떤 권한 레벨로 실행하고 있는가를 나타냄


CPU와 모드 비트 (Mode Bit)

CPU 내부에는 현재 실행 모드를 나타내는 플래그 / 레지스터가 있는데 이를 ‘모드 비트’라 부름

모드 비트는 CPU가 명령어를 실행할 때마다 해당 명령어가 특권 명령어 (Privileged Instruction)인지 아닌지 확인하는 기준이 됨

특권 명령어(예: I/O 장치 직접 접근, 메모리 보호 기능 변경 등)는 오직 모드 비트가 '0'인 커널 모드에서만 실행이 허용됨

  • 모드 비트 = 0 → 커널 모드 (최고 권한)
  • 모드 비트 = 1 → 사용자 모드 (제한된 권한)

이중 모드 D(Dual Mode)

CPU의 실행 권한을 두 가지 레벨로 나누어 관리하는 것


왜 모드의 구분이 필요한가?

이유설명
보안사용자 프로그램이 시스템 전체를 망가뜨리는 것을 방지
안정성잘못된 명령어 실행으로 시스템 크래시 방지
자원 보호메모리, 디스크, I/O 자원에 대한 무분별한 접근 차단
운영체제 보호커널 영역에 있는 데이터와 코드 보호


1. 모드의 종류와 역할

항목사용자 모드커널 모드
실행 대상사용자 애플리케이션운영체제 커널, 드라이버
권한제한됨전체 자원 접근 가능
자원 접근간접적 (시스템 콜 통해서)직접 접근 가능
모드 전환시스템 콜, 인터럽트, 예외작업 완료 후 복귀
목적보호 및 안정성 확보시스템 자원 관리
비유놀이공원 공개 구역놀이공원 직원용 제한 구역

사용자 모드 (User Mode)

[실행 대상]
일반 응용 프로그램
e.g. 웹 브라우저, 게임, 텍스트 편집기…

[제한 대상]

  • 하드웨어 직접 접근 금지 (디스크, 네트워크, 메모리,…)
  • 특권 명령어 실행 금지 (I/O 명령어, 인터럽트 설정,…)

[목적]
사용자 프로그램의 오작동이나 악성 행위로부터 시스템을 보호하기 위함

e.g. 텍스트 에디터가 컴퓨터 전원을 끌 수 없도록 설계됨

커널 모드 (Kernal Mode)

[실행대상]

운영체제 커널, 디바이스 드라이버, 시스템 콜 처리 코드 등

[권한]

  • CPU의 모든 명령어 실행 가능
  • 모든 메모리 주소 접근 가능
  • 입출력 장치 제어 가능
  • 위험성: 실수나 버그가 있을 경우 시스템 전체가 중단될 수 있음


2. 모드 전환 메커니즘 (Mode Switching)

: 사용자 모드 ↔ 커널 모드

운영체제와 CPU 모드와의 관계

운영체제는 CPU 모드를 활용하여 시스템을 관리하고 보호함

운영체제는 소프트웨어, CPU는 하드웨어로 모드 비트를 직접 조작하는 것은 하드웨어의 기능

상황명령을 내리는 주체
(소프트웨어)
모드 비트를 실제로 변경하는 주체
(하드웨어)
설명
커널 모드로 전환
(User → Kernel)
사용자 프로그램
(시스템 콜 호출, 예외 발생 등)
CPU 하드웨어시스템의 안정성을 위해, CPU가 trap이나 예외 발생 시 자동으로 커널 모드 진입
사용자 모드로 복귀
(Kernel → User)
운영체제 커널
(특권 명령어 실행)
CPU 하드웨어커널이 사용자 모드 복귀를 명령하면, CPU가 특권 명령어에 의해 모드 비트를 변경

사용자 모드 → 커널 모드

사용자 프로그램이 시스템 콜을 호출하거나, 하드웨어 인터럽트가 발생하면, CPU에게 이벤트 발생함

이 이벤트에 반응하여, CPU는 자신의 내부 하드웨어 로직에 따라 모드 비트를 0으로 설정하고 OS 커널의 특정 주소(인터럽트 벡터)로 실행흐름을 넘김

OS의 통제권을 보장하기 위한 CPU 자체의 설계로 볼 수 있음

  1. 시스템 콜 (System Call) 호출
    사용자 프로그램이 OS 서비스(I/O, 메모리 등)를 요청
    - 전환 흐름: 사용자 모드 → 시스템 콜 트랩 → 커널 모드 (서비스 실행) → 사용자 모드 복귀

  2. 인터럽트 (Interrupt) 발생

    하드웨어 장치의 이벤트(키보드 입력, 타이머 만료 등) 발생

    • 전환 흐름: 하드웨어 인터럽트 발생 → CPU 제어권 커널로 이전 → 커널 모드 (인터럽트 처리) → 사용자 모드 복귀
  3. 예외 (Exception)에 의한 전환

    프로그램 실행 중 오류 (0으로 나누기, 잘못된 메모리 접근 등) 발생

    • 전환 흐름: 오류 발생 → 트랩/예외 → 커널 모드 (오류 처리, 프로그램 종료 등)

[전환 과정]

  • 트랩(Trap) 명령어 실행
  • 현재 상태 저장 (프로그램 카운터, 레지스터 등)
  • 커널이 해당 요청 / 예외 처리

커널 모드 → 사용자 모드

OS 커널은 최고 권한을 가지므로, 사용자 프로그램으로 돌아갈 준비가 되면 ;모드 비트를 1로 설정하라’는 특권 명령어를 CPU에 전달함

이 명령을 CPU가 실행하면서 모드 비트를 변경하고 사용자 프로그램의 다음 명령어를 인출함

모드를 바꾸는 행위 자체는 CPU 하드웨어의 기능이지만, 모드를 바꾸라고 지시하고 통제하는 주체는 OS 소프트웨어임

[전환 조건]

커널이 요청한 작업을 완료하고 사용자 프로그램으로 복귀할 때

[전환 과정]

  • 사용자 프로그램 상태 복원
  • CPU 모드를 사용자 모드로 설정
  • 사용자 프로그램 이어서 발생

0개의 댓글