2017-09-27 11 views
1

私はデッドロックが過去の熱心な研究課題であることを知っています。しかし、私は多くの最新のオペレーティングシステムを研究しましたが、今はデッドロックに関する大きな問題はありません。私はデッドロックがオペレーティングシステム自体によって厳密に管理されるいくつかのリソースを知っており、デッドロックをどこかで防ぐことができると思われます。私は、さまざまな設計原則を持つ一般的なシステムでは、他とは異なる扱いのリソースに関する多くの機能を知っていますが、それらはすべてデッドロックフリーです。最新のオペレーティングシステムでデッドロックが発生した場合は、

+4

Linux/Windowsのスレッドをデッドロックするのは難しくありません。次回Windows GUIアプリケーションを作成するときは、イベントハンドラにスレッドを作成してすぐに参加させてください。スレッドでは、終了する前にGUIスレッドにSendMessage()を呼び出します。 GUIスレッドは、スレッドが終了するまで、これ以上メッセージを処理しません。 SendMessage()呼び出しが戻るまで、スレッドは終了しません。デッドロック。 –

答えて

0

2つのミューテックスをプログラム内で使用し、最初のスレッドでは、mutex1、sleep(500ms)、mutex2、2番目のスレッド:mutex2、sleep(1000ms)、mutex1。

システム内。アプリケーションがSendMessageを使用し、ブロードキャストHWND_BROADCASTを使用しているWindows(8.1を含む)では、1つのアプリケーションがハングアップすると、アプリケーションもハング状態になります。また、DDE通信の一部の場合(一部のプログラムではShellExecuteを含む)、1つのアプリケーションが応答しない場合、アプリケーションはハング状態になる可能性があります。プロセスまたはスレッドが同期される場合、デッドロックが常に可能となります

しかし、あなたはSendMessageTimeoutを使用することができます...。プロセスとスレッドの同期は、アプリケーションの必須要素です。

AND ... SYSTEM-WIDEデッドロック(Windows): この操作を行う前に、すべての文書を保存してください。

Create HWND h1 with parent=0 or parent=GetDesktopWindow and styles 0x96cf0000 
Create HWND h2 with parent=h1 and styles 0x96cf0000 
Create HWND h3 with parent=h2 and styles 0x56cf0000 (here must be a child window). 
Use ::SetParent(h1, h3); 

これらのウィンドウのいずれかをクリックします。

システムは、周期的(三角形)の順序でウィンドウの順序を変更しようとします。アプリケーションが停止していますが、他のアプリケーションがSetWindowPosを使用しようとすると、アプリケーションはこの関数からより新しい戻り値を返します。タスクマネージャーは役立たず、Alt + Ctrl + Delも機能しなくなります。 CPU使用率100%...ハードリセットのみが役立ちます。

これを防ぐ可能性がありますが、この状況はできるだけ早く検出する必要があります。

0

オペレーティングシステムのデッドロックがまだ発生します。システムが競合リソースを制限している場合、デッドロックを再利用できない場合でも、それは可能です。

Linuxでは、I/Oが適時にリリースされないときに起こるカーネルストールを見てください。カーネルストールは、特に、VMwareとゲストオペレーティングシステムの間で興味深いものです。

外部の起動プログラムの場合、サンのシステムとネットワークに問題があるとデッドロックが発生します。

新しいリリースのデッドロックは、カーネルが成熟している間に、ユーザごとではなく、コミュニティ全体からかなり頻繁に発生します。

これまでにブルースクリーンが表示されたり、すぐに再起動されましたか?そのうちのいくつかはリソースの喪失が原因です。

カーネルはかなり成熟しており、リソースを再生するのにうまく行っていますが、完璧ではありません。

現代のリソースハンドラのほとんどは、ロック可能なオブジェクトではなくサービスとして提供される傾向があります。オペレーティングシステム内のほとんどのリソース共有は、別々のチャネルに依存し、重複の大部分を緩和します。共有バッファの競合を直接ロックするのではなく、キューとトグルの信頼性が高まります。これは、デッドロックの機会が少なくなるOSの部品や部品のトレンドの一般的なものですが、デッドロックの少ないシステムを保証する方法はありません。

関連する問題