콘텐츠로 바로가기

Operating Systems & System Mechanics

커널 메커니즘, 가상화, 시스템 자원 관리 및 성능 최적화를 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts7 min read

1. Overview

운영체제와 시스템 메커니즘(Operating Systems & System Mechanics, OSSM)은 하드웨어와 응용 프로그램 사이에서 자원을 공정하게 배분하고 가상화된 실행 환경을 제공하는 핵심 소프트웨어 계층을 다룹니다. 본 카테고리는 단순한 OS 사용법을 넘어, 커널의 내부 작동 원리, 고도화된 병행성 제어, 그리고 현대 클라우드 인프라의 기반이 되는 가상화 기술의 공학적 설계를 탐구합니다.

CS2023의 Operating Systems (OS)Systems Fundamentals (SF) 지식 영역을 근간으로 삼아, 프로세스 관리, 메모리 최적화, 입출력 시스템 및 보호 메커니즘을 체계적으로 다룹니다.

2. Scope & Boundaries

In-Scope

  • 커널 핵심(Kernel Core): 프로세스 및 스레드 모델, CPU 스케줄링 알고리즘, 시스템 호출(Syscalls) 인터페이스.
  • 자원 관리(Resource Mgmt): 페이징 캐시, 가상 메모리 관리(MMU 연동), 파일 시스템 구조 및 I/O 제어.
  • 병행성 및 동기화(Concurrency): 뮤텍스, 세마포어, 모니터, 교착 상태(Deadlock) 탐지 및 회피 전략.
  • 가상화 및 격리(Virtualization): 하이퍼바이저 아키텍처, 리눅스 컨테이너 기술(Namespaces, Cgroups).

Out-of-Scope

  • 특정 OS 배포판 관리: 단순 패키지 설치, UI 테마 설정, 윈도우/리눅스 단순 조작법.
  • 네트워크 레이어 설계: TCP/IP 프로토콜 스택 자체의 통신 로직 (08. NC 노드로 위임).
  • 컴퓨터 회로 이론: 반도체 소자 및 게이트 수준의 물리 설계 (02. CAES 노드로 위임).

Boundaries

  • OSSM은 '단일 실행 환경(Host or VM)' 내부에서의 자원 추상화 및 제어 흐름에 집중하며, 이를 네트워크로 확장하여 노드 간 협업을 다루는 영역은 분산 시스템 도메인으로 정의합니다.

3. Counterexample

  • 단순 쉘 명령어 숙달: 'apt install'이나 'ls -al'을 외우는 것은 단순 활용 단계입니다. 명령어 실행 시 발생하는 문맥 교환(Context Switch) 비용과 사용자-커널 모드 전환의 메커니즘을 분석하는 것이 OSSM의 핵심입니다.
  • 언어 수준 비동기 키워드 맹신: async/await 키워드만 사용하는 것이 아니라, 하부에서 동작하는 이벤트 루프와 커널 통지 시스템(epoll, Kqueue, io_uring)의 차이를 이해해야 합니다.

4. Prerequisites

  • 컴퓨터 구조와 임베디드 (Basic): 인터럽트, CPU 레지스터, 가상-물리 주소 매핑을 위한 TLB 작동 원리 이해. (P1)
  • C/C++ 시스템 프로그래밍 (Recommended): 시스템 호출 직접 사용 및 메모리 레이아웃(세그먼트)에 대한 지식. (P1)
  • 수리 논리 (Practical): 동기화 알고리즘의 유한 상태 기계(FSM) 표현 및 경쟁 상태(Race Condition) 논리 추론 능력.

5. Learning Map

  1. Kernel & Interface: 운영체제의 핵심 구조와 특권 전환의 물리적 경계를 이해합니다.
  2. Process & Concurrency: 실행 단위의 생명주기와 자원 공유를 위한 동기화 원리를 익힙니다.
  3. Memory & Virtualization: 가상 주소 체계와 물리 메모리의 효율적 관리 기법을 배웁니다.
  4. Storage & I-O Mechanics: 저장 매체의 물리적 특성과 입출력 제어의 하부 구조를 완성합니다.

