マインドマップギャラリー プロセスの説明と制御
これは、プロセスの記述と制御に関するマインド マップです。主な内容には、スレッドの実装、スレッドの概念、プロセスの通信、プロセスの制御、プロセスの記述、先行図、プログラムの実行が含まれます。
2024-10-15 21:39:12 に編集されました이것은 곤충학에 대한 마인드 맵으로, 곤충의 생태와 형태, 생식 및 발달, 곤충과 인간의 관계를 연구하는 과학입니다. 그것의 연구 대상은 곤충으로, 가장 다양하고 가장 많은 수의 동물이며 생물학적 세계에서 가장 널리 분포되어 있습니다.
이것은 어린이의 내부 동기를 육성하는 방법에 대한 마인드 맵입니다. 기업가를위한 실용적인 가이드, 주요 내용 : 요약, 7. 정서적 연결에주의를 기울이고, 과도한 스트레스를 피하십시오.
이것은 자동화 프로젝트 관리 템플릿, 주요 내용에 대한 마인드 맵입니다. 메모, 시나리오 예제, 템플릿 사용 지침, 프로젝트 설정 검토 단계 (What-Why-How), 디자인 검토 단계 (What-Why-How), 수요 분석 단계 (What-Why-How)에 대한 마인드 맵입니다.
이것은 곤충학에 대한 마인드 맵으로, 곤충의 생태와 형태, 생식 및 발달, 곤충과 인간의 관계를 연구하는 과학입니다. 그것의 연구 대상은 곤충으로, 가장 다양하고 가장 많은 수의 동물이며 생물학적 세계에서 가장 널리 분포되어 있습니다.
이것은 어린이의 내부 동기를 육성하는 방법에 대한 마인드 맵입니다. 기업가를위한 실용적인 가이드, 주요 내용 : 요약, 7. 정서적 연결에주의를 기울이고, 과도한 스트레스를 피하십시오.
이것은 자동화 프로젝트 관리 템플릿, 주요 내용에 대한 마인드 맵입니다. 메모, 시나리오 예제, 템플릿 사용 지침, 프로젝트 설정 검토 단계 (What-Why-How), 디자인 검토 단계 (What-Why-How), 수요 분석 단계 (What-Why-How)에 대한 마인드 맵입니다.
プロセスの説明と制御
プリカーサー グラフとプログラムの実行
プリカーサーグラフ
有向非巡回グラフを指します
ループは許可されません
プログラムシーケンスの実行
連続性、閉鎖性、再現性
プログラムの同時実行
不連続性、閉鎖の喪失、非再現性
プロセスの説明
プロセスの定義と特徴
プロセス構成
プログラムセクション
プログラムコード
データセグメント
操作中に生成されるさまざまなデータ (プログラム セグメントとデータ セグメントはプロセス自体用であり、プロセス自体の動作ロジックに関連します)。
プリント基板
プロセス識別子
プロセッサのステータス
プロセスのスケジュール情報
プロセス制御情報 (PCB はオペレーティング システム用)
意味
プロセスはプログラムの実行プロセスであり、システム内でリソースの割り当てとスケジューリングを行うための独立した単位です。
特徴
ダイナミクス、同時実行性、独立性、非同期性
プログラムとの違い
プロセス
動的
メモリ
一時的
プログラムセグメント データセグメント PCB
プログラム
静的
外部ストレージ
永続
プロセスの基本状態と遷移
州
準備完了状態
プロセスには、CPU を除く必要なすべてのリソースが割り当てられています。
運転状況
CPUを占有してCPU上で実行する
ブロッキング状態
実行中のプロセスはイベントを待っているため、一時的に実行できません。
ステータスの作成
プロセスが作成され、OS がプロセスにリソースを割り当て、PCB を初期化します。
端末状態
OSはプロセスが所有するリソースをリサイクルし、PCBを取り消します
状態遷移
準備完了 → 実行
プロセスがスケジュールされています
実行中→準備完了
タイム スライスが終了したか、CPU が他の優先度の高いプロセスによってプリエンプトされています。
ラン→ブロック
システムリソースの割り当てを待機中、またはイベントの発生を待機中(アクティブな動作)
ブロック→準備完了
リソースは所定の場所に割り当てられるか、イベントの発生を待機します (受動的な動作)
作成 → 準備完了
システムは作成プロセスに関連する作業を完了します
実行→終了
プロセスが終了するか、操作中に修復不可能なエラーが発生します。
一時停止された操作とプロセスの状態遷移
アクティビティの準備完了
休息の準備完了
埋め込む
アクティビティのブロック
静的ブロッキング
プロセス管理におけるデータ構造
PCBの役割
自立運転の基本単位のシンボルとして
間欠動作モードの実装
工程管理に必要な情報を提供します
プロセスのスケジューリングに必要な情報を提供する
他のプロセスとの同期と通信を実装する
PCBの使用
プロセスの作成
プロセスのPCBを生成します
プロセスが終了しました
PCBをリサイクルする
プロセスの組織化と管理
PCBの組織化と管理を通じて達成
PCB の構成方法
直線的なアプローチ
リンク方法
インデックスモード
PCB収納構造
直線的なアプローチ
すべての PCB を線形テーブルに保存する
オペレーティング システムはテーブルの開始アドレスを保持します。
リンク方法
プロセスのステータスに応じて PCB を複数のキューに分割します
オペレーティング システムは各キューへのポインタを保持します
インデックスモード
さまざまなプロセスステータスに基づいて複数のインデックステーブルを作成します
オペレーティング システムにはさまざまなインデックス テーブルへのポインタがあります
プロセス制御
プロセスの作成
プロセス作成の原因となるイベント
ユーザーログイン
タイムシェアリング システムでは、ユーザーが正常にログインすると、システムはユーザーのプロセスを作成します。
ジョブのスケジュール設定
マルチチャネルバッチ処理システムでは、新しいジョブがメモリに配置されると、そのジョブ用のプロセスが作成されます。
サービスを提供する
ユーザーが OS に対して特定のリクエストを行うと、OS は必要なサービスを提供するプロセスを特別に作成します。
申請リクエスト
ユーザープロセスは積極的に子プロセスの作成を要求します。
プリミティブの作成
ブランク PCB をリクエストする
必要なリソースを割り当てる
PCBの初期化
準備完了キューに挿入
プロセスの終了
プロセスの終了を引き起こすイベント
正常終了
プロセス自体が中指出口システムコールを要求します
異常終了
たとえば、読み取り専用ファイルを書き込もうとし、一定の時間が経過すると、指定された最大値を超えます。
外部介入
プロセスは、タスク マネージャーを使用してプロセスを強制終了するなど、外部からの要求によって終了します。
終端プリミティブ
PCB コレクションからプロセスを終了した PCB を検索します。
プロセスが実行中の場合は、直ちに CPU を剥奪し、他のプロセスに CPU を割り当てます。
すべての子プロセスを終了します
プロセスが所有するすべてのリソースを親プロセスまたはオペレーティング システムに返します。
PCB準備完了状態/ブロック状態/実行状態/終了状態の削除→なし
プロセスのブロックと覚醒
プロセスのブロック
プロセスのブロックを引き起こすイベント
システムからの共有リソースの要求に失敗しました
何らかの操作が完了するまで待ちます
新しいデータはまだ到着していません
新しいタスクの到着を待っています
ブロッキングプリミティブ
ブロックするプロセスに対応する PCB を見つけます
プロセス実行サイトを保護し、PCB ステータス情報をブロッキング状態に設定し、実行中のプロセスを一時停止します。
対応するイベントの待機キューに PCB を挿入します。
プロセスの起動
プロセスを起動させるイベント
ブロックされたプロセスは何かが起こることを期待しています
ウェイクプリミティブ
イベント ブロッキング キューで PCB を見つける
ブロッキング キューから PCB を削除し、プロセス ステータスを準備完了に設定します。
スケジュールを待っている準備完了キューに PCB を挿入します
プロセスの一時停止とアクティブ化
プロセスの中断
プロセスのハングを引き起こすイベント
サスペンドプリミティブ
プロセスのアクティブ化
プロセスの活性化を引き起こすイベント
アクティベーションプリミティブ
プロセス切り替え
プロセス切り替えを引き起こすイベント
現在のプロセスのタイムスライスが終了しました
より優先度の高いプロセスが到着する
現在のプロセスはアクティブにブロックします
現在のプロセスが終了する
スイッチプリミティブ
動作環境情報を PCB に保存
PCB は対応するキューに移動します
別のプロセスを選択して実行し、その PCB を更新します
PCB に基づいて新しいプロセスを復元するために必要な動作環境
プロセスコミュニケーション
プロセス通信の種類
共有ストレージ
共有スペースを設定する
共有スペースへのアクセスは相互に排他的です
データ構造に基づく (低レベル)
バケットベースの共有 (上級)
パイプ通信
特別な共有ファイル (基本的にはバッファ) をセットアップします。
書き込みがフルの場合、書き込みプロセスはブロックされ、読み取りが空の場合、読み取りプロセスはブロックされます。
各プロセスのパイプへの相互排他的アクセス
パイプは半二重通信のみを実現できます
全二重通信を実現するには、2 つのパイプを確立する必要があります
メッセージング
構造化されたメッセージ (メッセージ ヘッダー、メッセージ本文) を配信します。
プリミティブの送信、プリミティブの受信
直接通信方式: メッセージは食事を受け取るメッセージキューに直接ハングされます。
間接通信方式。メッセージはまず中間(メールボックス)に送信されます。
クライアントサーバー
ソケット
リモートプロシージャコール
リモートメソッド呼び出し
メッセージパッシング通信の実装方法
例: Linux プロセス通信
基本的な概念
プロセス制御とはプロセスの状態変換を実現することです
プロセス制御はプリミティブを使用して実装されます
プリミティブはオフ/オン割り込みを使用して実装されます
プリミティブは特別な種類のプログラムです
プリミティブの実行は継続的かつ中断不可能でなければなりません
関連するプリミティブ
プリミティブの作成
終端プリミティブ
ブロッキング プリミティブとウェイクアップ プリミティブ
プリミティブを一時停止し、プリミティブをアクティブにする
スイッチプリミティブ
糸の概念
スレッドの紹介
スレッド切り替え
同一プロセス内でのスレッド切り替えはプロセス切り替えを引き起こしません
異なるプロセスでスレッドを切り替えると、プロセスの切り替えが発生します
スレッドとプロセスの比較
プロセッサーのスケジューリング、リソース割り当て
スレッドはプロセッサのスケジューリングの単位であり、プロセスはリソース割り当ての単位です。
同じプロセスの各スレッドは、プロセスが所有するリソースを共有します。
同一プロセス内でのスレッド切り替えはプロセス切り替えを引き起こしません
同時実行性
プロセスは同時に実行できます
おそらくスレッド間での同時実行
システムのオーバーヘッド
プロセス間の同時実行、高いシステム オーバーヘッド
同じプロセス内ではスレッドが同時実行され、システムのオーバーヘッドは小さくなります。
独立
プロセス間のアドレス空間は互いに独立しています
同一プロセス内ではプロセスリソースがスレッド間で共有され独立性が弱い。
マルチプロセッサをサポート
従来のプロセス、つまりシングルスレッドプロセスは 1 つのプロセッサ上でのみ実行できます
同じプロセス内の複数のスレッドを複数のプロセッサに割り当てることができます
スレッド状態とスレッド制御ブロック
スレッドの実装
スレッドの実装方法
ユーザーレベルのスレッド
スレッドライブラリによる実装
オペレーティング システムの視点が表示されない
カーネルレベルのスレッド
オペレーティング システムによって実装される
オペレーティング システムの観点から見える
組み合わせ方法
多対一モデル
利点は、スレッド管理のオーバーヘッドが小さく効率的であることです。
欠点は、1 つのスレッドをブロックするとプロセス全体がブロックされ、同時実行性が低下することです。
1対1モデル
利点は、各スレッドをマルチコア プロセッサに割り当てて、並列実行と高い同時実行性を実現できることです。
欠点は、スレッド管理にはオペレーティング システムのサポートが必要であり、コストがかかることです。
多対多モデル
n 個のユーザーレベルのスレッドが m 個のカーネルレベルのスレッドにマップされます (n>m に等しい)
両方の長所を組み合わせる
カーネルレベルのスレッドの特徴
PCB と TCB はカーネルによって維持されます
システムコールを実行しブロックされているスレッドは他のスレッドに影響を与えません
スレッドの作成、終了、切り替えは比較的大規模です
カーネルに実装される一般的なシステムコール/カーネル関数
スレッド単位でCPU時間を割り当てる
マルチスレッドプロセスにより多くの CPU 時間が得られます
ユーザーレベルのスレッドの特徴
OSに依存しないカーネル
カーネルはユーザースレッドの存在を知りません
スレッドをサポートしないマルチプロセス オペレーティング システムでも使用可能
ユーザー空間に実装されたスレッド機構
TCB はスレッド ライブラリ関数によって維持されます
同一プロセス内でのユーザースレッドの切り替えが高速
ユーザーモード/カーネルモードの切り替えが不要
各プロセスに独自のスレッド スケジューリング アルゴリズムを持たせる
スレッドの具体的な実装
プロセスとスレッドの両方が直接または間接的にカーネル サポートを取得する必要があります
スレッドがスケジューリングと切り替えに費やすオーバーヘッドは、プロセスのオーバーヘッドよりもはるかに小さくなります。
スレッドの作成と終了
スレッドの作成
アプリケーションが開始されると、通常は 1 つのスレッドだけが実行されます。このスレッドの主な機能は、新しいスレッドを作成することです。
スレッドの終了
指定されたスレッドが終了していない場合、接続コマンドを呼び出しているスレッドは、指定されたスレッドが終了するまでブロックされます。その後、指定されたスレッドに接続して実行を続行できます。ブロックされず、はい、引き続き実行されます