Skip to content

운영체제 ​

운영체제(operating system)는 CPU·메모리·저장 장치 같은 자원을 여러 프로그램이 안전하게 나눠 쓰도록 관리하는 프로그램이다. 서버가 느려지거나 멈추는 원인의 상당수가 프로세스(process)·스레드(thread)·메모리 관리에서 나오므로, 백엔드 기술면접에서 가장 자주 묻는 CS 분야다.

학습 순서 ​

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