CS/운영체제

커널

Realuda72 2025. 4. 23. 00:22

 

커널 개요

 커널은 운영체제의 핵심 구성 요소(Core Component)로, 하드웨어 자원을 직접 관리하고 사용자 프로그램이 이 자원에 안전하게 접근할 수 있도록 중재하는 역할을 합니다.

 커널은 하드웨어와 소프트웨어 사이의 추상화 계층(Abstraction Layer)을 제공하여 하드웨어의 복잡한 동작을 숨기고, 프로그램이 표준화된 인터페이스를 통해 하드웨어 기능을 사용할 수 있게 합니다.

 또한 커널의 주요 목적은 자원 공유(Resource Sharing)자원 보호(Resource Protection)로, 여러 프로그램이 동시에 시스템 자원을 효율적이고 안전하게 사용할 수 있도록 보장하는 것입니다.


커널의 주요 구성 요소

  1. 프로세스 관리자 (Process Manager)
    • 프로세스 생성, 종료, 스케줄링, 상태 전이, 문맥 교환(Context Switch)을 관리합니다.
    • 프로세스 간 동기화(Synchronization)와 통신(IPC, Inter-Process Communication)도 담당합니다.
  2. 메모리 관리자 (Memory Manager)
    • 메모리 할당(Allocation)과 해제(Deallocation), 가상 메모리(Virtual Memory), 페이지 교체(Page Replacement), 메모리 보호(Memory Protection)를 수행합니다.
    • MMU (Memory Management Unit)와 협력하여 주소 변환(Address Translation)을 담당합니다.
  3. 장치 관리자 (Device Manager)
    • 디바이스 드라이버(Device Driver)를 통해 다양한 하드웨어 장치를 제어합니다.
    • I/O 스케줄링(I/O Scheduling), 버퍼링(Buffering), 캐싱(Caching)을 수행하여 입출력 효율성을 높입니다.
  4. 파일 시스템 관리자 (File System Manager)
    • 파일 생성, 삭제, 읽기, 쓰기, 디렉토리 구조 유지, 메타데이터 관리 등을 수행합니다.
    • 다양한 파일 시스템(FAT32, NTFS, ext4 등)을 지원하며, 각 파일 시스템의 특성을 추상화하여 제공합니다.
  5. 네트워크 관리자 (Network Manager)
    • 네트워크 프로토콜 스택(TCP/IP 등)을 관리하며, 소켓 인터페이스(Socket Interface)를 통해 애플리케이션과 네트워크를 연결합니다.
    • 패킷 처리(Packet Handling), 에러 제어(Error Control), 흐름 제어(Flow Control)를 수행합니다.
  6. 보호 및 보안 모듈 (Protection and Security Module)
    • 사용자 인증(Authentication), 권한 부여(Authorization), 접근 제어(Access Control), 암호화(Encryption), 감사 및 로깅(Auditing and Logging)을 수행합니다.
    • 시스템 콜 필터링(System Call Filtering), 보안 모듈(예: SELinux, AppArmor)을 통해 보안을 강화합니다.

커널 공간과 사용자 공간 구조

커널은 메모리를 두 영역으로 분리하여 사용합니다:

  • 커널 공간 (Kernel Space): 커널 코드, 디바이스 드라이버, 시스템 자료구조 등이 위치하며, 하드웨어에 직접 접근할 수 있는 영역입니다.
  • 사용자 공간 (User Space): 애플리케이션이 실행되는 영역으로, 하드웨어 접근이 제한되며 커널을 통해서만 자원에 접근할 수 있습니다.

이 분리는 시스템 안정성보안을 보장하기 위해 필수적입니다. 사용자 애플리케이션이 커널 공간을 직접 조작하지 못하게 하여 시스템 전체의 무결성을 보호합니다.


하드웨어 권한 레벨

하드웨어 권한 레벨 (Ring 구조)

CPU 아키텍처(x86 등)에서는 권한 레벨(Ring)을 통해 커널 모드와 사용자 모드를 구분합니다.

  • Ring 0: 커널 모드. CPU가 전체 시스템 자원에 접근 가능한 최고 권한 상태입니다. 이 모드에서는 하드웨어 제어, 메모리 보호, 프로세스 스케줄링 등 시스템 핵심 기능을 수행할 수 있습니다.
  • Ring 3: 사용자 모드. CPU의 제한된 권한 상태로, 일반 애플리케이션이 실행됩니다. 하드웨어 직접 접근이 불가능하며, 커널을 통해서만 요청할 수 있습니다.
  • (Ring 1, 2는 대부분 사용되지 않음) 현대 운영체제에서는 Ring 0(커널)Ring 3(사용자) 두 레벨만 주로 사용합니다.

커널 모드 전환 메커니즘

사용자 모드에서 커널 모드로 진입하는 방법은 다음과 같습니다:

  1. 시스템 콜 (System Call)
    • 사용자 애플리케이션이 커널 기능을 요청할 때 발생하며, 커널이 제공하는 API를 통해 실행됩니다.
    • 예: 파일 열기, 메모리 할당, 프로세스 생성 등
  2. 인터럽트 (Interrupt)
    • 하드웨어 장치(디스크, 네트워크 등)가 이벤트를 발생시키면 CPU가 현재 작업을 중단하고 커널 모드로 전환하여 인터럽트 핸들러를 실행합니다.
  3. 예외 (Exception)
    • 0으로 나누기, 잘못된 메모리 접근, 페이지 폴트 등 프로그램 실행 중 오류가 발생했을 때 커널이 이를 처리하기 위해 진입합니다.

주요 시스템 콜 예시

  • 프로세스 관리: fork(), execve(), wait(), exit(), getpid()
  • 파일 시스템: open(), read(), write(), close(), stat()
  • 메모리 관리: mmap(), munmap(), brk(), sbrk()
  • 입출력 장치: ioctl(), select(), poll()
  • 네트워크: socket(), bind(), listen(), accept(), connect()
  • 보안 및 보호: chmod(), chown(), setuid(), capset()

커널 아키텍처 분류

  1. 모놀리식 커널 (Monolithic Kernel)
    • 모든 커널 기능이 하나의 주소 공간에서 동작합니다.
    • 시스템 콜, 드라이버, 파일 시스템, 네트워크 등이 모두 커널 공간에 위치합니다.
    • 장점: 빠른 성능
    • 단점: 크기 증가, 유지보수 어려움
    • 예시: Linux, Unix
  2. 마이크로커널 (Microkernel)
    • 최소한의 필수 기능(프로세스 관리, 메모리 관리, IPC)만 커널 공간에서 실행하며, 나머지 기능은 사용자 공간에서 실행합니다.
    • 장점: 높은 안정성, 모듈화
    • 단점: 성능 저하 가능성
    • 예시: Minix, QNX
  3. 하이브리드 커널 (Hybrid Kernel)
    • 모놀리식 커널과 마이크로커널의 특성을 혼합하여, 주요 기능은 커널 공간에서 실행하되, 일부 서비스는 사용자 공간에서 실행합니다.
    • 예시: Windows NT, macOS (XNU)

*이 글은 ChatGPT 캔버스로 작성함

'CS > 운영체제' 카테고리의 다른 글

운영체제의 파일 시스템  (0) 2025.05.07
운영체제의 메모리 관리  (0) 2025.05.07
운영체제의 프로세스 관리  (0) 2025.04.30
운영체제  (0) 2025.04.22