CS 기초 · 심화
리눅스 커널의 Completely Fair Scheduler(CFS)는 공정성을 유지하면서도 처리량을 극대화하기 위해 어떤 핵심적인 원리들을 적용하고 있습니까? 특히, `vruntime`과 레드-블랙 트리를 활용한 스케줄링 큐 관점에서 CFS의 동작 방식을 심층적으로 설명해 주십시오.
힌트 · `vruntime`의 계산 방식, 각 태스크의 가상 실행 시간 관리, 그리고 레드-블랙 트리를 통한 효율적인 다음 실행 태스크 선택 과정을 중심으로 답변하십시오.
vruntime가상 시간레드-블랙 트리스케줄링 클래스나노초 단위 정밀도
모범답안
Completely Fair Scheduler(CFS)는 공정성과 처리량 극대화를 위해 몇 가지 핵심 원리를 사용합니다. 가장 중요한 것은 vruntime이라는 가상 실행 시간 개념입니다. 각 태스크는 CPU를 사용한 시간에 비례하여 vruntime이 증가하는데, 이 값이 작을수록 더 높은 스케줄링 우선순위를 갖습니다.
CFS는 모든 태스크를 레드-블랙 트리에 저장하여 스케줄링 큐를 관리합니다. 레드-블랙 트리는 균형 잡힌 트리 구조이므로, vruntime이 가장 작은 태스크(즉, 다음에 실행될 태스크)를 O(log n) 시간 안에 효율적으로 찾을 수 있습니다.
스케줄러는 항상 레드-블랙 트리에서 가장 왼쪽 노드(가장 작은 vruntime을 가진 태스크)를 선택하여 실행합니다. 태스크가 실행되면 vruntime이 증가하고, 다시 레드-블랙 트리에 삽입되어 자신의 위치를 찾습니다. 이러한 과정을 통해 CFS는 모든 태스크에게 공정한 CPU 시간을 할당하면서도 전체 시스템의 처리량을 높입니다. CFS는 나노초 단위의 정밀도로 작동하여 매우 세밀한 스케줄링이 가능합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 운영체제 면접 질문
- 운영체제의 CPU 스케줄링 알고리즘 중 라운드 로빈(Round Robin)과 우선순위(Priority) 스케줄링의 특징과 장단점을 비교 설명하고, 각각 어떤 종류의 시스템 환경에 적합한지 예를 들어 설명해주세요.
- 멀티스레드 환경에서 공유 자원에 대한 동시성 문제를 해결하기 위한 세마포어(Semaphore)와 뮤텍스(Mutex)의 차이점을 설명하고, 각각 어떤 상황에서 더 적합하게 사용될 수 있는지 구체적인 시나리오를 제시해주세요.
- NUMA(Non-Uniform Memory Access) 아키텍처 환경에서 애플리케이션의 메모리 접근 성능을 최적화하기 위한 OS 수준의 고려사항과 구체적인 전략에 대해 설명해 주십시오. 특히, 메모리 할당 정책과 스케줄링 관점에서 어떤 최적화 기법을 적용할 수 있을까요?
- 시스템의 물리 메모리가 고갈될 위기에 처했을 때, 리눅스 OOM Killer는 어떤 기준으로 프로세스를 선택하여 종료시키며, OOM Killer의 동작 방식이 애플리케이션의 안정성과 가용성에 미치는 영향은 무엇입니까? OOM Killer의 동작을 제어하거나 회피할 수 있는 OS 수준의 설정 및 설계 기법에 대해 논하시오.
- ZFS나 Btrfs와 같은 Copy-on-Write(CoW) 파일 시스템은 기존 저널링 파일 시스템과 비교했을 때 데이터 무결성, 스냅샷, 데이터 보호 측면에서 어떤 근본적인 장점과 단점을 가집니까? CoW 파일 시스템의 내부 동작 원리를 설명하고, 대규모 데이터 환경에서 CoW 파일 시스템을 효과적으로 활용하기 위한 설계 전략을 제시해 주십시오.
- 리눅스 커널의 다양한 I/O 스케줄러(예: Noop, Deadline, CFQ, MQ-deadline)는 각각 어떤 특성과 목표를 가지고 있으며, 특정 워크로드(예: 데이터베이스, 웹 서버, 가상화 환경)에서 최적의 성능을 얻기 위해 어떤 I/O 스케줄러를 선택하고 튜닝해야 하는지 구체적인 근거와 함께 설명해 주십시오.