中断差がブロックされました

スレッドとプロセスをブロック

      スレッド何らかの理由でスレッドの機能がブロックされ、ブロックされた状態が走行中に発生している:、ポーズをCPUの使用を放棄するスレッドだけ排除の原因になるまでブロックされた後に運転を再開する前に、。あるいは他のスレッドによって中断され、スレッドがブロックされた状態を終了しますが、例外:InterruptedExceptionをスローします。

       処理を実行する(等I / O要求を、アプリケーション・バッファの障害、など)いくつかの時間により続行一時的にできなく起こります。この原因プロセススケジューリングでは、OSは別のものを処理する準備ができており、サスペンド状態でブロックされたプロセスをさせ、この状態は、一般的にブロッキングステートと呼ばれるプロセッサに割り当てられます。

プロセスがハング

      サスペンド処理が一時的プロセスから排除されているオペレーティング・システム・メモリ内に定義することができ、マシンのリソースが処理されているいくつかは十分なリソース、合理的な配置のメモリにオペレーティング・システム・プログラムの非存在下で、限定されます条件が許す時に一時的にメモリから削除、オペレーティングシステムがレディ状態は、システム、一定の期間にわたり何も動作しないことを実行されるのを待っている状態を再入力し、再びメモリに戻って転送されます

共通: 
           1.プロセスが中断されている 
            プロセスであるCPUを解放します。2. 2つのプロセスは、コンテキストスイッチを伴うだろう

相違点: 
           1. システムリソースが異なる占める全CPUの解放が、しかし「スワッピング」技術によって中断処理は、外部記憶装置(ディスク)にスワップアウトされている間ブロックされたプロセスは、メモリに残っています:。 
           2. 発生タイミングの違い:障害物がプロセス内のリソース(IOリソース、セマフォなど)を待っている間に、一般的に発生し、そしてユーザーとシステムのニーズが原因で中断し、例えば、エンドユーザーは、その研究プログラムの実施を中断したり、それを変更する必要があります、OSのプロセスは、メモリの使用率の必要性を改善するために実行することが一時的にできなくする(またはレディキューのブロッキングの過程で)ディスク起動する 
           3.を異なるタイミングを回復:障害物を資源待ちで会ったことが後にのみ(例えば、ロックを受けました)彼らは、スケジュールして実行されるのを待って、準備完了状態になり、プロセスが(例えばユーザーなど、システム)は、そのオブジェクトの保留中に懸濁され、その活性な活性化(エンドデバッグ、選択されたスケジューリング処理を再実行する必要がある)のタイミングに沿って
 

ブロックの理由:スレッドをブロックし、ソケットのクライアントを遮断する、ソケットサーバーを遮断します

一般的なスレッドブロック:

        。Aは、スレッドは、スレッド実行SLEEP、現在のスレッドがしばらくの間、睡眠をCPUを放棄して、実行を再開するための方法;(int型millsecond)を

        Bは、スレッド同期コードの実装を、しかしにも関連する同期ロックを取得することができないだけで実行するために戻るには、同期ロックを取得するまで、ブロックされた状態に入ることができ、。

        C、スレッドは実行オブジェクトのウェイト()メソッドを直接遮断状態に、他のスレッドの実行を通知するために(待ち)又はのnotifyAll()メソッド。

        Dは、スレッドがいくつかの実行IO動作をブロッキング状態に関連するリソースを待っているので、。例えば、system.inを聞いて、まだ入力キーボードを受信していない場合、ブロックされた状態になります。

ブロックソケットクライアント:

        A、サーバ接続要求、connectメソッドを呼び出して、接続が成功するまで、ブロックされた状態になります。

        Bは、データが十分なデータを読み込む前に、入力ストリームソケットから読み取られるときに遮断状態となります例えば、データの行の非存在下で、のreadLine BufferedReaderのクラス()メソッドを使用して遮断状態になり、データ量が十分考慮されていない、読み出されます。

        C、ソケット遅延を閉じるソケットsetSoLingerコール()メソッドは、ソケットのクローズ方法を行う際に、ブロッキング状態に入り、下にあるソケットの認識は、残りのすべてのデータの送信完了しました

