콘텐츠로 바로가기

Kernel & System Interface Physics

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

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

커널 및 시스템 인터페이스 물리(Kernel & System Interface Physics, KSIP)는 하드웨어와 응용 소프트웨어 사이의 가장 본질적인 경계면을 다룹니다.

운영체제 커널은 자원을 관리하고 권한을 통제하는 중재자입니다. 학습자는 모놀리식(Monolithic) vs 마이크로커널(Microkernel) 아키텍처의 설계 철학을 이해하고, 시스템 콜(System Call)이 발생할 때 CPU 레벨에서 일어나는 특권 모드 전환과 트랩(Trap) 핸들링의 물리적 과정을 학습합니다. 이를 통해 견고하고 확장 가능한 시스템 소프트웨어의 토대를 구축합니다.

2. Scope & Boundaries

In-Scope

  • Kernel Architectures: 모놀리식, 마이크로커널, 하이브리드 커널의 구조적 차이 및 Trade-off
  • System Call Interface: 유저 모드에서 커널 모드로의 진입/복귀 절차 및 매개변수 전달 물리
  • Privilege Mechanics: CPU Ring levels (Protection rings)와 하드웨어 기반 권한 격리
  • Kernel Bootstrapping: 커널 로딩 및 초기 시스템 초기화(Early initialization) 흐름

Out-of-Scope

  • 개별 드라이버 코드의 상세 구현 (05. HSI Physics 영역으로 위임)
  • 고수준 라이브러리(Standard C Library) API 활용 일반 (05. Programming Languages 영역으로 위임)

Boundaries

  • KSIP vs. HSI: HSI는 '장치와 대화하는 언어'에 집중한다면, KSIP는 '관리자가 그 대화를 어떻게 통제하고 격리하는지'에 집중합니다.

3. Counterexample

  • 단순히 printfopen 함수를 호출하는 것은 KSIP 학습이 아닙니다. open 함수가 **소프트웨어 인터럽트(SWI)**를 발생시키고 CPU의 **IDT(Interrupt Descriptor Table)**를 참조하여 커널 코드로 점프하는 물리적 과정을 설명할 수 있어야 합니다.

4. Prerequisites

  • 디지털 논리 및 프로세서 물리 (Basic): CPU의 레지스터 구조와 실행 유닛 동작 이해가 필수적입니다. (01. Digital Logic)
  • 컴퓨터 아키텍처 및 임베디드 매카니즘 (Recommended): 인터럽트 제어기(Interrupt Controller)의 동작 원리가 선행되어야 합니다. (02. Computer Architecture)

5. Learning Map

  1. Kernel Archetypes: 커널의 크기와 기능 배치에 따른 구조적 분류를 익힙니다.
  2. Privilege Switching: 하드웨어 가상화를 포함한 CPU 보호 계층의 물리적 거동을 이해합니다.
  3. The System Call Path: 사용자 요청이 커널 서비스로 변환되는 전체 실행 경로를 추적합니다.
  4. Synchronization Foundations: 커널 내부에서 자원을 보호하기 위한 원자적 연산을 배웁니다.

6. Learning Topics

Basic

Core: 커널 아키텍처와 분리 철학 (Kernel Architectures)

  • Why to Learn: 시스템의 목적(성능 vs 안정성)에 맞는 운영체제 구조를 선택하고 이해하기 위함입니다.
  • What to Learn:
    • 모놀리식 커널(Linux, BSD): 효율성과 단순성
    • 마이크로커널(Minix, L4): 격리성과 신뢰성
    • 하이브리드 및 엑소커널(Exokernel) 개념 개요
  • How to Learn:
    • 리눅스 커널 이미지 구조와 파일 시스템 상의 위치 확인
    • 커널 공간(Kernel Space)과 사용자 공간(User Space)의 메모리 맵 비교
  • Implement: 커널 모드에서 "Hello Kernel"을 출력하는 단순 모듈 로딩 실습

Core: 시스템 콜과 특권 모드 전환 (System Calls & Privilege)

  • Why to Learn: 프로그램이 안전하게 하드웨어 자원을 요청하고 반환받는 물리적 흐름을 제어하기 위해서입니다.
  • What to Learn:
    • CPU Protection Rings (Ring 0 vs Ring 3)와 특권 명령어
    • 인터럽트 벡터 테이블(IVT) 및 인터럽트 디스크립터 테이블(IDT) 역할
    • 트랩(Trap), 예외(Exception), 폴트(Fault)의 물리적 차이
  • How to Learn:
    • 어셈블리 레벨에서 int 0x80 또는 syscall 명령어가 호출될 때의 레지스터 변화 관측
    • 시스템 콜 오버헤드를 측정하는 마이크로 벤치마킹
  • Implement: 특정 시스템 콜을 가로채서 호출 횟수를 기록하는 기초 커널 훅(Hook)

Practical

Core: 커널 동기화와 원자성 (Kernel Synchronization)

  • Why to Learn: 다중 CPU 환경에서 커널 데이터 구조가 깨지지 않도록 보호하기 위함입니다.
  • What to Learn:
    • 스핀락(Spinlock) vs 뮤텍스(Mutex)의 커널 내 사용 가이드라인
    • 인터럽트 비활성화(Disabling Interrupts)를 통한 임계 구역 보호 물리
    • 스케줄러를 호출하지 않는 원자적 조작(Atomic Operations)
  • How to Learn:
    • 커널 내부 소스(예: Linux kernel atomic.h)를 분석하며 하드웨어 동기화 명령어 매핑 이해
    • 경쟁 상태(Race Condition)를 인위적으로 발생시키는 커널 테스트 코드 작성
  • Implement: 커널 내에서 공유되는 연결 리스트(Linked List)를 보호하는 락 메커니즘 구현

Advanced

Core: 최신 커널 가상화 및 보안 (Modern Kernel & Tech)

  • Why to Learn: 가상화 환경과 클라우드 인프라에서 커널이 수행하는 새로운 역할을 이해하기 위해서입니다.
  • What to Learn:
    • 하드웨어 지원 가상화(Intel VT-x, ARM Virtualization Extensions) 아키텍처
    • eBPF(Extended Berkeley Packet Filter)를 통한 런타임 커널 기능 확장
    • 커널 패치 보안(Kernel Patch Protection) 및 무결성 검증 물리
  • How to Learn:
    • eBPF 도구를 사용하여 커널 내부 함수의 인자값을 실시간 트레이싱 실습
    • 하이퍼바이저와 게스트 운영체제 간의 컨텍스트 스위칭 물리 분석
  • Implement: eBPF를 활용하여 특정 네트워크 패킷의 유입을 커널 단에서 모니터링하는 스크립트

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 physics.

9. Final Checklist

Primary Checklist

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

Secondary Checklist

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

Industry Checklist

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