スレッド、プロセス、マルチスレッド、相互排他、同期、デッドロック

1. まず明確にします: プロセス process > スレッド thread

プロセスとは、qq、WeChat、exe ファイルなど、メモリ内で実行されるアプリケーションです。

プロセスには独立したメモリ空間があり、プロセスには少なくとも 1 つのスレッドがあり、複数のスレッドを持つこともできます。スレッドはプロセスのメモリ空間を共有します。プロセスは人であり、糸は体の器官であることが理解できます。

2. プロセスはオペレーティング システムにおけるリソース割り当て基本単位であり、スレッドはプロセッサ タスクのスケジューリングと実行の基本単位です

3. プロセスは相互に影響しませんが、スレッドは相互に影響を及ぼします。1 つのスレッドのクラッシュが他のスレッドのクラッシュを引き起こし、その結果プロセスがクラッシュする可能性があります。

4. データはプロセス間で直接共有できず、サードパーティの通信プロトコルが必要です。スレッドはリソース データを直接共有できます。(たとえば、人々の間の情報交換、つまり記憶データの対話的な転送には、言葉、言語、身体動作の使用が必要です)

5. プロセスの切り替えには大きなオーバーヘッドがかかります。これは主に、各プロセスが独立したコードとデータ空間(プログラム コンテキスト) を持ち、プログラム間の切り替えにはこの情報の保存と復元が必要になるためです。これには、ページ テーブル グローバル ディレクトリの切り替え、カーネル状態スタックの切り替え、ハードウェア コンテキスト (レジスタ ステータスなど) の切り替えなどが含まれます。さらに、プロセスの切り替えによりプロセッサ キャッシュ (TLB など) も無効になり、多数のキャッシュ ミスが発生し、プログラムの実行効率が低下します。対照的に、スレッドは軽量プロセスと見なすことができます。同じタイプのスレッドはコードとデータ領域を共有します。各スレッドは独自の独立した実行スタックとプログラム カウンター (PC) を持ちます。スレッド間の切り替えのオーバーヘッドは比較的小さいです。

 6. Python のマルチスレッドは、本当の意味での同時実行を意味するものではなく、高速な交互実行を意味します。

7. マルチスレッドが必要な理由: 操作を容易にするため (やりたいことを同時に実行...)、ページ GUI を最適化し、操作効率を向上させる可能性があります。

8. マルチスレッドの欠点: スレッドの数が多いと操作に影響し、大量のメモリを必要とし、エラーが発生しやすく、デッドロックが発生します。

9. マルチスレッドを必要とするものに適しているもの: スレッド間の複雑な情報データ交換があまりなく、十分なメモリ容量があり、マルチスレッドで切符を販売できる (駅の複数の窓口で切符を販売するのと同様)

10. 不要な場合: 大量の複雑な情報とスレッド間でのデータ交換

11. 相互排他: 複数のスレッドが同じリソースにアクセスする必要がある場合、一定時間内に 1 つのスレッドだけが操作およびリソースへのアクセスを許可される必要があり、操作が完了すると、他のスレッドがリソースを読み取ることができます。スレッド相互排他と呼ばれます。簡単に言うと、服はその人にしか着られず、その人がその服を必要としない場合にのみ他の人が着ることができるということです。

12. 同期とは、特定のアクセス順序に従った相互排他(優先順位付き)です。たとえば、ある衣服では、A を着用し、次に B を着用し、次に C を着用する必要があります...

13. スレッドの基本ステータス: 準備完了、ブロック済み、実行中。

14. デッドロックとは、実行中に複数のプロセスがリソースの競合や通信を行うことにより発生するブロック現象のことで、外部からの力がなければ先に進むことができなくなります。このとき、システムがデッドロック状態にある、またはシステムがデッドロックに陥っているといい、このように常に待ち合っているプロセスをデッドロックプロセスと呼びます。

15. デッドロックの原因: プロセスのリソース割り当ての競合、間違った実行順序、無駄なリソースの使用制限

16. デッドロックの回避: システムは、システムが満たせるプロセスによって発行された各リソース要求を動的にチェックし、チェック結果に基づいてリソースを割り当てるかどうかを決定します。割り当て後にシステムがデッドロックする可能性がある場合は割り当てられません。割り当てられます。これは、システムがデッドロック状態にならないようにするための動的な戦略です。

16. デッドロックの防止: リソースの優先順位の設定、リソースの取得、

17. デッドロックが発生した後:デッドロックが存在するかどうかを検出し、適切な措置を講じ、発生したデッドロックをシステムから削除します。

バンカーのアルゴリズム: プロセスが待機状態にあるとき、プロセスが必要とするリソースを他のスレッドが占有することはできません。

Guess you like

Origin blog.csdn.net/qq_55906687/article/details/130653067