ソケットサーバーは、ブロッキング:

        A、のServerSocketの実行のスレッド()メソッド受け入れるそれはクライアントへの接続を受信するまで、接続のクライアントを待つ、それはソケットオブジェクトメソッドから受け付け返します

        B、ストリームデータは、ソケットの入力から読み込まれたときに入力ストリームが十分なデータでない場合、それは、ブロッキング状態になります

        D、データのスレッドバッチを出力ストリームに書き込まれ、ソケットがブロック状態に入ることができます

        プログラムがブロックされている場合、人々はプルにするために非ブロック方式の操作したいので、それは、プログラムの効率が低下します。    

        操作が待機操作の準備ができているブロックせずに、すぐに戻る準備されていない場合、スレッドは、これらのメソッドの実装を指し、いわゆる非ブロック方法。java.nioでは、これらのクラスの非ブロッキング通信を提供します。

保留理由

(1)エンドユーザーの要求エンドユーザーは、不審な質問の発見時にプログラムを実行するとき、私はまだダウン彼らのプログラムを作るために一時停止します。つまり、プロセスが実行を中断するために実行され、この時点でのユーザー・プロセスが実行せずにレディ状態にある場合、プロセスは、プログラムをユーザーの実装を検討または変更するためには、派遣を受け入れることはありません。私たちは、この定常状態になると呼んで「保留します」。

(2)親プロセスの要求。時々私は子プロセスを検査し、修正するために、親、子プロセスを保留にしたい、またはプロセスの子供たちとの活動の調整。
(3)は、負荷調整を必要とします。リアルタイム・システムのワークロードが重いときは、リアルタイムタスクの制御に影響を与えたかもしれない、システムが正常に動作できるシステムを確保するために、いくつかの重要なプロセスをハングすることがあります。
(4)は、オペレーティングシステムを必要とします。オペレーティングシステムは、リソース使用量や課金の動作を確認するために、特定のプロセスを中断することが望ましい場合があります。
(5)それらを交換する必要性を。メモリ緊迫した状況のプロセスを容易にするためには、のメモリは、外部メモリへの変更を阻止しました。

画像解釈の違いを保留し、ブロックする、システムのスリープを操作します:


     最初のためにこれらの用語は、あるスレッドがです。あなたのようなスレッドの制御はあなたのために雇われ仕事を制御します。あなたは、達成するためのプログラミングを制御することにより雇われています。

     サスペンドあなたが労働者に言うためのイニシアチブを取ることを意味したスレッドを、:「あなたが取りに行くためのイニシアチブを取り、その後、仕事に行ったときあなたはあなたと私と一緒に眠りに行きます。」

     スレッドの睡眠は、あなたが労働者に言うためのイニシアチブを取ることを意味:「レポートは瞬間が来たときには、スリープ状態にし、仕事に行ってきました。」

     スレッドのブロッキング手段は、あなたが突然、あなたの従業員はあなたの許可、ご自分のベッドずに何時に知っていないことが判明していることですが、労働者を責めることはできない、労働者はあなたが床を掃除しましょう必要があるため、結果のほうきは、隣人を盗まれたり借り行く、私は彼がスリープ状態に持っていた、他の労働者が生きて乾燥させ続けるようになってきました。労働者がほうきの背中を見つけたら、ほうきバックについては、従業員が、心配しないで、仕事に続行されません、分からないだろう、彼は彼自身がで仕事に行くだろう。よく訓練された労働者のため。研修機関は、オペレーティングシステムです。

 

 

 

公開された57元の記事 ウォン称賛36 ビュー60000 +

おすすめ

転載: blog.csdn.net/hqy1719239337/article/details/100543307