콘텐츠로 바로가기

Kernel & System Interface Physics

운영체제의 심장부인 커널의 내부 구조와 유저-커널 모드 전환의 물리적 메커니즘을 다루는 학습 노드입니다.

Article
M

Me

hyunyoun's Blog

operating-systems-system-mechanicsoperating-systemssystem-mechanicskernelsystem-interface-physicsos-kernel-architectureinterfacelearning9 min read

1. Overview

커널 및 시스템 인터페이스 물리(Kernel & System Interface Physics, KSIP)는 순수한 실리콘(하드웨어)과 사용자 공간(User Space)의 응용 소프트웨어 사이를 중재하는 가장 본질적인 보안 및 자원 통제 경계면을 다룹니다.

운영체제 커널은 시스템의 심장부로서 자원을 할당하고 스케줄링하며 권한을 격리하는 최상위 관리자입니다. 학습자는 모든 서비스가 하나의 주소 공간에 모인 모놀리식(Monolithic) 커널과, 최소한의 기능만 커널에 남기는 마이크로커널(Microkernel)의 아키텍처 차이를 이해합니다. 나아가 일반 애플리케이션의 C 라이브러리 함수(printf, read)가 호출될 때 CPU가 어떻게 특권 레벨(Ring 0)로 전환하고 인터럽트 디스크립터 테이블(IDT)을 참조해 커널 랜드로 진입하는지, 시스템 콜(System Call)의 하드웨어 경로를 살핍니다. 이를 통해 운영체제가 사용자 프로그램을 어떻게 격리(Sandboxing)하고 지원하는지 이해합니다.

2. Scope & Boundaries

In-Scope

  • 커널 아키텍처 철학 (Kernel Architectures): 모놀리식(Monolithic), 마이크로커널(Microkernel), 하이브리드(Hybrid), 엑소커널(Exokernel)의 메모리 주소 공간 구조 및 통신(IPC) 비용 차이.
  • 시스템 콜 인터페이스 물리 (System Call Path): syscall, sysenter, 소프트웨어 인터럽트(int 0x80)를 통한 유저 모드 \rightarrow 커널 모드 진입 절차, 레지스터를 통한 매개변수 전달.
  • 특권 격리 메커니즘 (Privilege Mechanics): CPU Protection Rings (Ring 0 ~ Ring 3), 트랩(Trap), 폴트(Fault), 중단(Abort) 등 하드웨어 예외(Exception) 처리.
  • 커널 동기화 (Kernel Synchronization): 다중 코어에서 커널 자료구조 보호를 위한 스핀락(Spinlock), 인터럽트 비활성화, RCU(Read-Copy-Update).
  • 현대 커널 기술 (Modern OS Tech): 하드웨어 가상화 지원(VT-x), 런타임 커널 기능 확장(eBPF) 및 커널 보안 기법.

Out-of-Scope

  • 개별 디바이스 드라이버 로직 구현: USB 프로토콜 스택 디코딩이나 디스플레이 패널 제어 방식 → 02-05. HSI Physics 영역으로 위임.
  • 표준 라이브러리(C/C++) 구현체 상세: glibcmalloc 내부 힙 관리나 문자열 처리 파싱 구조 → 05. Programming Languages 영역으로 위임.
  • 프로세스/스레드의 생명주기와 스케줄링 알고리즘: 라운드 로빈, CFS 등 유저 타임 슬라이스 할당 이론 → 03-02. PCM 영역으로 위임.

Boundaries

  • KSIP vs. HSI (02-05): HSI가 CPU 핀(Pin)을 통해 외부 장치와 통신하는 하드웨어 인터페이스에 집중한다면, KSIP는 그 통제권을 일반 사용자 프로그램이 직접 행사하지 못하도록 시스템 콜과 권한 격리를 어떻게 구성하는지에 집중합니다.

