프로세스 상태
- 생성 create : 프로세스가 생성되는 중
- 실행 running : 프로세스가 프로세서를 차지하여 명령어들이 실행 중
- 준비 ready : 프로세스가 프로세서를 사용하고 있지 않지마녀, 언제든 사용할 수 있는 상태. CPU 할당 대기
- 대기 waiting : 프로세스 입출력 완료, 시그널 수신 등 어떤 사건을 기다리는 상태
- 종료 terminated : 프로세스 실행 종료
운영체제는 준비 큐, 대기 큐 등 자료구조를 두어 프로세스 관리.
선점 preemptive, 비선점 non-preemptive
프로세스 스케줄링이 일어나는 경우
1. 프로세스가 실행 상태에서 대기 상태로 전환
2. 프로세스가 실행 상태에서 준비 상태로 전환
3. 프로세스가 대기 상태에서 준비 상태로 전환
4. 프로세스 종료
프로세스 스케줄링이 1, 4만 일어나면 비선점 스케줄링
프로세스 스케줄링이 모든 경우에서 일어나면 선점 스케줄링
스케줄링 알고리즘
기준
- CPU 이용률
- 처리율 : 완료 프로세스 개수 / 단위 시간
- 소요시간 : 프로세스 요청 후 완료까지 걸린 시간
- 메모리 접근 시간 + 대기 큐에서 대기 시간 + CPU에서 실행 시간 + I/O 시간 등
- 대기시간 : 대기 큐에서 기다리는 시간의 합
- 반응시간 : 프로세스 요청 후 첫 번째 응답 받기까지 걸리는 시간
비선점 스케줄링
FCFS First Come First Served
- 먼저 CPU를 요청한 프로세스가 먼저 CPU를 배정
SJF Shortest Job First
- 버스트 시간이 짧은 프로세스부터 CPU 할당
- CPU 한차례 사용시간 (CPU burst time)이 작은 프로세스부터 먼저 끝냄
선점 스케줄링
- 높은 우선순위를 가지는 프로세스가 항상 먼저 스케줄 되어야 함.
- I/O-bound process 는 CPU-bound process보다 반드시 높은 우선순위에 있어야 함.
- Time slice의 양은 CPU burst time보다 조금만 더 많아야 함.
- time slice가 적으면 불필요한 context switch 많이 발생
- time slice가 훨씬 크면 I/O일어날 때 CPU 반납하거나, 다른 프로세스는 CPU에 굶주리는 현상 발생
- Real-time 프로세스는 다른 프로세스에 비해 매우 높은 우선순위 가짐
SRT Shortest Remaining Time
- 최단 잔여 시간을 우선으로 함.
- 프로세스 실행 중이어도 짧은 프로세스 먼저 할당
RR Round Robin
- Time Sharing System 을 위해 설계
- 모든 프로세스는 같은 우선순위를 가지고, time slice를 기반으로 스케줄링
Priority Scheduling 우선순위 스케줄링
Multilevel Queue 다단계 큐 스케줄링
- 우선순위 스케줄링 + 라운드 로빈 스케줄링
- 우선순위가 각 프로세스에 정적으로 할당, 각 큐는 자체 스케줄링 랑고리즘 구현
- 프로세스가 시스템 진입 시 영구적으로 하나의 큐에 할당
Multilevel Feedback Queue 다단계 피드백 큐 스케줄링
- 프로세스가 큐들 사이를 이동하는 것 허용. Aging, Starving 예방
https://velog.io/@klm03025/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-Context-Switching%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81