CPU 스케쥴링
- CPU(특히 여러 코어의 CPU)의 이용률을 극대화 하기위해 CPU사용 순서 혹은 규칙을 정하는 알고리즘
디스패처
- CPU 코어의 제어를 CPU 스케줄러가 선택한 프로세스에 주는 모듈
- 한 프로세스에서 다른 프로세스로 문맥을 교환하는 일
- 사용자 모드로 전환하는 일
- 프로그램을 다시 시작하기 위해 사용자 프로그램의 적절한 위치로 이동하는 일
선점(preemptive)와 비선점(nonpreemptive)
- cpu스캐쥴링에는 선점방식과 비선점 방식이 존재
- 선점 : 특정 프로세스가 작동중일 때 다른 프로세스가 CPU를 뺏어서 사용할 수 있는 방식
- 비전섬 : 특정 프로세스가 작동중일 때는 다른 프로세스가 CPU를 뺏지 못하고 원래 프로세스가 끝날때 까지 기다리는 방식
CPU스케줄링 종류
1. 선입 선처리 스케줄링 (First Come, First Serve)
- 먼저 요청하는 프로세스에 CPU를 할당 하는 것
- 비선점 방식
- 장점 : 기아 없는 공정한 알고리즘
- 단점 : 실행시간이 긴 작업이 앞에 있으면 대기시간이 길어진다
- ex)
2. 최단 작업 우선 스케줄링 (Shortest Job First Scheduling)
- 현재 대기 작업들 중 실행 시간이 가장 짧게 걸리는 작업을 우선적으로 처리하는 알고리즘
- 비선점 방식
- 장점 : 평균대기시간이 짧다
- 단점 : 실행시간이 긴 작업은 CPU를 받지 못하는 기아 상태에 빠질 수 있다.
- ex)
3. 라운드 로빈 스케줄링 (round robin scheduling)
- time quantum을 설정하고 먼저 들어온 작업 순서대로 time quantum 만큼 작업을 돌아가면서 함.
- 선점 방식
- time quantum이 너무 길어지면 FCFS와 똑같아 진다
- context swtich가 너무 자주일어나면 그로인한 비용이 커질 수 있다.
- ex)
4. 우선순위 스케줄링(Priority Scheduling)
- 특정 우선순위를 기준으로 순서대로 작업이 처리됨(우선순위가 같으면 FCFS 알고리즘 적용)
- 비선점 방식
- 우선순위가 계속 밀리는 경우가 발생하면 기아(starvation)발생 가능
-> 노화(aging)로 해결(오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 높이는 것)