봉황대 in CS

[Chapter 6. 프로세스 동기화] 우선순위 역전 문제와 우선순위 상속 프로토콜 본문

Computer Science & Engineering/Operating System

[Chapter 6. 프로세스 동기화] 우선순위 역전 문제와 우선순위 상속 프로토콜

등 긁는 봉황대 2022. 7. 26. 12:11

* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.

 

 

공유 변수의 간섭 문제를 해결하기 위한 상호 배제 및 동기화 프로그래밍 수단으로는

뮤텍스(Mutual Exclusion, Mutex)와 세마포어(Semaphore)가 있다.

 

하지만 이 둘을 사용할 때는 우선순위 역전 문제가 발생할 가능성이 있다.

 

우선순위 역전 문제 (Priority Inversion Problem)


우선순위 역전 문제는

높은 우선순위 프로세스가 현재 공유 자원을 사용하고 있는 낮은 우선순위 프로세스를 기다려야 하는 경우에 발생한다.

 

 

T1, T2, T3 세 개의 프로세스가 있다고 하자. 이때 우선순위는 T1 > T2 > T3이다.

 

T1은 자원 r를 필요로 하고 있고, 현재 T3이 자원에 접근하고 있어

T1은 T3이 r의 사용을 마치고 그것을 방출할 때까지 대기해야 하는 상황이다.

 

만약 스케줄링이 일어나 T2가 T3을 선점하여 실행된다면

T2가 상대적으로 우선순위가 더 높은 T1의 수행을 지연하는 결과를 낳게 된다.

(T3이 T1에게 자원을 양도할 때까지 기다려야 하는 시간에 T2가 영향을 주게 됨)

 

 

우선순위 역전 문제의 기본적인 해결 방안에는 우선순위 역전 프로토콜이 있다.

 

우선순위 상속 프로토콜 (Priority-Inheritance Protocol)

더 높은 우선순위 프로세스가 필요로 하는 자원을 접근하는 모든 프로세스는 

1. 해당 자원의 사용이 끝날 때까지 더 높은 우선순위를 상속받게 된다.

2. 자원의 사용이 끝났을 경우 원래 우선순위로 되돌아간다.

 

 

위의 예시에 대입해보자면,

 

현재 T3이 자원 r에 접근하고 있는데, 더 높은 우선순위 프로세스인 T1이 해당 자원을 필요로 하여 대기하게 된 경우

T3이 T1의 우선순위를 내려받게 된다. 우선순위는 일시적으로 T3 > T2 > T1이 되는 것이다.

 

이에, 스케줄링이 일어났을 경우 우선순위가 T3보다 상대적으로 낮은 T2가 선택되지 못하기 때문에

T2가 T3을 선점하는 일은 일어나지 않는다.

 

따라서 T3이 계속 실행될 수 있고, 이 프로세스가 자원 사용을 마치게 되면

우선순위를 원래대로 되돌려(T1 > T2 > T3) T1이 바로 자원을 사용할 수 있게 된다.

 

 

즉, 우선순위를 일시적으로 변동하는 것을 통해

상대적으로 우선순위가 낮은 프로세스가 높은 프로세스보다 먼저 수행되는 경우를 아예 발생하지 못하게 만들어

우선순위가 높은 프로세스의 대기 시간에 영향을 주지 않게 하는 것이다.

 

 

 

반응형
Comments