티스토리 뷰

  [MicroC/OS-II] CPU Scheduling with Non-Preemptive에 이어서 살펴보겠습니다. 


2. Preemptive (선점방식)

  Preemptive은 한 Process가 실행 중일때 다른 Process가 CPU를 사용할 수 있습니다. 2가지의 예를 살펴보겠습니다.


ㄱ) Round Robin

  이름 그대로 뱅뱅 돈다고 생각하시면 됩니다. 이전 예제와 같은 Process와 실행 시간이 다음과 같이 있습니다.

  Preemptive 방식인 Round Robin에는 한가지가 더 추가됩니다 바로 time quantum 입니다. time quantum이 지나면 다른 process에 CPU를 주게됩니다. 위의 예제에 time quantum = 2의 시간을 주고 결과를 살펴보았습니다.

  평균 응답 시간을 구해보면 ( 9 + 10 + 30)/3 = 16.3333.. 이 나옵니다. 따라서 앞선 Non-Preemption의 FCFS(First Come First Serve)보다 빠른 결과를 얻게 되었습니다. 이 때 SJF(Shortest Job First) 보다는 느려졌지만 대신 indefinite starvation 상태가 일어나지 않으므로 큰 효율을 얻을 수 있다고 볼 수 있습니다. 다음으로 Priority-based scheduling에 대해서 보겠습니다.


ㄴ) Priority-based Scheduling (우선 순위 스케쥴링)

  앞서 Process에 대해서 살펴볼때 Priority는 다 다른 값을 가지고 있다고 알아보았습니다. Priority가 높을 수록 우선 순위가 높다는 말이므로 Priority가 높은 Process부터 처리를 하는 겁니다. 앞의 Round Robin과 연결해 살펴보면 Round Robin은 Priority가 같은 곳에서 사용한다고 생각하면 좋은 효율을 나타낼 수 있을 겁니다. 다시 Priority와 관련지어보면이러한 Priority에는 다시 2가지의 형태가 있습니다.


a) Static Priority

  Priority가 바뀌지 않습니다. 따라서 가장 높은 Priority를 처리하므로 indefinite starvation이 발생하게 됩니다.


b) Dynamic Priority

  Prioirty가 바뀔 수 있습니다. 이를 통해 중요한 Process에 Priority를 높게 줌으로서 indefinite starvation을 예방 할 수 있습니다.  



'운영체제' 카테고리의 다른 글

[OS] Deadlock의 조건  (0) 2017.05.12
[OS] DeadLock  (0) 2017.05.11
[MicroC/OS-II] CPU Scheduling with Non-Preemptive  (0) 2017.04.23
[MicroC/OS-II] OS_TCBInit  (0) 2017.04.23
[MicroC/OS-II] OSTaskStkInit  (0) 2017.04.23
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday