検索
ホームページよくある問題デッドロックが発生するための必要条件

デッドロックが発生するための必要条件

Jul 22, 2019 pm 12:00 PM
デッドロック

デッドロックに必要な 4 つの条件

デッドロックが発生するための必要条件

相互排他条件: リソースは排他的かつ排他的に使用され、プロセスはリソースを相互に使用します。つまり、リソースは常に 1 つのプロセスによってのみ使用できます。他のプロセスがリソースを申請し、そのリソースが別のプロセスによって占有されている場合、申請者は占有者によってリソースが解放されるまで待機します。 (推奨される学習: MySQL ビデオ チュートリアル )

非剥奪条件: プロセスによって取得されたリソースは、使い果たされる前に他のプロセスによって強制的に剥奪されません。ただし、リソースを解放できるのは、リソースを取得したプロセスだけです。

リクエストと保持の条件: プロセスが必要なリソースの一部を申請するたびに、新しいリソースを申請しながら、割り当てられたリソースを占有し続けます。

ループ待機条件: デッドロックが発生した場合、P1 が占有されるリソースを待機しているプロセス待機キュー {P1, P2,...,Pn} が存在する必要があります。 P2、P2 は P3 が占有するリソースを待機しています。リソース、...、Pn は P1 が占有するリソースを待機し、プロセス待機ループを形成します。ループ内の各プロセスが占有するリソースは、別のプロセスによって申請されます。同時に、つまり、前のプロセスは、後のプロセスが占有しているリソースを占有します。

上記はデッドロックを引き起こす 4 つの必要条件を示していますが、システム内でデッドロックが発生している限り、上記 4 つの条件のうち少なくとも 1 つは当てはまります。実際、ループ待ちが成立するということは、最初の 3 つの条件が成立することを意味しており、列挙する必要はないと思われますが、これらの条件を考慮することは、デッドロックの発生を防ぐことができるため、デッドロックの防止に有益です。 4 つの条件のいずれかを破棄します。

デッドロックの防止

デッドロックの発生に必要な 4 つの条件を破ることでデッドロックを防ぐことができます。リソースの相互排他はリソース使用に固有の機能であるため、変更することはできません。

「不可分」状態の破棄: プロセスが必要なすべてのリソースを取得できない場合、プロセスは待機状態になります。待機期間中、プロセスが占有しているリソースは暗黙的に解放され、再度追加されます。システムのリソース リストは他のプロセスによって使用されており、待機中のプロセスは、元のリソースと新しく適用されたリソースを回復した場合にのみ再起動して実行できます。

「リクエストとホールドの条件」を破棄します。最初の方法は静的割り当てです。つまり、各プロセスは、実行開始時に必要なすべてのリソースに適用されます。 2 つ目は動的割り当てです。これは、各プロセスが必要なリソースを適用するときに、システム リソースを占有しないことを意味します。

「循環待機」状態を打破する: リソースの秩序ある割り当てを採用します。基本的な考え方は、システム内のすべてのリソースに順番に番号を付け、供給が不足していて希少なものには大きな番号を使用することです。リソースの場合は、番号付けに従う必要があります。プロセスは、より小さい番号を取得した場合にのみ、より大きい番号のプロセスを申請できます。

MySQL 関連の技術記事の詳細については、MySQL チュートリアル 列にアクセスして学習してください。

以上がデッドロックが発生するための必要条件の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。