Shine's dev log

프로세스 스케줄링_2 (starvation, preemptive) 본문

운영체제

프로세스 스케줄링_2 (starvation, preemptive)

dong1 2020. 5. 5. 15:10

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은 적을수록 좋다.

 

 

본 내용은 공부하며 정리한 것으로, 치명적인 오류가 있을 수 있습니다.