Operation System 25

Operation System Series를 마치며

이 글의 목적운영체제 따라잡기 본편 24편을 마쳤다. 이 글은 시리즈 전체를 압축·연결하고 다음에 어디로 갈지 짚는 에필로그다.24편 동안 본 개념을 한 장 지도로 다시 본다OS에서 뻗어 나가는 주제와 블로그 내 다른 시리즈를 연결한다OS 지식이 어떤 직업·역할과 맞닿는지 정리한다손으로 확인하는 방법과 읽을거리를 남긴다1. 24편이 만든 큰 그림OS는 한 가지 기능이 아니라 층층이 쌓인 추상화다.Part핵심 질문기억할 키워드0~1 오리엔테이션·구조OS가 뭔데, 어떻게 부팅·호출되나4 컴포넌트, 인터럽트, 시스템 콜, 커널 구조2 프로세스누가 실행되고 어떻게 스케줄되나PCB, fork/exec, 스레드, RR·우선순위3 동기화·교착동시에 돌리면 뭐가 깨지나mutex, semaphore, 4조건, Banke..

OS 종류와 활용

학습 목표범용 OS Linux·Windows·macOS의 커널·배포·주 사용 맥락을 비교 설명할 수 있다.임베디드·RTOS 가 범용 OS와 다른 제약(자원·실시간·MMU)을 설명할 수 있다.워크로드·하드웨어에 따른 OS 선택 기준을 설명할 수 있다.시리즈에서 다룬 개념이 실제 OS 제품에 어떻게 나타나는지 연결할 수 있다.문제 상황서버는 Ubuntu, 노트북은 macOS, 사무실 PC는 Windows — 같은 “OS”인데 왜 다르지?IoT 보드 문서에 FreeRTOS, Zephyr — 리눅스와 뭐가 다른가?클라우드 VM은 대부분 Linux — Windows는 언제 쓰나?uname -a에 Darwin, GNU/Linux, NT — 커널 이름이 다른 이유시리즈를 끝까지 봤는데 실무에서 어떤 OS를 고르지?분..

분산 시스템 개요

학습 목표분산 시스템이 단일 머신 OS와 어떻게 다른지 설명할 수 있다.클러스터 구조(공유 없음, HA)와 로드 밸런싱 흐름을 설명할 수 있다.CAP 정리에서 Consistency·Availability·Partition tolerance 트레이드오프를 설명할 수 있다.강한 일관성과 최종 일관성의 차이를 직관적으로 설명할 수 있다.문제 상황웹 서비스 트래픽이 커져 한 서버로는 한계 — 수평 확장이 필요하다DB 서버 장애 시 전체 서비스가 멈춘다 — 이중화·페일오버를 검토한다로드 밸런서 뒤에 서버 3대인데 한 대만 과부하 — 배분 알고리즘?캐시·CDN을 쓰면 빠른데 다른 지역에서 값이 다르게 보인다일관성을 포기한 건가?마이크로서비스는 네트워크로 통신 — 프로세스 IPC와 뭐가 다르지?NUMA·멀티코어는 한..

다중처리 심화

학습 목표SMP 한계와 NUMA 토폴로지(로컬·원격 메모리)를 설명할 수 있다.NUMA 인식 스케줄링·메모리 배치가 성능에 미치는 영향을 설명할 수 있다.하드·소프트 실시간 OS의 요구와 스케줄링 차이를 설명할 수 있다.멀티코어 부하 분산·CPU affinity 개념을 설명할 수 있다.문제 상황64코어 서버인데 스레드 64개 돌려도 스케일이 안 나온다메모리·캐시·버스 병목numactl --hardware에 Node 0 / Node 1 — 코어마다 메모리가 다르다공장 PLC 제어는 1ms 안에 응답해야 한다일반 Linux 스케줄러로는 보장 어렵움DB 프로세스를 특정 코어에 묶으면 latency가 줄었다taskset, NUMA 정책SMP·CPU 스케줄링 기초를 봤다. 이번엔 코어가 많아질 때와 시한이 있는 ..

가상화

