728x90
반응형
위 부분 중 커널 부분만 따로 떼서 포스팅 해보겠습니다.
커널(Kernel )?
커널은 운영 체제의 핵심 부분으로, 시스템의 리소스를 관리하고 프로세스 간의 상호작용을 조정하는 역할을 합니다.
커널 공간(Kernel Space)과 사용자 공간(User Space)
운영 체제는 메모리를 크게 커널 공간(Kernel Space)과 사용자 공간(User Space)이라는 두 가지 영역으로 나눕니다.
커널 공간(Kernel Space)
- 정의 - 커널 공간은 운영 체제의 커널과 그 핵심 기능들이 실행되는 메모리 영역입니다.
- 역할
- 하드웨어 디바이스 드라이버 - 하드웨어 장치와 소프트웨어 사이의 인터페이스를 제공합니다.
- 네트워킹 스택 - 네트워크 통신을 처리합니다.
- 파일 시스템 - 파일과 디렉토리를 관리합니다.
- 메모리 관리 - 시스템 메모리를 할당하고 관리합니다.
- 프로세스 스케줄링 - 프로세스의 실행 순서를 결정하고 관리합니다.
- 권한 - 커널 공간은 사용자 공간보다 높은 권한을 가지며, 직접 하드웨어 자원에 접근할 수 있습니다.
- 접근 제한 - 일반 애플리케이션은 커널 공간에 직접 접근할 수 없으며, 시스템 콜을 통해서만 간접적으로 접근할 수 있습니다.
사용자 공간(User Space)
- 정의 - 사용자 공간은 일반 애플리케이션이 실행되는 메모리 영역입니다.
- 역할
- 애플리케이션은 이 영역에서 실행되며, 필요한 시스템 자원이나 서비스를 시스템 콜을 통해 커널에 요청합니다.
- 권한 - 사용자 공간은 커널 공간보다 권한이 낮으며, 직접 하드웨어 자원에 접근할 수 없습니다.
커널 공간의 주요 구성 요소
커널 공간에는 여러 가지 중요한 데이터 구조와 구성 요소들이 있습니다. 주요 구성 요소는 다음과 같습니다.
- 커널 코드(Kernel Code)
- 커널 자체의 코드와 운영 체제의 핵심 기능들이 실행되는 영역입니다.
- 커널 데이터(Kernel Data)
- 커널이 사용하는 데이터 구조, 변수 등이 위치하는 영역입니다. 예를 들어, 프로세스 제어 블록(PCB), 시스템 콜 테이블 등이 있습니다.
- 커널 힙(Kernel Heap)
- 커널이 동적으로 할당한 메모리를 관리하는 영역입니다.
- 커널 스택(Kernel Stack)
- 각 프로세스마다 커널 모드에서 실행될 때 사용할 스택이 할당됩니다. 커널 스택은 프로세스 전환 시 컨텍스트 스위칭에 사용됩니다.
- 디바이스 드라이버(Device Drivers)
- 하드웨어 장치와 커널 사이의 인터페이스를 제공하는 코드가 위치합니다.
- 메모리 맵(Memory Map)
- 커널은 시스템의 전체 메모리를 관리하며, 이와 관련된 정보들이 저장되는 영역입니다.
사용자 공간과 커널 공간 간의 전환
프로세스가 실행되는 동안, 사용자 모드(User Mode)와 커널 모드(Kernel Mode) 간의 전환이 발생합니다.
주요 전환 방법은 다음과 같습니다.
- 시스템 콜(System Call)
- 사용자 공간에서 실행 중인 애플리케이션이 커널의 서비스를 요청할 때, 시스템 콜을 사용합니다. 이때 사용자 모드에서 커널 모드로 전환됩니다.
- 예: 파일 열기, 메모리 할당, 프로세스 생성 등.
- 인터럽트(Interrupt)
- 하드웨어나 소프트웨어 이벤트가 발생하면, 현재 실행 중인 작업을 중단하고 커널의 인터럽트 핸들러가 실행됩니다.
- 인터럽트는 하드웨어 인터럽트와 소프트웨어 인터럽트로 구분됩니다.
- 하드웨어 인터럽트: 키보드 입력, 네트워크 패킷 수신 등 하드웨어 이벤트가 발생했을 때 발생합니다.
- 소프트웨어 인터럽트: 예외(exception) 또는 트랩(trap)과 같은 소프트웨어 이벤트가 발생했을 때 발생합니다.
이러한 전환을 통해 커널은 사용자 애플리케이션과 하드웨어 자원 간의 안전하고 효율적인 상호작용을 관리할 수 있습니다.
커널은 운영 체제의 핵심 부분으로, 시스템 자원 관리와 사용자 애플리케이션과 하드웨어 간의 상호작용을 조정하는 역할을 합니다. 커널 공간과 사용자 공간은 메모리 영역을 나누어 시스템의 안정성과 보안을 유지하며, 시스템 콜과 인터럽트를 통해 사용자 공간과 커널 공간 간의 효율적인 전환을 수행합니다.
728x90
반응형
'프로그래밍(Basic) > 이론' 카테고리의 다른 글
[바미] CPU 코어와 멀티태스킹, 멀티프로세스, 멀티스레드의 관계 (0) | 2024.06.30 |
---|---|
[바미] 멀티 태스킹, 멀티 스레드, 멀티 프로세스 (0) | 2024.06.29 |
[바미] CPU 스케줄링 알고리즘 (0) | 2024.06.13 |
[바미] 피터슨 알고리즘 (0) | 2024.06.12 |
[바미] 철학자의 식사시간 문제 (0) | 2024.06.11 |