2017-01-14 16 views
0

P1とP2の2つのプロセスがあるとします。 P1の優先度が高く、P2の優先度が低い。 P1およびP2は、1つの共有セマフォを有する(すなわち、それらは共に同じセマフォ上の待機およびポストを実行する)。プロセスは、任意の順序でインターリーブすることができる(例えば、P1の前にP2を開始することができる)。LinuxおよびWindowsのデッドロックについて

II:

簡単に説明する際のプロセスがデッドロックすることができるかどうかについて説明します。両方のプロセスがLinuxシステム上で時分割タスクとして実行されます

iii。両方のプロセスは、Windows 7システム上で可変タスクとして実行されます。

iv。両方のプロセスがWindows 7システム上でリアルタイムタスクとして実行されます。

私はP1とP2が優先順位の逆転のみを引き起こすと考えています。デッドロックの要件の1つ(循環待ち:2つ以上のプロセスの循環チェーンが存在し、他のプロセスが保持するリソースを待っている)によると、優先順位逆転はデッドロックと等しくありません。さらに、P1とP2には1つのセマフォしかありません。つまり、循環がないことを意味します。したがって、デッドロックは発生しません。したがって、すべての答えはいいえになります。 これは間違いありませんか?そうでない場合、答えは何ですか?

答えて

0

正しいですが、1つのセマフォだけでデッドロックは発生しません。

2つのプロセスのデッドロックは、P1がP2で必要とされるリソースをいくつか保持し、P2が保持するリソースを必要とする場合にのみ発生します。したがって、P2はリソースを解放し、P1はリソースを解放するまでP2を処理することができません。したがって、彼らはお互いに待っているが、お互いを前方に動かさないようにしている。すでに述べたように、1つのセマフォでcircular wait conditionを実行することはできません。

また、P2がリソースを解放するのを待っているP1は、優先度逆転ではありません。 PxがP1とP2の間で優先順位を持ち、P1がリソースを解放するのを待っているときにP2がPxを待っているときに優先順位が逆転します。だから、P1はPxの優先度が低い(共有リソースや他の何もない)のではないにもかかわらず、Pxを待ちます。

関連する問題