테마
운영체제
운영체제(operating system)는 CPU·메모리·저장 장치 같은 자원을 여러 프로그램이 안전하게 나눠 쓰도록 관리하는 프로그램이다. 서버가 느려지거나 멈추는 원인의 상당수가 프로세스(process)·스레드(thread)·메모리 관리에서 나오므로, 백엔드 기술면접에서 가장 자주 묻는 CS 분야다.
학습 순서
- 운영체제의 큰 그림 — 운영체제의 세 역할, 커널(kernel), 사용자 모드(user mode)와 커널 모드(kernel mode) (면접 비중: 높음)
- 운영체제의 큰 그림 2 — 시스템 콜(system call), 인터럽트(interrupt)와 예외, 커널 구조 (면접 비중: 높음)
- 프로세스와 스레드 — 메모리 구조, PCB(Process Control Block, 프로세스 제어 블록), 상태 전이, 문맥 교환(context switch) (면접 비중: 높음)
- 프로세스와 스레드 2 —
fork와exec, 스레드가 공유하는 것과 따로 가지는 것, 멀티프로세스와 멀티스레드(multithreading) (면접 비중: 높음) - 프로세스 간 통신 — 메시지 전달(message passing)과 공유 메모리(shared memory) 두 모델, 익명 파이프(anonymous pipe)·이름 있는 파이프(named pipe), 메시지 큐(message queue) (면접 비중: 중간)
- 프로세스 간 통신 2 — 소켓(socket)과 유닉스 도메인 소켓(Unix domain socket), 시그널(signal), 방식 비교와 선택 (면접 비중: 중간)
- 동기화 — 경쟁 상태(race condition)와 임계 구역(critical section), 뮤텍스(mutex)·세마포어(semaphore) (면접 비중: 높음)
- 동기화 2 — 스핀락(spinlock), 모니터(monitor)와 조건 변수(condition variable), CAS(Compare-And-Swap, 비교 후 교환), 생산자-소비자 문제(producer-consumer problem) (면접 비중: 높음)
- 교착 상태 — 교착 상태(deadlock)의 네 가지 필요조건과 자원 할당 그래프(resource allocation graph) (면접 비중: 높음)
- 교착 상태 2 — 예방·회피·탐지 후 회복·무시, 은행원 알고리즘(Banker's algorithm), 식사하는 철학자 문제(dining philosophers problem), 기아(starvation)와의 차이 (면접 비중: 높음)
- CPU 스케줄링 — 선점(preemption)과 비선점(non-preemption), 평가 기준, FCFS(First-Come First-Served, 선입 선처리)와 호위 효과(convoy effect) (면접 비중: 높음)
- CPU 스케줄링 2 — SJF(Shortest Job First, 최단 작업 우선)와 그 선점 버전, 우선순위와 에이징(aging), 라운드 로빈(round robin) (면접 비중: 높음)
- CPU 스케줄링 3 — MLFQ(Multilevel Feedback Queue, 다단계 피드백 큐), 리눅스 스케줄러(scheduler), 알고리즘 비교 (면접 비중: 높음)
- 가상 메모리와 페이징 — 가상 메모리(virtual memory)가 필요한 이유, 연속 할당과 외부 단편화(fragmentation), 페이징(paging)과 페이지 테이블(page table), 페이지 번호·오프셋(offset) 주소 변환 (면접 비중: 높음)
- 가상 메모리와 페이징 2 — TLB(Translation Lookaside Buffer, 변환 색인 버퍼), 다단계 페이지 테이블, 세그멘테이션(segmentation)과의 비교 (면접 비중: 높음)
- 요구 페이징과 페이지 교체 — 요구 페이징(demand paging), 페이지 폴트(page fault) 처리 흐름, 쓰기 시 복사(copy-on-write), FIFO(First In First Out, 선입선출)·최적(optimal)·LRU(Least Recently Used, 최근 최소 사용) 교체 (면접 비중: 높음)
- 요구 페이징과 페이지 교체 2 — 벨레이디의 모순(Belady's anomaly), 클럭 알고리즘(clock algorithm), 스래싱(thrashing)과 작업 집합(working set), 스와핑(swapping) (면접 비중: 높음)
- 파일 시스템 — 파일 시스템(file system)의 역할, 파일 디스크립터(file descriptor), 파일 할당 방식, inode(index node, 색인 노드)와 파일 이름의 분리 (면접 비중: 중간)
- 파일 시스템 2 — 하드 링크(hard link)와 심볼릭 링크(symbolic link), 저널링(journaling), 마운트(mount), 페이지 캐시(page cache)와
fsync(면접 비중: 중간)