3. Counterexample

  • 시스템 콜을 단순한 함수 호출로 오해: C 언어에서 open()이나 read() 함수를 호출하는 것을 같은 프로그램 안의 my_function() 호출과 동일한 분기(Jump)로만 보면 핵심을 놓칩니다. 일반 함수 호출은 주로 스택과 PC(Program Counter)가 바뀌지만, 시스템 콜은 소프트웨어 인터럽트(SWI) 또는 syscall 경로를 통해 CPU 권한 레벨이 전환(Ring 3 \rightarrow 0)되고, 사용자 스택에서 커널 스택으로 넘어가며, 컨텍스트 저장 비용이 동반됩니다.

4. Prerequisites

  • 디지털 논리 및 프로세서 물리 (Basic): CPU의 레지스터 구조, 파이프라인, 그리고 인터럽트 사이클에 대한 이해가 시스템 콜 메커니즘을 파악하는 데 필수적입니다. (02-01. DLP)
  • 메모리 시스템 및 저장 물리 (Recommended): 페이지 테이블(Page Table)과 가상 주소 변환(MMU)의 동작을 알아야 유저/커널 공간의 격리를 명확히 이해할 수 있습니다. (02-02. SSP)

5. Learning Map

Sequence Core Cluster Objective & Description Evidence (BoK)
1 Kernel Archetypes 모놀리식과 마이크로커널의 메모리 격리 구조와 IPC 통신 비용(Trade-off)을 비교합니다. P1/Principles
2 Privilege & System Calls 사용자 모드 프로그램이 커널 서비스를 요청할 때 거치는 Ring 전환 절차와 트랩 핸들링을 이해합니다. P1/Principles
3 Kernel Synchronization 시스템 콜과 하드웨어 인터럽트가 동시에 커널 자료구조를 수정할 때 이를 보호하는 락 구조를 이해합니다. P1/Concurrency
4 Modern Extensibility (eBPF) 커널을 재컴파일하지 않고 내부 동작을 관측하고 확장하는 eBPF의 샌드박스 구조를 배웁니다. Industry

6. Learning Topics

Basic

Core Topic 01: 커널 아키텍처의 분리 철학 (Kernel Architectures & Archetypes)

  • Why to Learn: Linux, Windows, macOS(XNU), RTOS 등 다양한 운영체제가 왜 서로 다른 성능과 보안 특성을 가지는지 구조적으로 이해하기 위해서입니다.
  • What to Learn:
    • Concepts: 모놀리식 커널(Monolithic Kernel), 마이크로커널(Microkernel), 하이브리드 커널(Hybrid Kernel), 엑소커널(Exokernel).
    • Skills: 커널 공간(Kernel Space)과 사용자 공간(User Space)의 가상 메모리 맵(Memory Map) 매핑 상태 분석, 커널 모듈(LKM)의 동적 적재 원리.
    • Tools: 리눅스 커널 소스 트리 분석(cscope), lsmod.
    • Trade-offs: 드라이버와 파일 시스템을 커널 안에 두어 함수 호출로 빠르게 통신하는 모놀리식의 성능 이점 vs 드라이버를 사용자 프로세스로 분리해 장애 격리를 강화하는 마이크로커널의 안정성과 모듈성.
  • How to Learn:
    • 1단계: 운영체제별 커널 아키텍처 다이어그램을 그리며, VFS(가상 파일 시스템)나 TCP/IP 스택이 모놀리식과 마이크로커널에서 각각 어느 주소 공간(유저/커널)에 배치되는지 비교합니다.
    • 2단계: 최신 Linux 커널을 다운로드하여 make menuconfig로 필요한 드라이버만 [M](모듈)로 설정하고 컴파일한 뒤, insmod로 동적 로딩할 때 발생하는 심볼 링킹 과정을 추적합니다.
  • Implement: 리눅스 커널 모드에서 "Hello World"를 커널 로그 링 버퍼(dmesg)에 출력하고, 잘못된 커널 모듈이 시스템 안정성에 어떤 위험을 줄 수 있는지 안전한 실습 환경에서 확인합니다.

