OS Kernel
정의 대기 중입니다.
OS kernel은 운영 체제의 중앙 구성 요소로, 컴퓨터의 하드웨어와 그 위에서 실행되는 소프트웨어 간의 기본 인터페이스 역할을 합니다. 부트로더 다음으로 시작 시 가장 먼저 로드되는 프로그램이며, 시스템 작동 내내 메모리에 상주합니다. 아키텍처 측면에서 kernel은 CPU, 메모리 및 주변 장치를 포함한 시스템의 리소스를 관리합니다. system calls을 통해 OS의 다른 부분과 애플리케이션 프로그램에 필수적인 서비스를 제공합니다. 주요 기능에는 [process management](/ko/terms/process-management)(프로세스 생성, 스케줄링 및 종료), memory management(메모리 공간 할당 및 해제, 가상 메모리 구현), device management(장치 드라이버를 통한 하드웨어와의 상호 작용) 및 system call handling(사용자 공간 애플리케이션의 요청 처리)이 포함됩니다. Kernels는 크게 monolithic kernels, microkernels 및 hybrid kernels로 분류할 수 있습니다. Monolithic kernels(예: Linux)는 모든 핵심 OS 서비스를 kernel space의 단일 대형 프로세스에서 실행하여 직접 함수 호출로 인해 높은 성능을 제공하지만 모듈성과 안정성이 낮을 수 있습니다. Microkernels(예: MINIX 3)는 가장 필수적인 서비스(예: inter-process communication, 기본 스케줄링 및 메모리 관리)만 kernel space에서 실행하고 다른 서비스는 사용자 공간으로 이동하여 모듈성과 보안을 향상시키지만 빈번한 context switching 및 message passing으로 인해 성능 오버헤드가 발생할 수 있습니다. Hybrid kernels(예: Windows NT)는 monolithic kernels의 성능 이점과 microkernels의 모듈성을 결합하려고 시도합니다. 성능, 보안, 안정성 및 모듈성과 관련된 트레이드오프가 있습니다.
graph LR
Center["OS Kernel"]:::main
Rel_advanced_propulsion_systems["advanced-propulsion-systems"]:::related -.-> Center
click Rel_advanced_propulsion_systems "/terms/advanced-propulsion-systems"
Rel_function["function"]:::related -.-> Center
click Rel_function "/terms/function"
Rel_kernel["kernel"]:::related -.-> Center
click Rel_kernel "/terms/kernel"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧒 5살도 이해할 수 있게 설명
[Kernel](/ko/terms/kernel)은 자동차의 엔진과 운전사와 같습니다. 모든 기본 부품(엔진, 바퀴, 조향 장치)을 제어하고 모든 것이 원활하게 작동하도록 하여 자동차를 운전할 수 있도록(앱 실행) 합니다.
🤓 Expert Deep Dive
Kernel space operates in a privileged mode (e.g., Ring 0 on x86 architectures), with direct access to hardware and memory, whereas user space applications run in a less privileged mode (e.g., Ring 3). System calls are the carefully defined interfaces through which user-space programs request kernel services, involving a context switch from user mode to kernel mode. Process scheduling algorithms (e.g., preemptive, cooperative) determine how CPU time is allocated among competing processes. Memory management techniques like paging and segmentation are implemented within the kernel to provide virtual memory abstractions and enforce memory protection. Device drivers, often loaded as modules, abstract hardware complexities, allowing the kernel to interact with diverse peripherals uniformly. Vulnerabilities within the kernel (e.g., buffer overflows, race conditions) are critical as they can lead to system-wide compromise. Architectural choices like loadable kernel modules (LKMs) in monolithic kernels offer flexibility but also increase the attack surface.