オペレーティング システムに関する注意事項 -- プロセスとスレッド

1 -- プロセス

1-1 -- プロセスの定義

        プロセスは、データ セットに対する特定の独立した機能を持つプログラムの動的実行プロセスを表します。

1-2--プロセスの構成

        プロセスは次の部分で構成されます: ① プログラムのコード; ② プログラムによって処理されるデータ; ③ 次に実行される命令を示すプログラム カウンタの値; ④ 共通レジスタ セットの現在の値、ヒープとスタック; ⑤ グループ システム リソース; 要するに、実行中のプログラムのすべての状態情報を処理します。

1-3--プロセスとプログラムの関係

プロセスは、プログラムに対して次の関係があります。        

        ① プログラムは、プロセスを生成するための基礎です。

        ② プログラムの各実行は、異なるプロセスを構成します。

        ③プロセスはプログラム機能の具体化です。

        ④ 多重実行により、プログラムは複数のプロセスに対応でき、呼び出し関係により、プロセスは複数のプログラムを含むことができます。

プロセスとプログラムの違い:

        ① プロセスは動的で、プログラムは静的です。

        ②プログラムは順序付けられたコードの集まりであり、プロセスはプログラムの実行であり、プロセスはコア状態とユーザー状態を持ちます。

        ③ プロセスは一時的であり、プログラムは永続的であり、プロセスは状態変化のプロセスであり、プログラムは長期間保存することができます。

        ④ プロセスとプログラムの構成が異なる. プロセスの構成はプログラム, データ, プロセス制御ブロック (プロセス制御ブロック, すなわち, PCB はプロセスのデータ構造を記述するために使われる. オペレーティングシステムはプロセスごとに PCB を維持する. 、プロセスに関するさまざまな状態情報を保存するために使用されます);

1-4--プロセスの特徴:

プロセスには次の特徴があります。

        ①ダイナミクス: プロセスは動的に作成および終了できます。

        ②並行性:プロセスは独立してスケジュールされ、プロセッサを占有して実行できます(並行性:一定時間内に複数のスレッドが同時に実行されます。並列:一度に複数のスレッドが同時に実行されます。)

        ③ 独立性:異なるプロセスの作業は互いに影響しません。

        ④ 制約:共有データやリソースへのアクセス、プロセス間の同期(相互排除、ロックなど)によるプロセス相互の制約。 

1-5--工程管理体制

        プロセス制御ブロック: オペレーティング システムがプロセスの動作を管理および制御するために使用する情報の組み合わせを示します。オペレーティング システムは、プロセスの基本的な状況と、プロセス制御ブロック (PCB) を介して変更を実行するプロセスを記述します。 PCB は、プロセスの存在を示す唯一の兆候です。

        プロセス制御ブロックを使用する場合、プロセスを作成するとプロセスの PCB が生成され、プロセスを終了すると PCB がリサイクルされ、プロセスの編成と管理は PCB の編成と管理を通じて実現されます。

PCB には、次の 3 つのカテゴリの情報が含まれています。

        ① プロセス識別情報:プロセスの識別、プロセスの親プロセスの識別、利用者の識別など。

        ②プロセッサ状態情報保存領域:プロセスの実行サイト情報を保存します。

        ③ プロセス制御情報:スケジューリングおよびステータス情報、プロセス間通信情報、ストレージ管理情報、プロセスによって使用されるリソース、および関連するデータ構造接続情報など。

PCB の構成:

        ① リンクリスト: 同じ状態のプロセスの PCB はリンクリストを形成し、異なる状態 (準備完了、ブロックなど) は異なるリンクリストに対応します。

        ② インデックス テーブル: 同じ状態のプロセスは 1 つのインデックス テーブルに分類され、異なる状態 (準備完了、ブロックなど) は異なるインデックス テーブルに対応します。

1-6 -- プロセスのライフサイクル

プロセス ライフ サイクル管理には、次の部分が含まれます。

        ①プロセスの作成:システムが初期化されると、ユーザーは新しいプロセスの作成を要求し、実行中のプロセスはシステムコールを実行してプロセスを作成します。

        ② プロセスの実行: カーネルは準備ができているプロセスを選択し、プロセッサを占有して実行させます。

        ③ プロセス待ち:システムサービスを要求して待っている場合、すぐには完了できず、処理が待ち状態になるなど、プロセスが待ち(ブロッキング)状態になることがあります。開始された場合、すぐに完了することができず、プロセスは待機状態に入ります; プロセスが必要とするデータが到着しない場合、プロセスは待機状態に入ります; プロセスは自分自身をブロックすることしかできません;

        ④ プロセスの起床:ブロックされたプロセスが必要とするリソースが満たされた場合、ブロックされたプロセスを待っているイベントが到着した場合など、プロセスは待機状態からウェイクアップし、ウェイクアップ状態になります。 ; プロセスの PCB が準備完了キューに挿入されます;プロセスは、他のプロセスまたはオペレーティング システムによってのみ起動できます。

        ⑤ プロセスの終了: プロセスは、自発的な正常終了、自発的なエラー終了、強制的な致命的エラー、および他のプロセスによる強制終了の 4 つの状況で終了します。

