운영체제 | User Mode vs Kernel Mode

성수당·2025년 9월 12일

운영체제

목록 보기
10/31
post-thumbnail

🥔 User Mode와 Kernel Mode란?

운영체제는 시스템의 안정성과 보안성을 유지하기 위해 특권 수준(privilege level) 을 나눠둔다. CPU는 크게 두 가지 모드로 구분하여 명령 실행 권한을 조절한다:

  • User Mode (사용자 모드): 제한된 권한
  • Kernel Mode (커널 모드): 모든 권한 보유

이 두 모드를 나누는 이유는, 사용자 프로그램이 시스템 자원에 함부로 접근하지 못하게 막기 위함이다.

🥔 모드 전환이 필요한 이유

모든 명령을 사용자에게 허용하면, 잘못된 프로그램 하나가 시스템 전체를 다운시킬 수 있다. 그래서 CPU는 특권 명령을 구분해서, 커널에서만 실행 가능하게 만든다.

구분특징
User Mode일반 애플리케이션이 동작, 시스템 자원 접근 제한
Kernel Mode운영체제가 동작, 모든 자원 및 명령 접근 가능

→ 일반 애플리케이션이 시스템 자원에 접근하고 싶다면 커널에 요청(System Call) 해야 한다.

🥔 User Mode의 특징

  • 일반적인 애플리케이션(C, Python, 게임 등)이 실행되는 모드
  • 제한된 명령어만 실행 가능
  • 메모리 공간 제약: 자신의 주소 공간만 접근 가능
  • IO 접근 불가: 디스크, 네트워크 카드 등 직접 제어 불가능

예를 들어 printf() 함수도 내부적으로는 시스템 콜을 통해 커널에 요청하여 stdout에 출력된다.

🥔 Kernel Mode의 특징

  • 운영체제 핵심 코드(커널)가 실행되는 모드
  • 모든 명령어 사용 가능 (특권 명령 포함)
  • 하드웨어 직접 제어 가능
  • 모든 메모리 주소 접근 가능

커널 모드에 진입하는 경우:

  • 시스템 부팅 시 커널 로딩
  • 시스템 콜 처리
  • 하드웨어 인터럽트 처리

커널은 잘못된 동작을 하면 시스템 전체가 크래시 날 수 있으므로, 매우 안정적으로 작성되어야 한다.

🥔 모드 전환 흐름

사용자 프로그램
    |
    | 시스템 콜 호출 (e.g. write(), open())
    V
커널 진입 (Kernel Mode)
    |
    | 자원 접근, 처리 완료
    V
커널 종료 → 사용자 모드 복귀

CPU는 인터럽트 벡터나 시스템 콜 인터럽트를 통해 모드를 전환한다.
대표적인 명령어: int 0x80, syscall (x86 계열 기준)

🥔 왜 중요한가?

  • 보안: 사용자 모드에서는 시스템 자원 접근이 불가능해서, 보안성이 높아진다.
  • 안정성: 하나의 애플리케이션 오류가 시스템 전체에 영향을 주지 않음
  • 설계 분리: 운영체제 코드와 사용자 애플리케이션을 명확히 분리하여 유지보수가 쉬움

🥔 사용자 ↔ 커널 통신 방법

  1. System Call

    • 사용자 프로그램이 커널 기능을 요청하는 방법
    • 예: read(), write(), open(), fork()
  2. Interrupt

    • 하드웨어 장치가 CPU에 신호를 보내는 방식
    • 커널이 인터럽트를 받아 처리하며 모드 전환 발생
  3. Trap

    • 예외 발생 시 커널이 개입하여 처리 (예: 0으로 나누기)

🥔 정리

항목User ModeKernel Mode
실행 주체사용자 프로그램운영체제 커널
권한제한적전체 권한 보유
메모리 접근제한된 영역전체 주소 접근 가능
특권 명령 실행불가가능
시스템 콜 필요 여부필요불필요 (직접 실행)

🥔 마무리

  • 운영체제는 User Mode와 Kernel Mode를 명확히 구분해서 안정성과 보안성을 확보한다.
  • 시스템 콜을 통해서만 커널 기능을 사용할 수 있고, 이때 모드 전환이 발생한다.
  • 이 구조 덕분에 우리가 사용하는 OS는 다양한 프로그램을 동시에 실행하면서도 충돌 없이 안전하게 운영된다.
profile
말하는 감자🥔

0개의 댓글