CPU 스케줄링
JeongSeulho
2025년 01월 03일
준비중...
클립보드로 복사
스케줄링 목표
- 리소스 사용률 최대화
- 오버헤드 최소화
- 프로세스에게 자원 할당 공평화
- 처리량 최대화
- 요청 - 작업시작 간의 대기시간 최소화
- 응답시간 최소화
스케줄링 종류
- burst time : 프로세스가 CPU를 사용하는 시간
- time slice : 프로세스에게 부여된 CPU 할당 시간
- FIFO(First In First Out)
- 먼저 온 프로세스를 먼저 처리
- 평균 대기시간이 길어질 수 있음(burst time이 큰 프로세스가 먼저 점유해버리면 뒤에 프로세스는 오래 기다림)
- SJF(Shortest Job First)
- 짧은 burst time을 가진 프로세스를 먼저 처리
- 평균 대기시간이 짧음
- starvation 문제(burst time이 큰 프로세스는 계속해서 뒤로 밀릴 수 있음)
- burst time은 예측하기 어려운 경우가 다수
- RR(Round Robin)
- 시분할 시스템
- 각 프로세스는 동일한 크기의 CPU 시간을 할당받음
- 할당받은 시간이 지나면 다음 프로세스로 넘어감
- 시간이 너무 작으면 오버헤드(컨텍스트 스위칭)가 발생, 너무 크면 FIFO와 같은 효과
- MLFQ(Multi Level Feedback Queue)
- 가장 높은 우선순위 큐에 할당 이후 프로세스 종류에따라 아래 우선순위 큐로 이동
- 우선순위가 높은 큐
- time slice가 짧게
- 반응성을 높이기 위한 IO 작업이 주로 배치
- 우선순위가 낮은 큐
- time slice가 길게
- CPU 사용량이 많은 CPU 작업이 주로 배치
- 아래 큐로 이동하는 과정
- 짧은 time slice에서 계속해서 작업 완료전에 끊김
- CPU 중심 프로세스임을 확인
- time slice를 늘려주는 아래 큐로 이동
- IO 중심 프로세스는 작업 완료전에 IO 인터럽트로 끊김 => 내려가지 않고 높은 우선순위의 짧은 time slice에서 높은 반응성 가짐