학습 목표하이퍼바이저 Type 1·Type 2 차이와 VM(가상 머신) 구조를 설명할 수 있다.하드웨어 가상화와 OS 수준 가상화(컨테이너) 의 격리 방식을 비교할 수 있다.namespace·cgroup이 Linux 컨테이너 격리에 어떻게 쓰이는지 설명할 수 있다.VM과 컨테이너 선택 기준을 설명할 수 있다.문제 상황개발 PC는 macOS인데 프로덕션은 Linux — 환경 맞추기서버 한 대에 테스트용 Windows도 필요하다물리 서버를 나누기엔 비용·유휴docker run은 초 단위인데 VM 부팅은 분 단위격리 수준은 같은가?클라우드 EC2는 “인스턴스” — 내부는 VM인가 컨테이너인가보호·보안에서 격리를 봤다. 이번엔 OS가 한 물리 자원을 여러 논리 환경으로 나누는 가상화다.1. 가상화란가상화(vir..

보호와 보안

학습 목표보호(protection) 와 보안(security) 의 목표 차이를 설명할 수 있다.접근 제어 행렬·DAC·ACL·역할 기반(RBAC) 의 아이디어를 비교할 수 있다.인증(authentication) 과 인가(authorization) 의 차이를 설명할 수 있다.OS가 최소 권한·도메인으로 자원 접근을 제한하는 원리를 설명할 수 있다.문제 상황웹 앱 버그로 다른 사용자 파일이 읽힌다프로세스가 어떤 자원에 접근할 수 있는지 OS가 막아야 함sudo 없이 /etc/shadow를 열면 Permission denied누가 무엇을 할 수 있는지 검사퇴사자 계정이 아직 SSH 로그인된다인증·계정 수명 관리컨테이너 A가 호스트 /proc를 보면 정보 유출격리·네임스페이스·권한 경계저장장치·I/O 파트를 마..

버퍼링과 캐싱

학습 목표버퍼링이 CPU·장치 속도 차이를 완화하는 이유와 싱글·더블 버퍼 차이를 설명할 수 있다.페이지 캐시(page cache) 가 파일 블록을 RAM에 두는 방식과 cache hit/miss를 설명할 수 있다.write-back 쓰기와 fsync/sync 로 디스크 반영 시점을 구분할 수 있다.블록 I/O 요청이 캐시·디스크 스케줄러를 거치는 흐름을 설명할 수 있다.문제 상황같은 로그 파일을 두 번 cat하면 두 번째가 훨씬 빠르다디스크를 안 갔을 가능성write() 직후 전원이 꺼지면 데이터가 사라진다fsync를 안 했을 때DB는 O_DIRECT로 페이지 캐시를 우회하기도 한다이중 캐싱·일관성 이슈free -h에서 buff/cache가 수 GBOS가 남는 RAM을 I/O 캐시에 씀I/O 스택에서 ..

I/O 시스템

학습 목표장치 컨트롤러와 레지스터·로컬 버퍼가 CPU·메모리와 어떻게 연결되는지 설명할 수 있다.I/O 소프트웨어 계층(응용 → 시스템 콜 → 커널 I/O → 드라이버)을 설명할 수 있다.폴링·인터럽트·DMA 방식의 차이와 OS가 왜 DMA를 쓰는지 설명할 수 있다.블록·문자 장치와 장치 드라이버 역할을 구분할 수 있다.문제 상황read() 한 번에 디스크가 4KB를 읽는데 CPU는 다른 프로세스를 돌리고 있다CPU가 섹터마다 바이트를 옮기지 않는 이유는?NIC 패킷이 오면 인터럽트가 수천 번/초 — CPU 부하NAPI, 인터럽트 coalescing이 왜 필요한지USB 키보드와 NVMe SSD가 같은 read/write API인데 내부는 전혀 다르다드라이버가 장치별 차이를 흡수dmesg에 드라이버 로드·..

디스크 스케줄링

학습 목표탐색 시간(seek)·회전 지연(rotational latency) 이 디스크 I/O 지연에 미치는 영향을 설명할 수 있다.FCFS·SSTF·SCAN(엘리베이터) 디스크 스케줄링의 동작과 트레이드오프를 비교할 수 있다.디스크 스케줄러가 I/O 요청 큐를 어떻게 재정렬하는지 설명할 수 있다.RAID 레벨 0·1·5의 아이디어와 목적을 설명할 수 있다.문제 상황DB가 랜덤 read인데 디스크 utilization 100% — 탐색이 대부분헤드가 실린더를 왔다 갔다SSD로 바꿨더니 seek 개념이 달라졌다FTL·wear leveling — HDD 스케줄링과 구분RAID5 배열 하나 깨졌는데 rebuild 중 성능이 죽는다패리티 재계산 I/Oiostat -x의 await, svctm — 큐잉·서비스 시..

파일 시스템 개념

학습 목표OS가 파일·디렉터리로 저장 데이터를 추상화하는 방식을 설명할 수 있다.경로·디렉터리 트리와 메타데이터(inode) 역할을 설명할 수 있다.VFS(Virtual File System) 가 여러 파일 시스템을 통합 API로 보이게 하는 원리를 설명할 수 있다.마운트(mount) 로 하나의 디렉터리 트리에 여러 장치·FS를 붙이는 방식을 설명할 수 있다.문제 상황open("/var/log/app.log") — 디스크 어느 섹터인지 앱은 모른다OS가 이름 → 블록으로 변환USB를 꽂으면 같은 / 아래에 경로가 생긴다마운트컨테이너 안 /etc/hosts와 호스트가 다르다마운트 네임스페이스·별도 뷰ext4·NFS·tmpfs API가 비슷한데 구현은 전혀 다르다VFS가 공통 인터페이스메모리 파트를 마쳤다...