1-7--プロセス状態変化モデル

プロセスは、その存続期間が終了する前に、次の 3 つの基本的な状態になります。

① 実行中: プロセッサ上でプロセスが実行されています。

②準備完了状態(Ready):プロセスはプロセッサ以外のすべてのリソースを取得しており、プロセッサを取得すると実行できます。

③ 待機/ブロック状態 (Blocked): プロセスはイベントを待って中断されています。

1-8 -- プロセスがハングする

        プロセスが中断状態にある場合、プロセスはメモリ空間を占有せず、中断状態のプロセスはディスク (外部メモリ) にマップされます。

        一時停止状態には 2 種類あります。ブロック一時停止状態。プロセスは外部メモリでイベントが発生するのを待ちます。

                でおりおり       でいるかのです。

        中断とは、基本的にプロセスをメモリから外部メモリに転送することです。

一般的な保留状態の遷移は次のとおりです。

        ① ブロッキング → ブロッキング サスペンド: 準備完了状態のプロセスがない場合、または準備完了プロセスがより多くのメモリ リソースを必要とする場合、この遷移が発生して、新しいプロセスをサブミットするか、準備完了プロセスを実行します。

        ② 準備完了 → 一時停止: 優先度の高い (すぐに準備ができるとシステムが判断した) ブロックされたプロセスと優先度の低い準備完了プロセスがある場合、システムは優先度の低い準備完了プロセスを一時停止します。

        ③ Running→Ready Suspend: プリエンプティブ タイムシェアリング システムの場合、優先度の高いブロックされたサスペンド プロセスがイベントにより Ready サスペンドに入ると、システムは現在実行中のプロセスを Ready サスペンド状態に変換します。

        ④ ブロック保留 → 準備保留: 外部メモリで発生し、関連するイベントによりブロックされた中断プロセスが発生すると、システムはブロックされた中断プロセスを準備中断プロセスに変換します。

unsuspend/activate フラグは、通常、次の状況でプロセスを外部ストレージから内部メモリに転送します。

        ①準備完了→準備完了:準備完了プロセスがない場合、または準備完了プロセスの優先度が準備完了プロセスの優先度よりも高い場合、準備完了プロセスは準備完了プロセスに変換されます。

        ② ブロック保留 → ブロック: プロセスが十分なメモリを解放すると、システムは優先度の高いブロック保留プロセスをブロックされたプロセスに変換します。

        オペレーティング システムは、PCB を介した状態キューと定義されたプロセス状態に基づいて、さまざまな状態のプロセスを管理およびスケジュールします。さまざまな状態は、さまざまなキュー (レディ キュー、ブロッキング キューなど) によって表されます。

        各プロセスの PCB は、その状態に応じてプロセスを対応するキューに追加し、プロセスの状態が変化すると、その PCB は 1 つの状態キューから分離され、別のキューに追加されます。

2 -- スレッド

2-1--スレッドの基本的な考え方

        スレッドはプロセス内の実行プロセスを表し、プロセスは関連するリソース (コード セグメント、データ セグメントなど) のグループを組み合わせてリソース プラットフォームを形成すると理解でき、スレッドはこのリソース上でのコードの実行プロセスを表します。プラットホーム;

        したがって、スレッドは次のように理解できます。スレッド = プロセス - 共有リソース

スレッドの利点:

        ① プロセスは同時に複数のスレッドを持つことができます。

        ② 各スレッドは同時に実行できます。

        ③ 各スレッドは、アドレス空間やファイルなどのリソースを共有できます。

スレッドの欠点:

        スレッドがクラッシュすると、それが属するプロセスのすべてのスレッドがクラッシュします (セキュリティ上の問題)。

2-2--プロセスとスレッドの比較

① プロセスはリソース割り当ての単位であり、スレッドは CPU のスケジューリング単位です。

② プロセスには完全なリソース プラットフォームがあり、スレッドは上図のレジスタやスタックなどの重要なリソースのみを利用します。

③ スレッドにも準備完了、ブロック、実行の 3 つの基本状態があり、状態間の遷移関係もあります。

④ スレッドは、同時実行の時間とスペースのオーバーヘッドを削減できます。

        スレッドの作成時間と終了時間は、プロセスよりも短くなります。

        同じプロセスでのスレッドの切り替え時間も、プロセスのスレッド切り替え時間よりも短くなります。

        メモリとファイル リソースは同じプロセスのスレッド間で共有されるため、カーネルを介して通信する必要はありません

おすすめ

転載: blog.csdn.net/weixin_43863869/article/details/130505216