0

두 프로세스 P1 및 P2가 있다고 가정하십시오. P1은 우선 순위가 높고 P2는 우선 순위가 낮습니다. P1 및 P2는 하나의 공유 된 세마포어를 갖는다 (즉, 이들은 모두 동일한 세마포어상의 대기 및 포스트를 수행한다). 프로세스는 임의의 순서로 인터리빙 될 수 있습니다 (예 : P2는 P1 이전에 시작될 수 있음).Linux 및 Windows의 교착 상태 정보

간단히 때 프로세스가 교착 수 있는지 설명 :

II를. 두 프로세스 모두 리눅스 시스템에서 시분할 작업으로 실행됩니다.

iii. 두 프로세스 모두 Windows 7 시스템에서 변수 작업으로 실행됩니다.

iv. 두 프로세스 모두 Windows 7 시스템에서 실시간 작업으로 실행됩니다.

P1과 P2는 우선 순위 반전에서만 발생할 수 있다고 생각합니다. 교착 상태 요구 사항 중 하나 (순환 대기 : 다른 프로세스가 보유한 자원을 기다리는 두 개 이상의 프로세스의 순환 체인이 있음)에 따르면 우선 순위 반전은 교착 상태와 동일하지 않습니다. 게다가 P1과 P2는 오직 하나의 세마포어 만 가지므로 순환이 없으므로 절대로 교착 상태가 발생하지 않습니다. 따라서 모든 대답은 '아니오'입니다. 맞습니까? 그렇지 않다면 대답은 무엇입니까?

답변

0

정확합니다. 세마포어 하나만 있으면 교착 상태가 발생할 수 없습니다.

두 프로세스의 교착 상태는 P1이 P2에서 필요로하는 일부 리소스를 보유하고 P2가 보유한 리소스가 필요한 경우에만 발생할 수 있습니다. 따라서 P1은 P2가 자원을 해제하고 P2가 자원을 해제 할 때까지 진행할 수 없습니다. 따라서 그들은 둘 다 서로를 기다리지 만, 서로가 앞으로 나아갈 수는 없습니다. 이미 언급했듯이 circular wait condition은 하나의 세마포어로 수행 할 수 없습니다.

또한 P2가 리소스를 확보 할 때까지 대기하는 P1은 우선 순위 반전이 아닙니다. 우선 순위 반전은 Px가 P1과 P2 사이에서 우선 순위를 갖고 P1이 리소스를 해제하기 위해 대기하는 동안 P2가 Px를 기다리는 동안 우선 순위가 높아지기 때문에 발생합니다. 따라서 P1은 Px를 우선 순위가 낮아지기를 기다리지 만 (공유 리소스가 없거나 다른 것).