학부 내용 정리/[ 2-1 ] 운영체제

[ OS ] 3. CPU Scheduling

haena02 2022. 4. 17. 04:59
반응형

1. CPU Scheduling

이제는 운영체제가 어떤 기준과 정책으로 스케줄링을 진행하는지에 대하여 이야기 해볼 것이다.

여러가지 정책을 공부하기위해 가정을 세워두고 조금씩 바꿔가며 설명할 것이다.

 

1.1 Turnaround time

Turnaround time = job이 생성된 시간 - 종료된 시간 (완성되는데 얼마나 걸렸냐)

Response time = job 이 도착한 시간 - 실행하기 시작한 시간 (얼마나 기다리게 했냐)

 

1.2 First In, First Out (FIFO)

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

위의 목록들을 가정하고 FIFO 정책을 따르면 아래 그림과 같이 프로세스가 실행된다

FIFO 정책은 선착순이라고 이해해도 될 것 같다.

각 프로세스의 Turnaround time 은 10, 20 , 30 이 되고 평균 Turnaround time 은 20이 된다.

하지만 각 작업은 동일한 시간동안 실행된다는 가정을 제거한다면 

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

 Turnaround time 은 100 110 120 가되고 평균  Turnaround time 은 110가 된다. 

효율이 되게 별로게 됐다.

 

 

1.3 Shortest Job First (SJF)

이 때는 SJF 정책이 이를 해결해줄 수 있다. 이 정책은 짧은 것부터 실행시키는 정책이다.

그럼 위와 같은 그래프가 나오고 이번 경우의  Turnaround time은 각 10 20 120 이 되고  평균 Turnaround time은 50이 된다.  

 

하지만 여기서 모든 작업은 동시에 도착한다는 가정을 지운다면

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

이와 같은 그림이 나온다. 이 그림은 A가 가장 먼저 도착하고 B,C가 한발 늦게 도착했을 때 효율이 너무 떨어진다는 문제점을 갖고있다. 이의 turnaround time은 103.33 이다.

 

 

1.3 Shortest Time-to-Completion First (STCF)

위의 문제를 해결하기 위해서는 '일단 시작이 되면, 각 작업이 완료될때까지 실행된다' 라는 항목을 지우면 된다.

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

그렇다면 다른 프로세스를 실행하기 위해 프로세스의 실행을 중지하고 컨텍스트 스위치를 진행해 효율적으로 운영할 수 있다.

A 프로세스가 실행중이었지만, B,C가 도착했을 때 다시 판단을 하여 짧은 것 부터 실행시켜준 그림이다.

이의 평균 turnaround time은 50이다. 하지만 Response time 은 3.33 으로 좋지 않다.

 

1.4 Round-Robin (RR)

이를 해결하기 위해 프로세스를 쪼개서 번갈아가며 스케줄링 하는 방법이 있다.

 

이것의 response time은 2이다. 하지만 turnaround 은 별로다.

위 그림은 time slice를 2로 설정한 그림이다. time slice는 얼마나 쪼갤것이냐에 대한 용어이고 이를 크기를 정할 때에는 응답시간과 컨텍스트 스위치의 절충이 있기 때문에 결정하기 어렵다.

 

1.5 Incorporating I/O

 

모든 작업이 CPU만 사용한다는 가정을 삭제해보겠다. 

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

그럼 프로세스가 I/O작업도 할거고 Disk에 가고 Block도 될 것이다. 한 프로세스가 dick에 갈 동안 다른 프로세스 작업을 한다면 더 효율적일 것이다.

 

 

1.6 모든 가정을 삭제 했을 때

  • 각 작업은 동일한 시간동안 실행된다
  • 모든 작업은 동시에 도착한다
  • 일단 시작이 되면, 각 작업이 완료될때까지 실행된다
  • 모든 작업은 CPU만 사용한다.
  • 각 작업의 실행시간을 알 수 있다.

총 작업시간을 모른다고 하면 SJF/STCF 은 사용하지 못한다. 그나마 쓸 수 있는 건 FIFO 와 RR 이다. 하지만 FIFO는 극 비효율적이므로 RR을 가장 많이 사용한다.

반응형

'학부 내용 정리 > [ 2-1 ] 운영체제' 카테고리의 다른 글

[ OS ] Address Spaces  (0) 2022.04.18
[ OS ] Multiprocessor Scheduling  (0) 2022.04.17
[ OS ] Multi-Level Feedback Queue  (0) 2022.04.17
[ OS ] 2. Limited Direct Execution  (0) 2022.04.17
[ OS ] 1. Processes  (0) 2022.04.17