6. Learning Topics

Basic

Core Topic 01: 커널 아키텍처와 모드 전환 (Kernel Architecture & Mode Logic)

  • Why to Learn: 악의적인 응용 프로그램으로부터 시스템을 보호하고 하드웨어 자원을 독점하지 못하도록 하는 보호 시스템의 기본 설계이기 때문입니다.
  • What to Learn:
    • Concepts: 모놀리식 vs 마이크로 커널, 이중 모드 실행(User/Kernel), 시스템 호출(Syscall) 라이프사이클.
    • Skills: 특정 함수의 실행 시간 중 커널 모드 점유율(CPU Time) 분석, Trap/Fault 구분.
    • Tools: strace, ltrace, Linux Kernel Source(Syscall table).
    • Trade-offs: 커널 모드 전환 오버헤드와 시스템 안정성 사이의 설계 타협.
  • How to Learn:
    • 1단계: strace를 사용하여 단순 ls 명령어가 수십 개의 시스템 호출을 발생시키는 과정을 추적합니다.
    • 2단계: 직접 어셈블리 수준에서 int 0x80 또는 syscall 명령을 호출하여 파일에 문자열을 출력해 봅니다.
  • Implement: 시스템 호출을 통한 I/O 처리 과정의 스택 프레임 변화 다이어그램.

Core Topic 02: 고도화된 병행성 제어 (Advanced Concurrency Primitives)

  • Why to Learn: 멀티코어 환경에서 데이터 무결성을 보장하면서도 성능 병목을 최소화하는 하이 로드 시스템 설계의 필수 역량입니다.
  • What to Learn:
    • Concepts: 임계 영역(Critical Section), 뮤텍스(Mutex) vs 세마포어(Semaphore), 조건 변수(Condition Variables), 모니터(Monitor).
    • Skills: 교착 상태(Deadlock) 4대 조건 분석, 순환 대기 탐지 알고리즘 구현.
    • Tools: Valgrind (Helgrind), Thread Sanitizer.
    • Trade-offs: 락 정밀도(Fine-grained locking) 개선에 따른 동시성 증대 vs 관리 복잡도 및 데드락 위험 증가.
  • How to Learn:
    • 1단계: '식사하는 철학자 문제'를 통해 자원 할당 그래프와 데드락 발생 시나리오를 시뮬레이션합니다.
    • 2단계: 하드웨어 지원이 필요한 Atomic 연산(Fetch-and-Add, CAS)을 활용한 Lock-free 알고리즘 기초를 학습합니다.
  • Implement: 경쟁 상태가 제거된 thread-safe 생산자-소비자 큐 (C/C++ 기반).

Practical

Core Topic 03: 가상 메모리와 I/O 최적화 (Memory Management & Zero-copy)

  • Why to Learn: 애플리케이션의 체감 속도는 결국 디스크와 네트워크 I/O 지연에 의해 결정되며, 메모리 관리 전략이 이를 해결하는 열쇠이기 때문입니다.
  • What to Learn:
    • Concepts: 페이징(Paging), 페이지 교체 알고리즘(LRU, Clock), 페이지 폴트(Page Fault) 메커니즘, 제로 카피(Zero-copy).
    • Skills: mmap을 이용한 파일 매핑 성능 분석, 쓰레싱(Thrashing) 징단 및 워킹 셋(Working Set) 관리.
    • Tools: pmap, vmstat, iostat.
    • Trade-offs: 사용자 메모리 버퍼 복사 방지(Zero-copy)를 통한 성능 향상 vs 커널 캐시 일관성 관리 난이도.
  • How to Learn:
    • 1단계: 대용량 데이터 복사 시 read/write 루프와 sendfile 시스템 호출의 속도 차이를 벤치마크합니다.
    • 2단계: 가상 주소를 물리 주소로 변환하는 다단계 페이지 테이블(Multi-level Page Table) 과정을 수동 추적합니다.
  • Implement: 고속 데이터 전송을 위한 mmap 기반 파일 서버 프로토타입.

Advanced

