본문 바로가기
컴퓨터 과학/운영체제

[운영체제] 프로세스와 메모리 구조(2): 커널 공간과 사용자 공간

by webcodur 2024. 4. 27.
728x90

 

목차

    1. 메모리 공간

    컴퓨터 시스템의 메모리는 크게 커널 공간사용자 공간으로 나뉜다.

    이 구분은 시스템의 보안과 안정성을 유지하는 데 중요하다.

    +-------------------+ 0x0000
    | Operating System  |
    | Kernel Space      |
    |                   |
    |  +--------------+ |
    |  | Kernel Code  | |
    |  | & Data       | |
    |  +--------------+ |
    |  | Kernel       | |
    |  | Structures   | |
    |  |  +----------+| |
    |  |  | PCBs     || |
    |  |  | Interrupt|| |
    |  |  | Tables   || |
    |  |  | etc.     || |
    |  |  +----------+| |
    |  +--------------+ |
    +-------------------+
    | User Space        |
    |                   |
    |  +--------------+ |
    |  | Code Segment | |
    |  +--------------+ |
    |  | Data Segment | |
    |  +--------------+ |
    |  | Heap         | |
    |  +--------------+ |
    |  | Stack        | |
    |  +--------------+ |
    |                   |
    +-------------------+ 0xFFFF

     

     

    2. 각 영역

    2-1. 커널 공간 (Kernel Space)

    • 정의: 시스템의 핵심 기능을 담당하는 운영 체제의 커널이 이 메모리 부분을 사용한다.
    • 역할: 하드웨어 관리, 시스템 호출 처리, 메모리 관리, 기타 중요한 시스템 서비스를 제공한다.
    • 접근 제한: 이 영역은 고도의 보안이 필요하며, 일반 애플리케이션은 접근할 수 없다. 오직 커널 모드에서 실행되는 코드만이 이 영역에 접근할 수 있다.
    +---------------------------------+ 0x0000
    |       Operating System          |
    |         Kernel Space            |
    |                                 |
    |      <Kernel Code & Data>       |
    |  +---------------------------+  |
    |  |      Execution Code       |  |
    |  |  +---------------------+  |  |
    |  |  | System Call Handlers|  |  |
    |  |  | Interrupt Handlers  |  |  |
    |  |  | Scheduler Code      |  |  |
    |  |  +---------------------+  |  |
    |  |                           |  |
    |  |  +---------------------+  |  |
    |  |  | Global Variables    |  |  |
    |  |  | Configuration Data  |  |  |
    |  |  | Kernel Flags        |  |  |
    |  |  +---------------------+  |  |
    |  |                           |  |
    |  |  +---------------------+  |  |
    |  |  | Security Settings   |  |  |
    |  |  | Access Control Lists|  |  |
    |  |  +---------------------+  |  |
    |  +---------------------------+  |
    |                                 |
    |      <Kernel Structures>        |
    |  +---------------------------+  |
    |  |        PCBs Pool          |  |
    |  |        Interrupt Table    |  |
    |  |        File Descriptors   |  |
    |  |        Device List        |  |
    |  |        Etc.               |  |
    |  +---------------------------+  |
    |                                 |
    +---------------------------------+

     

    2-2. 사용자 공간 (User Space)

    • 정의: 일반 응용 프로그램이 실행되는 메모리 영역, 대부분의 사용자 수준 애플리케이션과 서비스가 이곳에서 실행된다.
    • 역할: 사용자 프로그램 실행, 사용자 인터페이스 제공, 일반적인 애플리케이션 동작 처리 등을 수행한다.
    • 보안성: 사용자 공간의 코드는 커널 공간에 직접 접근할 수 없어 시스템 자원을 보호하며, 오류가 시스템 전체에 치명적인 영향을 주지 않도록 한다.
    +----------------------------------------------------------------+
    |                           User Space                           |
    |  +----------------+   +----------------+   +----------------+  |
    |  |  Process A     |   |  Process B     |   |  Process C     |  |
    |  |                |   |                |   |                |  |
    |  | +------------+ |   | +------------+ |   | +------------+ |  |
    |  | | Code       | |   | | Code       | |   | | Code       | |  |
    |  | +------------+ |   | +------------+ |   | +------------+ |  |
    |  | | Data       | |   | | Data       | |   | | Data       | |  |
    |  | +------------+ |   | +------------+ |   | +------------+ |  |
    |  | | Heap       | |   | | Heap       | |   | | Heap       | |  |
    |  | +------------+ |   | +------------+ |   | +------------+ |  |
    |  | | Stack      | |   | | Stack      | |   | | Stack      | |  |
    |  | +------------+ |   | +------------+ |   | +------------+ |  |
    |  +----------------+   +----------------+   +----------------+  |
    +----------------------------------------------------------------+