Blocking (computing) とは

計算において、プロセスは実行されているコンピュータプログラムのインスタンスである。プロセスは常に正確に1つのプロセス状態で存在します。ブロックされるプロセスは、リソースが使用可能になったり、I / O操作が完了したりするなど、何らかのイベントを待っているプロセスです。
マルチタスクコンピュータシステムでは、個々のタスクまたは実行スレッドは、システムのリソースを共有しなければならない。共有リソースには、CPU、ネットワークおよびネットワークインターフェイス、メモリおよびディスクが含まれます。
1つのタスクがリソースを使用している場合、他のタスクがリソースにアクセスすることは一般的に不可能であり、望ましくない。このような同時使用を防止するために相互排除の手法が使用されています。他のタスクがブロックされると、最初のタスクが共有リソースの使用を終了するまで実行できません。
プログラミング言語とスケジューリングアルゴリズムは、オーバーオールエフェクトブロッキングを最小限に抑えるように設計されています。ブロックするプロセスは、ローカル作業タスクの進行を妨げる可能性があります。この場合、「ブロッキング」はしばしば望ましくないと見なされます。ただし、このような作業タスクは、スケジューリングが続行されるため、他の作業に影響を与えないか、ほとんど影響を与えない独立したプロセスに割り当てることができます。一例は、チャネルのセマンティクスの一部である他の部分(ポーリングやスピンループなし)を受動的に待つ「チャネル上でのブロック」です。正しく設計されたものは、反応系を実現するために使用することができます。
デッドロックとは、プロセスが病理学的にお互いを円で待つことを意味します。したがって、それはブロッキングに直接関連していません。
プロセスが待機している(「ブロックされている」)イベントが発生すると、プロセスはブロックされた状態から実行可能な状態などの差し迫った状態に進みます。