Core Topic 04: 가상화 가속과 컨테이너 격리 (Virtualization & Container Internals)

  • Why to Learn: 클라우드 네이티브 환경에서 물리 서버 한 대의 가치를 극대화하고, 서비스 간 간섭 없는 실행 환경을 보장하기 위함입니다.
  • What to Learn:
    • Concepts: 하드웨어 가속 가상화(Intel VT-x), 리눅스 Namespaces(PID, Net, Mnt), Cgroups 자원 제한, 계층형 파일 시스템(OverlayFS).
    • Skills: Docker 없이 unsharemount 만으로 미니 컨테이너 생성, 커널 자원 그룹 관리.
    • Tools: runc, lxc, cgcreate.
    • Trade-offs: 전 가상화(Full Virtualization)의 완벽한 격리 vs 컨테이너의 경량 실행 속도.
  • How to Learn:
    • 1단계: /proc 파일 시스템을 탐색하며 격리된 프로세스가 보는 시스템 정보의 차이를 확인합니다.
    • 2단계: Cgroup을 통해 특정 프로세스의 CPU 사용량을 10%로 강제 스로틀링(Throttling)하는 실습을 수행합니다.
  • Implement: 리눅스 네임스페이스 기반의 기초적인 컨테이너 격리 스크립트.

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Context Switch, 문맥 교환 CPU의 제어권을 다른 프로세스로 넘기기 위해 현재 실행 상태를 저장하고 복구하는 로직입니다. 기본 조율 Scheduler PCB, Overhead 단순한 함수 호출 과정과 혼동함 Primary core
Page Fault, 페이지 부재 가상 메모리 주소가 물리 메모리에 없어 보조 저장장치로부터 읽어와야 하는 예외 상황입니다. 권장 메모리 Virtual Memory Swap, Paging 오류(Error)가 아닌 정상적인 예외 처리 루틴임 Primary core
Deadlock, 교착 상태 두 개 이상의 프로세스가 서로 점유한 자원을 무한히 기다리는 순환 대기 상태입니다. 기본 안정성 Race Condition Starvation 단순한 대기 지연이나 무한 루프와 혼동 Primary core
Hypervisor, 하이퍼바이저 호스트 운영체제 위에 여러 독립된 운영체제를 실행할 수 있게 하는 가상화 관리 계층입니다. 실무 가상화 Virtual Machine vs. Container 컨테이너 엔진(Docker)과 아키텍처 층위가 다름 Primary core

8. References

Primary References

Secondary References

  • [OSTEP] Operating Systems: Three Easy Pieces — Remzi and Andrea Arpaci-Dusseau (공학적 접근의 최고봉).
  • [Silberschatz] Operating System Concepts — 전통적인 OS 이론의 바이블.

Industry References

  • [The Linux Kernel Archives] Documentation — 커널 실무 구현 및 최전선 명세.
  • [Docker Engine] Internals and isolation — 컨테이너 격리 기술 구현 가이드.

9. Final Checklist

Primary Checklist

  • 시스템 호출과 일반 라이브러리 함수의 실행 경로 차이를 스택 프레임 및 CPU 모드 관점에서 설명할 수 있는가? (P1-OS)
  • 페이지 오프셋을 이용해 가상 주소를 물리 주소로 변환(Address Translation)하는 과정을 수동으로 시뮬레이션할 수 있는가? (P1-OS-M)

Secondary Checklist

  • 공유 자원 접근 시 뮤텍스와 스핀락(Spinlock) 중 어느 것이 성능상 유리한지 코어 환경별로 판단할 수 있는가?
  • strace 도구를 사용하여 특정 사용자 프로세스의 과도한 시스템 호출 병목 구간을 식별했는가?

Industry Checklist

  • 컨테이너 환경에서 Cgroup 설정을 통해 특정 앱의 메모리 할당량을 물리 자원 이상으로 넘지 못하도록 제한해 보았는가?
  • 제로 카피(Zero-copy) 기술을 네트워크 파일 전송 아키텍처에 적용하여 CPU 사용률을 획기적으로 낮췄는가?