OSTEP 40 File System Implementation
vsfs로 살펴보는 아이노드와 멀티 레벨 인덱스, 비트맵과 슈퍼블록, 파일 읽기·쓰기 흐름
주제
글 30개
vsfs로 살펴보는 아이노드와 멀티 레벨 인덱스, 비트맵과 슈퍼블록, 파일 읽기·쓰기 흐름
RAID 0·1·4·5의 스트라이핑, 미러링, 패리티 구조와 용량·신뢰성·성능 trade-off
트랙과 섹터, 탐색 시간과 회전 지연으로 계산하는 I/O 시간, 그리고 디스크 스케줄링
메모리·I/O 버스 구조와 폴링, 인터럽트, DMA, 장치 드라이버로 운영체제가 장치를 다루는 방식
원자성·순서 위반 같은 비교착 상태 오류와 교착 상태의 발생 조건, 예방과 회피 방법
쓰레드 대신 이벤트 루프와 select로 동시성을 다루는 방식, 블로킹 시스템 콜과 비동기 I/O 문제
조건이 맞을 때까지 쓰레드를 재우는 wait과 signal, 생산자·소비자 문제에서 if 대신 while을 쓰는 이유
락과 컨디션 변수를 모두 대신하는 세마포어, 생산자·소비자와 Reader-Writer 락, 식사하는 철학자
주소 공간을 공유하는 쓰레드, 제어 없는 스케줄링이 만드는 경쟁 조건과 원자성이 필요한 이유
POSIX pthread의 쓰레드 생성과 종료, 락과 컨디션 변수, 컴파일과 실행 방법
상호 배제를 위한 락, 거친 락과 세밀한 락, test-and-set과 compare-and-swap 같은 구현 방식
카운터, 연결 리스트, 큐, 해시 테이블에 락을 더할 때의 정확성과 확장성 trade-off
더 큰 페이지, 페이징과 세그먼트 혼합, 멀티 레벨·역 페이지 테이블로 테이블 크기 줄이기
메모리가 부족할 때 페이지를 디스크로 내보내는 스왑 공간, present bit와 페이지 폴트 처리
최적 교체부터 FIFO, Random, LRU와 그 근사까지 워크로드별로 비교한 페이지 교체 정책
분할과 병합, 빈 공간 리스트 내장, best·worst·first fit 같은 빈 공간 관리 전략
고정 크기 페이지로 나누는 페이징, 페이지 테이블의 위치와 내용, 그리고 너무 느린 이유
주소 변환 캐시 TLB의 hit와 miss, 누가 미스를 처리하는지, 문맥 교환과 교체 정책 문제
stack과 heap, malloc과 free, 할당을 잊거나 부족하게 받거나 해제하지 않는 흔한 메모리 오류
base/bounds 레지스터로 가상 주소를 물리 주소로 바꾸는 동적 재배치와 하드웨어·운영체제의 역할
세그먼트마다 베이스/바운드를 두는 주소 변환, 거꾸로 자라는 스택과 공유, 외부 단편화 문제
티켓 비율만큼 CPU를 나눠 주는 비례 배분 스케줄러, 티켓 화폐·양도·팽창과 stride scheduling
캐시 일관성과 버스 스누핑, 캐시 친화성, 단일 큐와 멀티 큐 스케줄링의 장단점
멀티프로그래밍과 시분할에서 나온 주소 공간 추상화, 투명성·효율성·보호라는 세 가지 목표
실행 중인 프로그램으로서의 프로세스, 주소 공간과 레지스터 상태, 생성 과정과 상태 전이
FIFO, SJF, STCF, Round Robin을 반환 시간과 응답 시간이라는 두 기준으로 비교
fork, wait, exec 시스템 콜이 왜 이렇게 나뉘어 있는지, 쉘과 파이프에서 쓰이는 방식
제한적 직접 실행, 사용자·커널 모드와 trap, 타이머 인터럽트로 되찾는 제어권과 문맥 교환
실행 시간을 모르고도 반환·응답 시간을 함께 줄이는 MLFQ, 우선순위 하향과 주기적 상향 조정
OSTEP 원서와 한국어 번역, KAIST 강의 자료 링크 모음