리눅스/커널2013. 1. 13. 14:41

priority inversion :

현상:

높은 우선 순위의 태스크가 접근하려고 하는 공유자원을 낮은 우선 순의의 태스크가  이미 사용하고 있을 때, 중간 우선 순위에 해당하는 태스크가 수행되어 상위 우선 태스크를 수행하지 못하게 되는 현상


해결 방법:

낮은 우선 순위의 태스크의 우선 순위를 높은 우선 순위로 올려서 높은 우선 순위로 수행되게 하고 공유 자원을 시스템에 반환하도록 하면 그 후 높은 우선 순위의 태스크가 수행되게 된다.


뮤텍스관련 해결 방법

priority inheritance protocol: 뮤텍스를 획득한 낮은 우선 순위 태스크의 우선 순위를 임시로 뮤텍스를 요청한 높은 우선 순위 태스크의 우선 순위 값과 같게 오려준다.  변경된 태스크의 우선 순위는 뮤텍스 반환 동시에 본래의 값으로 돌아간다.

ceiling priority protocol: 태스크가 뮤텍스를 획득할 때 태스크의 우선 순위를 해당 뮤텍스를 사용할 가능성이 있는 태스크 중 가장 높은 우선 순위를 가진 태스크의 우선 순위로 변경한다.  뮤텍스가 반환될 때 태스크의 우선 순위는 본래 값으로 돌아간다.


'리눅스 > 커널' 카테고리의 다른 글

[안드로이드][커널]Unknown symbol _GLOBAL_OFFSET_TABLE_  (0) 2013.08.09
Kernel Oops의 Taint 종류  (0) 2013.07.25
monolithic vs microkernel  (0) 2013.01.13
VFS(1) -구조체-  (0) 2012.12.08
VFS(1) -추상적 레이어-  (0) 2012.12.08
Posted by code cat