Shine's dev log
프로세스 스케줄링_2 (starvation, preemptive) 본문
1. starvation
프로세스 스케줄러는 ready queue에 있는 여러 프로세스들에게 돌아가면서 illusion을 제공해준다.
하지만 모종의 이유때문에 특정 프로세스가 계속해서 CPU에 올라가지못하는 경우가 발생하는데 이 경우를 starvation 이라고 한다.
잘못된 스케줄링 정책으로 인해 starvation이 발생할 수 있다.
2. preemptive scheduling
1) Non-preemptive scheduling
- 어떤 프로세스를 CPU에 올렸을 때, 스스로 반환할 때까지 얌전히 기다리는 스케줄러
- jobs들이 협력하여 동작한다.
2) preemptive scheduling
- 어떤 프로세스가 CPU를 쓰고 있더라도, 상황에 따라 빼았아가는 스케줄러
- shared data를 updating하고있던 중이거나, system call을 처리중에 갑자기 빼았기면 문제가 발생할 수도 있다.
3. 스케줄링 알고리즘의 목표
스케줄러는 다음과 같은 목표들을 달성해야 한다.
1) starvation이 없도록
2) Fairness : 각각의 프로세스들에게 CPU를 공평하게 제공하도록
3) Balance : 컴퓨터 시스템의 모든 부분이 효율적으로 돌아가도록 (최대한 쉬는 곳 없이 바쁘게 돌아가도록)
4. Scheduling criteria
1) CPU utilization
- CPU를 얼마나 많이 쓸 것인가
- 무조건 팍팍 많이 쓸수록 좋은것이다.
2) Throughput
- 단위시간당 "처리완료"된 task의 양
- 역시 높을수록 좋은것.
3) turnaround time
- 특정 task가 시작해서 완료되는데 걸리는 총 시간
- 적을수록 좋은것.
4) waiting time
- 프로세스가 ready queue에서 기다리는 시간
- 총 대기시간의 합산
- 적을수록 좋은것.
5) response time
- 특정 task가 시작해서 처음 execution하기 전까지의 시간.
오늘 배운 내용을 정리해보면,
1. starvation이란 어떤 프로세스가 계속해서 CPU를 할당 못받는 경우이다.
2. preemptive scheduling은 실행중인 프로세스를 맘대로 뺐을 수 있는것, Non-preemptive scheduling은 프로세스가 실행끝날때까지 기다리는 스케줄링이다.
3. CPU utilization, throughput은 높을수록, turnaround time, waiting time, response time은 적을수록 좋다.
본 내용은 공부하며 정리한 것으로, 치명적인 오류가 있을 수 있습니다.
'운영체제' 카테고리의 다른 글
프로세스 스케줄링_4 (Real-time System) (0) | 2020.05.13 |
---|---|
프로세스 스케줄링_3 (FCFS, SJF, SRTF) (0) | 2020.05.07 |
프로세스 스케줄링_1 (0) | 2020.05.04 |
쓰레드(Thread)_3 (Issues in Threading) (0) | 2020.04.28 |
쓰레드(Thread)_2 (multi threading models) (0) | 2020.04.27 |