Core Topic 02: 특권 모드와 시스템 콜 물리 역학 (Privilege Rings & System Calls)

  • Why to Learn: 사용자 애플리케이션이 하드웨어(디스크, 네트워크)에 임의 접근하여 시스템을 파괴하는 것을 막고, 오직 운영체제가 정한 안전한 창구(Interface)를 통해서만 제어되도록 하는 보호막 메커니즘을 숙지하기 위해서입니다.
  • What to Learn:
    • Concepts: CPU 보호 링(Protection Rings, Ring 0 vs Ring 3), 트랩(Trap), 폴트(Fault), 인터럽트 벡터 테이블(IVT/IDT).
    • Skills: syscall/sysenter 명령어 처리 파이프라인, eax/rax 레지스터를 통한 시스템 콜 번호 매핑 및 인자 전달(ABI) 흐름 추적.
    • Tools: strace, gdb 어셈블리 디버깅.
    • Trade-offs: 시스템 콜을 통한 격리와 하드웨어 보호 vs 사용자-커널 전환(Context Switch) 과정에서 발생하는 TLB/캐시 플러시 오버헤드.
  • How to Learn:
    • 1단계: 단순한 C 프로그램(write(1, "A", 1);)을 작성하고 어셈블리로 디스어셈블하여 라이브러리가 CPU를 어떻게 인터럽트(int 0x80 또는 syscall) 경로로 커널 코드에 진입시키는지 단계별로 관찰합니다.
    • 2단계: 마이크로 벤치마크를 작성해 일반 함수 호출 1,000,000번 수행 시간과 getpid() 같은 단순 시스템 콜 1,000,000번 호출 시간을 비교하고, 시스템 콜 비용을 수치화합니다.
  • Implement: 어셈블리어를 이용해 glibc 래퍼(Wrapper)를 전혀 거치지 않고 순수 CPU syscall 명령어에 레지스터를 직접 세팅하여 화면에 텍스트를 출력하는 베어메탈 쉘코드 모사.

Practical

Core Topic 03: 커널 동기화와 자료구조 보호 (Kernel Synchronization Physics)

  • Why to Learn: 다중 코어 프로세서 환경에서 수많은 코어가 동시다발적으로 커널 내부 자료구조(예: 오픈 파일 테이블, 프로세스 큐)를 수정하려 할 때 데이터 오염과 데드락(Deadlock)을 방어하기 위함입니다.
  • What to Learn:
    • Concepts: 스핀락(Spinlock), 세마포어(Semaphore), 뮤텍스(Mutex), 리드-카피-업데이트(RCU), 커널 선점(Kernel Preemption).
    • Skills: 인터럽트 비활성화(Disabling Interrupts)의 원리와 위험성, 멀티 코어에서의 캐시 라인 핑퐁(False Sharing) 인지.
    • Tools: 리눅스 커널 락 디버거(lockdep).
    • Trade-offs: 스핀락을 통한 짧은 대기와 빠른 자원 획득(CPU 바쁜 대기 비용) vs 뮤텍스를 통한 CPU 휴면과 문맥 교환 오버헤드.
  • How to Learn:
    • 1단계: 인터럽트 핸들러(ISR) 내부에서는 스레드가 대기(Sleep) 상태로 빠질 수 있는 뮤텍스를 사용할 수 없고, 짧은 임계 구역에는 스핀락이 필요한 이유를 컨텍스트 관점에서 정리합니다.
    • 2단계: 읽기 작업이 쓰기 작업보다 많은 라우팅 테이블 등에서 RCU 메커니즘이 어떻게 락 경합과 캐시 일관성 트래픽을 줄이는지 아키텍처 다이어그램으로 파악합니다.
  • Implement: 두 개의 커널 스레드가 하나의 전역 연결 리스트(Linked List)에 동시에 노드를 삽입할 때, 의도적인 Race Condition으로 포인터가 꼬이게 만들고 이를 커널 스핀락 매크로로 해결하는 모듈 개발.

Advanced

