우선순위 역전 문제...


위의 이미지는 http://www.netrino.com/node/74 에서 인용함.

CPU 스케쥴링 끝났다고 좋아했는데, Priority Inversion 문제가 책에 적혀있더군요. -_- 물론 Priority Inheritance도 언급을 하고 넘어가면 좋겠지만, 추석 기간내에 메모리 문제까지는 끝내두고 싶어서 일단 Priority Inversion 문제에 대해서만 이야기를 하고 넘어갑니다.

생각해보니 우선순위에 대한 설명이 좀 빈약했던 것 같은데, 정 부족하다 싶으면 나중에 보충자료 올리죠.

위의 Figure를 참고하면, Task L이 작업을 진행하고 있는데, 우선순위가 더 높은 Task H가 들어옵니다. 그런데 Task H는 Task L의 자원을 사용할 것을 필요로 합니다. 또한 해당 자원은 Task L이 Lock을 걸어버린 상태입니다. 그렇기 때문에 Task H는 기다리는데, 도중에 Task M이 들어옵니다. 따라서 Task L의 작업은 중단되고 Task M이 작업을 마무리할 때까지 그냥 무작정 기다리기만 합니다. 여기에서 생겨나는 문제점은 실제 운영체제에서 이러한 우선순위는 위의 Figure처럼 단순히 3가지로 나타나는 것이 아니라, 수십가지로 표현이 되곤 한다는 것입니다. 그리고 Task L이 가장 낮은 우선순위라고 가정하고 Task H가 가장 높은 우선순위라고 가정합니다.

그러면 Task H는 Task M보다 우선순위가 높은데도 불구하고, 우선순위가 역전되어 무작정 기다려야 하는 상황이 발생합니다. 이를 해결하는 방법이 Priority Inheritance인데, 이에 대해서는 추후에 보충을 하도록 하겠습니다. (메모리로 달려야 하는 마음이 급해서.. -_-)
저작자 표시 비영리 변경 금지
신고

'Theory > CA & OS' 카테고리의 다른 글

OS, Swapping  (0) 2011.09.13
OS, Memory Relocation  (0) 2011.09.12
OS, Priority Inversion  (0) 2011.09.12
OS, Deadlock  (0) 2011.09.12
OS, Semaphore and Mutex  (2) 2011.09.12
OS, Synchronization  (0) 2011.09.12
by 가우초 2011.09.12 18:25
| 1 |

티스토리 툴바