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 | | |
| | +------------+ | | +------------+ | | +------------+ | |
| +----------------+ +----------------+ +----------------+ |
+----------------------------------------------------------------+
'컴퓨터 과학 > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스와 메모리 구조(5): 프로세스 스케줄링(Process Scheduling) (0) | 2024.04.27 |
---|---|
[운영체제] 프로세스와 메모리 구조(4): 프로세스 제어 블록(PCB) (0) | 2024.04.27 |
[운영체제] 프로세스와 메모리 구조(3): 프로세스와 스레드 (1) | 2024.04.27 |
[운영체제] 프로세스와 메모리 구조(1): 메모리와 저장공간 계층구조(Memory Hierachy) (0) | 2024.04.27 |
[운영체제] HDD 구조와 디스크 스케줄링 (0) | 2024.03.15 |