[취업을 위한 CS 지식] 18강. CPU 스케줄링
- CPU 스케줄링은 운영체제가 프로세스와 쓰레드에 CPU 자원을 배분하는 방법입니다. ⚙️
- 운영체제는 프로세스에 우선순위를 부여하며, 우선순위가 높은 프로세스가 CPU를 더 많이 할당받습니다. 👑
- CPU 활용률을 높이기 위해 입출력 집중 프로세스에 우선순위를 높게 설정하는 것이 효율적입니다. 📈
- 스케줄링 큐(준비 큐, 대기 큐)는 자원을 기다리는 프로세스들이 대기하는 곳입니다. 队列
- 선점형 스케줄링은 프로세스 실행 중에도 스케줄링이 가능하지만, 문맥 교환 오버헤드가 발생할 수 있습니다. 🔄
- 비선점형 스케줄링은 프로세스 종료 또는 대기 상태 전환 시에만 스케줄링이 이루어집니다. ⏳
- 대표적인 CPU 스케줄링 알고리즘으로는 선입선처리(FCFS), 최단 작업 우선(SJF), 라운드 로빈, 최소 잔여 시간 우선, 우선순위 스케줄링, 다단계 큐 스케줄링, 다단계 피드백 큐 스케줄링 등이 있습니다. 🧮
- 우선순위 스케줄링은 아사 현상(starvation) 문제가 발생할 수 있으며, 이를 해결하기 위해 에이징 기법을 사용합니다. 🤰
- 리눅스 운영체제는 다양한 스케줄링 정책(예: CFS 스케줄러)을 사용하며, 가상 실행 시간을 기반으로 스케줄링을 수행합니다. 🐧
- CFS 스케줄러는 프로세스의 가중치를 고려한 가상 실행 시간을 사용하여 공평한 CPU 시간 배분을 목표로 합니다.⚖️