dohun.log

[OS] 우선순위 역전 본문

Study/OS

[OS] 우선순위 역전

dohun31 2022. 6. 2. 15:43

아기 돼지 삼 형제가 있다. (서열: 첫째 > 둘째 > 셋째)

 

셋째 돼지가 배가 고파서 부엌으로 갔다. 프라이팬을 꺼내 요리를 시작한다.

 

그리고 첫째 돼지도 배가 고파 부엌으로 왔다. 첫째 돼지프라이팬을 사용하려고 하는데 프라이팬이라는 공유자원은 셋째 돼지가 이미 사용하고 있다.

첫째 돼지는 어쩔 수 없이 셋째 돼지가 프라이팬 사용이 끝날 때까지 기다려야 한다.

 

셋째 돼지는 다시 부엌으로 가 마저 요리를 한다.

 

이때 둘째 돼지도 배가 고파 부엌으로 왔다. 둘째 돼지냄비를 사용해서 국물 요리를 먹으려고 한다. 프라이팬은 사용하지 않아 셋째 돼지를 기다릴 필요가 없고, 셋째 돼지보다 서열도 높기 때문에 당당하게 셋째 돼지를 내쫓을 수 있다.

 

그래서 둘째 돼지셋째 돼지의 자리를 차지해 맛있는 요리를 하고 자리를 비켜주었다.

 

첫째 돼지는 여전히 셋째 돼지가 프라이팬을 다 사용하기만을 기다리고 있다.🫠

 

셋째 돼지는 다시 요리를 시작하고 드디어 요리를 완성했다!

 

이제야 아기 돼지 삼 형제 서열 1위 첫째 돼지는 요리를 할 수 있게 되었다.

우선순위 역전

우선 순위 역전

  아기 돼지 삼형제 task
1 셋째 돼지가 배가 고파서 부엌으로 갔다. 프라이팬을 꺼내 요리를 시작한다. task3이 공유자원 접근 위해 바이너리 세마포어 획득
2 첫째 돼지도 배가 고파 부엌으로 왔다. 스케줄러에 의해 task1이 수행 (문맥 교환)
3 후라이팬이라는 공유자원은 셋째 돼지가 이미 사용하고 있다.
첫째 돼지는 어쩔 수 없이 셋째 돼지가 후라이팬 사용이 끝날 때 까지 기다려야 한다.
task1은 task3이 획득한 세마포어를 얻으려 하고, task3이 그 세마포어를 반환할 때까지 waiting 상태
4 셋째 돼지는 다시 부엌으로 가 마저 요리를 한다. 스케줄러에 의해 task3이 수행
5 이때 둘째 돼지도 배가 고파 부엌으로 왔다. (냄비 요리 할 거임)
후라이팬은 사용하지 않아 셋째 돼지를 기다릴 필요가 없고, 셋째 돼지보다 서열도 높기 때문에 당당하게 셋째 돼지를 내쫓을 수 있다.
스케줄러에 의해 task2 수행.이 때, task1의 우선순위가 task2보다 높음에도 task2가 먼저 수행. 우선순위 역전
6 둘째 돼지는 셋째 돼지의 자리를 차지해 맛있는 요리를 하고 자리를 비켜주었다. task2 수행 종료 시 다시 task3이 수행
7 셋째 돼지는 드디어 요리를 완성했다! task3 세마포어 반납
8 서열 1위 첫째 돼지는 요리를 할 수 있게 되었다. task1 세마포어 획득 후 수행 완료

 

'Study > OS' 카테고리의 다른 글

[OS] 우선순위 상속 프로토콜  (0) 2022.06.02
Comments