Core Topic 04: 최신 커널 확장성과 가상화 및 eBPF (Modern Extensibility & eBPF)

  • Why to Learn: 커널을 재컴파일하거나 위험한 모듈을 로드하지 않고도, 클라우드 네이티브 환경에서 즉각적이고 안전하게 네트워크 패킷을 필터링하고 시스템 성능을 관측(Observability)하기 위해서입니다.
  • What to Learn:
    • Concepts: 하드웨어 가상화 계층(Intel VT-x, VMCS), eBPF(Extended Berkeley Packet Filter), JIT(Just-In-Time) 컴파일 in Kernel.
    • Skills: eBPF 바이트코드 샌드박싱 원리, Kprobes/Uprobes를 활용한 함수 단위 동적 트레이싱, 커널 스페이스 네트워킹(XDP).
    • Tools: bpftrace, bcc 도구 체인, QEMU/KVM.
    • Trade-offs: eBPF 샌드박스 내 연산을 제한(무한 루프 불가 등)해 커널 안정성을 높이는 장점 vs 튜링 완전성(Turing Completeness)이 제한되어 복잡한 상태 머신 로직 구현이 어려운 한계.
  • How to Learn:
    • 1단계: 하이퍼바이저(Hypervisor)가 구동될 때 Host OS와 Guest OS 간의 세계 전환(Vmx Root/Non-Root Transition) 흐름을 인텔 SDM 문서를 참조하여 매핑합니다.
    • 2단계: bpftrace 스크립트를 작성하여, 커널 패닉의 원인이 될 수 있는 특정 시스템 콜의 호출 횟수와 인자(Arguments)를 실시간으로 히스토그램으로 시각화합니다.
  • Implement: eBPF C 코드를 작성하여 특정 IP에서 들어오는 네트워크 패킷(SYN 플러딩)을 TCP/IP 스택을 거치기도 전인 XDP(eXpress Data Path) 최하단 단계에서 초고속으로 Drop(폐기)하는 방화벽 로직.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
Monolithic Kernel 커널의 모든 서비스(메모리 관리, 파일 시스템, 드라이버)가 하나의 거대한 주소 공간에서 동작하는 구조입니다. 기본 아키텍처 Performance Microkernel 단순히 '오래된 기술'로 오해 P1:CS2023/Principles core
System Call 응용 프로그램이 커널에 특정 서비스를 요청하는 유일한 공식 창구이자 인터페이스입니다. 기본 인터페이스 Trap API 라이브러리 함수와 동일시함 P1:CS2023/Kernel core
Ring 0 CPU에서 가장 높은 권한을 가지며 하드웨어에 직접 접근이 가능한 실행 모드입니다. 추천 권한 관리 Privilege Ring 3 소프트웨어적인 등급으로만 인식 Industry x86 SDM core
eBPF 커널 소스코드를 수정하지 않고 안전하게 샌드박스화된 프로그램을 커널 내에서 실행하는 기술입니다. 심화 확장성 Observability Kernel Module 단순히 성능 튜닝용으로만 오해 Industry.org BPF core

8. References

Primary References

Secondary References

  • [Operating Systems: Three Easy Pieces] Remzi H. Arpaci-Dusseau — Modern approach to kernel concepts.
  • [Modern Operating Systems] Andrew S. Tanenbaum — Microkernel vs Monolithic classic reference.

Industry References

  • [Linux Kernel Development] Robert Love — Practical guide to Linux internals.
  • [Microsoft Windows Internals] Pavel Yosifovich et al. — Windows kernel internals.

9. Final Checklist

Primary Checklist

  • 유저 모드에서 커널 모드로 진입하기 위한 CPU 레벨의 하드웨어 메커니즘을 설명할 수 있는가? (P1)
  • 모놀리식 커널과 마이크로커널의 성능 및 안정성 간의 트레이드오프를 논할 수 있는가? (P1)

Secondary Checklist

  • 커널 내부에서 세마포어와 뮤텍스를 사용해야 할 상황을 지연 시간 관점에서 구분할 수 있는가?
  • 시스템 콜 번호와 인자 전달 방식이 아키텍처(x86, ARM)별로 어떻게 다른지 인지하는가?

Industry Checklist

  • 커널 패닉(Panic) 발생 시 덤프 파일을 분석하여 최초로 문제가 된 코드의 권한 수준을 식별 가능한가? (SFIA)
  • eBPF와 같은 기술을 활용하여 실시간 시스템 성능 병목을 커널 레벨에서 관측할 수 있는가?

OS Kernel Architecture & Interface

1 / 4