マインドマップギャラリー コンピューターのオペレーティング システムのマインド マップ
これは、プロセスとスレッド、メモリ管理、ファイル管理、IO 管理などを含む、コンピューターのオペレーティング システムに関するマインド マップです。皆さんのお役に立てれば幸いです。
2023-12-08 15:46:30 に編集されましたオペレーティング·システム
第1章 概要
基本的な考え方
コンピュータ システム全体のハードウェアおよびソフトウェア リソースを制御および管理し、コンピュータの作業とリソース割り当てを合理的に編成およびスケジュールし、ユーザーに便利なインターフェイスと環境を提供するプログラムの集合。
特徴
同時
同じ時間間隔内に複数のイベントが発生する
パラレルとは違う 並列処理は同時に並列処理です
共有
相互に排他的な共有
指定された時間内にリソースにアクセスできるのは 1 つのプロセスのみです
プロセスがリソースにアクセスして解放した後でのみ、別のプロセスがリソースにアクセスできます。
重要なリソース
一定期間アクセスを許可されるプロセスは 1 つだけです
例: 物理デバイス、スタック、変数、テーブルなど。
同時に訪問
一定期間にわたる複数のプロセスによる「同時」アクセスを許可します。
同時に巨視的に見ると、 ミクロレベルでは、リソースに交互にアクセスできます (タイムシェアリング)。
リソース共有はプログラムの同時実行を条件とします。プログラムの同時実行が許可されていない場合、リソース共有は行われません。
2 つの基本的な特性
バーチャル
エンティティが論理的に対応するものになる
マルチプログラミングによる同時実行
マルチプログラミング技術を使用して物理 CPU を複数の論理 CPU に分割します
仮想テクノロジー
時分割多重技術
時間を共有する
空間分割多重技術
仮想ストレージ
非同期
リソースが限られているため、プロセスの実行は 1 ステップで実行されるのではなく、ストップアンドゴー方式で実行されます。
オペレーティング システムは、ユーザーとコンピュータ ハードウェア システムの間のインターフェイスとして機能します。
ユーザーがコンピュータをどのように使用するか
1) コマンドインターフェース
コマンドインタープリタ経由
シェルコマンドパーサーもコマンドインターフェイスです
オンラインコマンドインターフェース
タイムシェアリングおよびリアルタイムシステムに最適
ユーザーの対話性を重視
オフラインコマンドインターフェース
手動操作は不要です
バッチ処理システム用
ジョブがスケジュールされると、事前に準備されたジョブとともにシステムに渡され、システムのコマンド インタープリタが実行を制御します。
2) プログラムインターフェース
システムコールで構成されます
システム コールを使用して、オペレーティング システムにサービスを提供するように要求します。
オペレーティング システムはシステム キャッシュのシステム コールを提供せず、キャッシュはユーザーに対して透過的です。
開発パス
1) 手動ステージ
現時点ではオペレーティング システムは存在せず、すべての作業は手動で行われます
2) バッチ処理段階
シングルレーンバッチ処理システム
1) 連続性
2) 自動性
3) 一方向性
メモリ内で実行されるプログラムは 1 つだけです
多チャンネルバッチ処理システム
マルチプログラミング技術を通じて
複数のプログラムが同時にメモリに入り、CPU 内で交互に実行されます。
共有ハードウェア/ソフトウェア
IO によりプログラムが一時停止されると、CPU はすぐに別のプログラムを実行します。
割り込み経由
アドバンテージ
1) 複数のチャンネル
2) マクロ並列処理
3) マイクロシリアル
4) 高い稼働率と大きなスループット
短所: 応答時間が長い、人間による対話が提供されない、コンピューターを制御できない
3) タイムシェアリングオペレーティングシステム
複数のユーザーが端末を通じて同時にホストを共有します
タイムスライスの回転を通じて
人間とコンピュータのインタラクションを実現する
1) 同時性
2) インタラクティブ性
3) 独立性
複数のユーザーが互いに干渉することなく独立して動作します
4) 適時性
短時間で応答が得られる
4) リアルタイムオペレーティングシステム
緊急のタスク(優先度の高いタスク)を一定の制限時間内に完了し、 タイムスライスのキューイングは不要
5) ネットワークオペレーティングシステムと分散コンピュータシステム
ネットワークオペレーティングシステム
各コンピュータが有機的に統合されている
分散型コンピュータシステム
すべてのコンピュータは同等のステータスを持っています
6) パソコンのオペレーティングシステム
勝利、Linux、Mac OS
動作環境
プロセッサ動作モード
1) 特権命令
ユーザーが使用できないディレクティブ
IO命令、割り込み命令の設定、ステータスワードの送信、レジスタの保存、クロックの設定
カーネルモードでのみ実行可能
2) 非特権命令
ユーザーが使用できるようにするディレクティブ
システムのハードウェアおよびソフトウェア リソースに直接アクセスできない
ユーザーのアドレス空間へのアクセスのみを許可する
システムコール
アクセス管理命令とも呼ばれるトラップ命令は、システム コールを開始し、システムにサービスの提供を要求するために使用されます。
ユーザーモードで使用します。 したがって、それは特権命令ではありません
プログラムはユーザーモードで実行されます
カーネル プログラムはカーネル モードで実行されます
ユーザーモードへの切り替え命令は特権命令です
アプリケーションは、アクセス管理命令を通じてオペレーティング システムにサービスを要求し、割り込みイベントを生成し、オペレーティング システムをカーネル モードに変換します。
一般化命令(システムコールコマンド)の実行プロセスはカーネル状態である必要があります。 また、その呼び出しはユーザー モードまたはカーネル モードで行うことができます。
ユーザーモードからカーネルモードに切り替えるには割り込みを通過する必要があります
割り込みが発生する限り、必然的にカーネル状態に切り替わります。
サブルーチンコール
ブレークポイントのみを保存する
次の命令アドレス
ユーザーモード→コアモード
例
システムサービスをリクエストする
割り込み発生
ユーザープログラムエラー
ユーザープログラムが特権命令を実行したい
ユーザーモードからコアモードへの変換はハードウェアによって完了します
割り込みを介して達成する必要があります
割り込みが発生する限り、割り込みを処理し、カーネル状態に変換する必要があります。
ユーザーステートがコアステートに移行すると、ステートが切り替わるだけでなく、スタックもシステムスタックに変換されます。
時計管理
クロック割り込み管理によるプロセス切り替えの実装
クロック割り込み
スケジューラを実行するかどうかを決定するための処理時間関連の情報
システム時間、タイムスライス、遅延、CPU使用時間、タイマーなど
割り込みと例外
割り込み (外部割り込み)
オペレーティング システムは割り込みなしでは動作できません
関数のごく一部のみがカーネルに属し、割り込みシーン情報の保護と復元を行います。 関連するハンドラーに制御を転送します。
セーブデータ
ハードウェアの保存
パソコン
ステータスワードPSW
オペレーティングシステムの保存
汎用レジスタx
異常な (内部割り込み)
不正なオペレーションコード、範囲外のアドレス、オーバーフロー、ページフォルト、セルフトラップなど。
システムコール、アクセスコマンド
例外はマスクできないため、発生したらすぐに処理する必要があります。
原生的
手続きです
1) オペレーティング システムの下部
2) プログラムはアトミックに実行されます
3) プログラムの実行時間が短く、呼び出しが頻繁に発生する
4) カーネルのコンポーネント
経営スタイル
端末管理
プロセス管理
メモリ管理
オペレーティングシステムの構造
多層的なアプローチ
各層を定義するのは難しい
モジュラー
モジュール間のインターフェースは実際のニーズを満たすのが難しい
マクロカーネル
主要な機能モジュールはすべて、密接に関連した全体としてカーネル状態で実行されます。
勝利、Linux、iOS、アンドロイド
マイクロカーネル
主要な機能はカーネルに保持され、カーネルモードで実行する必要のない機能はユーザーモードに移されます。
ファイルサービスはユーザーモードで実行されます
主な欠点はパフォーマンスの問題です
宏蒙OS
OSブート
CPUをアクティブにする
JMP命令を実行してBIOSにジャンプします
BIOS割り込みプログラムのエントリアドレスを登録する
ハードウェアセルフテスト
ハードドライブにOSをロードします
マスターブートレコードMBRをロードする
MBRにはハードウェアパーティションテーブルが含まれています
MBR はパーティション テーブルをチェックしてアクティブなパーティションを見つけ、そのパーティションのスタートアップ プログラムを実行のためにメモリに転送します。
ハードドライブのパーティションをスキャンする
ブート レコード PBR (パーティション ブート レコード) のロード
オペレーティング システムの起動に使用されるパーティションのルート ディレクトリでプログラムを見つけてアクティブ化します。
ブートマネージャーをロードする
ハードディスク上にあり、オペレーティング システムの起動に使用されます
OSをロードする
仮想マシン
第 2 章 プロセスとスレッド
プロセスとスレッド
コンセプト
プロセス制御ブロック PCB
同時実行に参加する各プログラム (データを含む) を独立して実行できるようにする
PCB はプロセスの存在を示す唯一の兆候です
プロセスエンティティ(イメージ)
プログラムセグメント、関連データセグメント、PCB の 3 つの部分で構成されます。
プロセスは、プロセス エンティティの実行中のプロセスです。
これは、システム内のリソース割り当てとスケジューリングのための独立した単位です。
特徴
複数のプログラムの同時実行が原因で発生します
動的
同時実行性
独立
非同期性
プロセスのステータスと遷移
実行状態→遮断状態
現場を守る
プロセス構成
プリント基板
プログラムセクション
CPUによって実行されるプロセスによってスケジュールできるプログラムコードセグメント
データセグメント
プロセス制御
プロセス制御に使用されるプログラムをプリミティブと呼びます
各親プロセスと子プロセスには独自の PCB があります。
親プロセスと子プロセスは一部のリソースを共有しますが、仮想アドレス空間は共有しません
プロセスが終了しました
イベント
正常終了
異常終了
外部介入
プロセス
PCBの取得、ステータスの読み取り
操作を終了する
他のプロセスにリソースを与える
またはオペレーティング システムに戻す
すべての子プロセスを強制終了します
PCBの取り外し
プロセスコミュニケーション
プロセス間の情報交換
低レベルのコミュニケーション
PV運用
中断できない
高度な通信
共有ストレージ
プロセス内のスレッドは自然にプロセス空間を共有します プロセス空間は、特別なシステム コールを通じてプロセス間で共有されます。
メッセージング
データ交換はフォーマットされたメッセージで行われます
直接コミュニケーション
間接的なコミュニケーション方法
中間エンティティはメールボックスです
パイプ通信
データはパイプラインで先入れ先出しされる
パイプファイルがメモリ内に存在します
データが空で読み取られた場合、読み取りプロセスはブロックされます
パイプには作成プロセスのみがアクセスできます
通常のパイプでは一方向の通信のみが可能です
スレッドとマルチスレッド
基本的な CPU 実行ユニットです
プログラム実行フローの最小単位です
スレッド制御ブロック TCB は次のように構成されます。
スレッドID
プログラムカウンター
レジスタセット
スタック構成
スレッド固有の記憶域
同じプロセス内で複数のスレッドを同時に実行できます
スレッドを導入した後
プロセスは、CPU 外部のシステム リソースの割り当て単位として機能します。
プロセッサの割り当て単位としてのスレッド
プロセスはシステム内のリソースを所有する基本単位です。スレッドはシステム リソースを所有しません。
スレッドの実装
分類
ユーザーレベルのスレッド
すべての作業はアプリケーションによってユーザー空間で実行されます
スレッドの切り替えにはカーネルスペースが必要なく、オーバーヘッドが低くなります。
ニーズに応じてさまざまなスケジュール アルゴリズムを選択してください
ユーザーレベルのスレッドがブロックされると、プロセス全体もブロックされます。
カーネルレベルのスレッド
オペレーティング システムのサポートを完了
同じプロセス内でスレッドを切り替えるには、ユーザー モードからカーネル モードに切り替える必要があり、コストがかかります
同じプロセスの複数のスレッドを同時に CPU 上で並行して実行するようにスケジュールできます。
マルチスレッドモデル
多対一
複数のユーザーが 1 つのコアにマッピングされる
1対1
多対多
プロセッサのスケジューリング
スケジュールの概念
特定のアルゴリズムに従ってレディキューからプロセスを選択し、プロセッサをそれに割り当てます
ジョブとプロセス
ジョブはユーザーによって送信され、ユーザーのタスクに基づいています。 プロセスはオペレーティング システムによって生成され、リソース割り当てと独立した操作の基本単位です。
スケジュール階層
高度なスケジューリング
ジョブのスケジュール設定
ジョブのスケジューリングはメモリと補助記憶装置の間でスケジューリングします。
各ジョブは 1 回だけロードされ、1 回ロードされます
中間スケジューリング
メモリのスケジューリング
プログラムの呼び出しと呼び出し
メモリ使用率とシステム スループットを向上させる
一時的に実行されていないプロセスは外部メモリにスケジュールされ、一時停止されます。
低レベルのスケジューリング
プロセスのスケジューリング
プロセスのスケジューリング頻度が高い
最も基本的で欠かせないもの
パフォーマンス
CPU使用率
CPU 実効稼働時間 / (実効待機時間)
ターンアラウンドタイム
ターンアラウンドタイム = ジョブ完了時間 – ジョブ送信時間
平均所要時間 = ∑所要時間 / n
加重所要時間 = ジョブ所要時間 / ジョブの実際の実行時間
平均加重所要時間 = ∑加重所要時間 / n
待ち時間
反応時間
実装のスケジュール設定
スケジューラ
キューワー
発車係
コンテキストスイッチャー
多数のロード/ストア命令を実行し、レジスタの内容を保存する
タイミング、切り替え、プロセスのスケジュール設定
スケジューリングや切り替えができない状況
1) 割り込み処理中
2) プロセスはシステム カーネルのクリティカル セクションにあります
クリティカルセクションに入ったらロックし、 ロックを解除する前にプロセスを切り替えないでください
3) アトミックプロセス中
アトミックプロセス中は割り込みもマスクされます
スケジュールして切り替えられるシチュエーション
非剥奪スケジューリング
スケジュール条件が発生し、現在のプロセスを続行できません。
剥奪のスケジュール設定
割り込み処理終了
罠は終わる
スケジュール方法
非プリエンプティブ
緊急プロセスの準備ができている場合でも、現在のプロセスを続行する
先制攻撃
緊急事態の方が優先される
ハングアウトプロセス
システム上で他のプロセスが実行されていない場合、アイドル状態を有効にします。
2つのスレッドのスケジュール設定
ユーザーレベル
少数の機械命令を使用した、同じプロセス内でのスレッド切り替え
カーネルレベル
カーネルは実行する特定のスレッドを選択し、それにタイム スライスを割り当てます。
スケジュールアルゴリズム
早い者勝ち
譲渡不可能なアルゴリズム
アルゴリズムが単純で効率が低い
ビジーな CPU 操作を促進します 忙しい IO 操作には適さない
まずは短い仕事から
実行時間が最も短いジョブが優先されます
長時間の仕事には向かない
任務の緊急性を十分に考慮していない
平均待ち時間、最短の平均所要時間
優先スケジューリング
ジョブの優先度に従って実行する
プロセススケジューリングとジョブスケジューリングの両方に使用可能
優先度
静的優先度
一度決めたら変更できない
動的優先度
状況に応じて優先順位を調整可能
原則として
1) システムプロセス > ユーザープロセス
2) 対話型プロセス > 非対話型プロセス
3) IO プロセス > コンピューティング プロセス
IOデバイスはCPUより遅いため
高応答率優先
応答率=(待ち時間所要サービス時間)/所要サービス時間
タイムスライスの回転
タイムシェアリングシステム用
タイム スライスが十分に大きいため、すべてのジョブを 1 つのタイム スライス内で実行できる場合、 タイム スライス ローテーション アルゴリズムは、先着順に退化します。
マルチレベルキュー
異なるタイプまたはプロパティのプロセスは、異なるレディキューに割り当てられます。
マルチレベルフィードバックキュー
それぞれに異なる優先順位を持つ複数のレディキュー
各キューの処理タイムスライスサイズは異なります
各キューは先着順です
キューは優先度に従ってスケジュールされます
比較する
プロセス切り替え
コンテキストスイッチ
コンテキストとは、ある瞬間の CPU レジスタとプログラム カウンタの内容を指します。
CPU は別のプロセスに切り替わり、現在のプロセスの状態を保存し、他のプロセスの状態を復元する必要があります。
PCB を更新する
モード切り替え
ユーザーモードとカーネルモードの切り替え
同期と相互排他
コンセプト
重要なリソース
一度に 1 つのプロセスのみが使用できます
プリンター、変数、データなど
エントリーエリア
クリティカルセクションに入ることができるか確認する
クリティカルセクション
重要なリソースにアクセスするプロセス内のコード
出口エリア
クリティカルセクションがアクセス中であることを示すフラグをクリアします。
残りの領域
コードの残りの部分
プロセスの同期
直接的な制限関係
プロセス間の関係は直接的なコラボレーションであり、プロセスの同時実行性は非同期です。
相互排他的
間接的な制約
あるプロセスが重要なリソースにアクセスすると、別のプロセスは待機する必要があります
基準
出入り自由
忙しいなら待っててね
待ち時間が限られている
制限時間内に必ずクリティカルセクションに入ることができる
道を譲って待つ
プロセスがクリティカル セクションに入ることができない場合、プロセスがビジー待機状態になるのを防ぐために、プロセッサはすぐに解放されます。
相互に排他的なメソッド
ソフトウェアの実装方法
シングルマーク方式
ダブルマーク方法を最初に確認してください
ダブルマーク法事後検査
ピーターソンアルゴリズム
2 つのプロセスがクリティカル セクションに入り、無限に待機することを防ぐために、変数turnが設定されます。
ハードウェア実装方法
割り込みマスク方式
ハードウェアの指示方法
テストアンドセット
スワップ
ハードウェア実装方式のメリット
任意の数のプロセスで動作します
欠点がある
空腹感が発生する可能性があります
ミューテックスロック
取得する
ロックを取得する
リリース
ロックを解除する
信号
PV の動作は実際には 2 つの中断のないプロセスで構成されています
p 操作は待機操作であり、リソースが使用可能になるまで待機することを意味します。 リソースが使用できない場合、リソースはブロック状態になります。 p操作中のプロセスは実行状態です
V 操作は単一操作です。これは、システム内で割り当て可能なリソースの数が 1 になるようにプロセスがリソースを解放することを意味します。
整数セマフォ
レコードセマフォ
セマフォを使用してプロセスの同期を実現する
セマフォを使用したプロセス相互排除の実装
ミューテックスの初期値は通常 1 です。これは、一度に 1 つのプロセスのみがクリティカル セクションに入ることを許可されることを意味します。 0 の場合は、プロセスがクリティカル セクションに入っており、クリティカル セクションの外で待機しているプロセスが存在しないことを意味します。 ミューテックスが 0 未満の場合は、クリティカル セクションにプロセスが存在することを意味します。ミューテックスの絶対値は、クリティカル セクションの外で待機しているプロセスの数を示します。
セマフォを使用したプリカーサーの実装
管理
プロセス同期ツール
保証されたプロセスの相互排他
プロセス間の同期と相互排他を実現可能
一度に 1 つのプロセスだけが共有リソースを使用します
共有リソースを表すデータ構造、およびその共有データ構造上でリアルタイムに動作する一連のプロシージャで構成されるリソース管理プログラム
シグナルは V 操作とは異なります。条件によってブロックされたプロセスがない場合、シグナルは効果を持ちません。
同期の問題
生産者消費者問題
リーダーライター問題
最初に読んでください
最初に書く
哲学者の食事問題
考えられる問題: 全員が箸を握ると (貪欲なアルゴリズム)、デッドロックが発生する可能性があります。
喫煙者問題
デッドロック
意味
複数のプロセスがリソースを求めて競合することによって発生するデッドロック
これらのプロセスは外部の力がなければ継続できません
原因
1) システムリソースの争奪
システム内の譲渡不可能なリソース、その量が複数のプロセスを満たすのに十分ではない
2) プロセスの進行順序が不正です
リソースの要求と解放の順序が不適切
デッドロックが発生するための必要条件
1) 相互に排他的な条件
特定のリソースは、特定の期間中 1 つのプロセスによってのみ占有されます
2) 条件剥奪の禁止
他のプロセスによってプリエンプトされることはできません
3) リクエストとホールドの条件
プロセスがリソースを占有していると同時に別のリソースを要求していますが、占有されているリソースは解放されていません。
4) ループで待機する
各プロセスが占有しているリソースは、次のプロセスによって同時に要求されます。
デッドロック処理戦略
1) デッドロックの防止
4つの必要な条件のうち1つ以上を破る
1. 相互排除条件の破壊
システムリソースの共有を許可する
2.非剥奪の条件を破壊する
リソースを占有していて実行を続行できないプロセスを解放します。
3. リクエストを破棄し、条件を維持します
必要なすべてのリソースを一度に申請し、リソースが満たされるまで運用を開始しないでください。
4. ループを中断して待ちます
順次リソース割り当て方式を採用
2) デッドロックの回避
システムが危険な状態に陥るのを防ぎます
1. システムのセキュリティステータス
システムはリソースを割り当てる前に、まず割り当てのセキュリティを計算する必要があります。
安全な状態
デッドロックがあってはなりません
非安全な状態
デッドロックに陥る可能性がある
2. バンカーのアルゴリズム
システムが危険な状態に陥るのを防ぎます
3) デッドロックの検出と解除
デッドロックの発生を検知し、デッドロックを解消するための措置を講じます。
プロセスにリソースを割り当てるときにシステムが何も対策を講じない場合は、デッドロックの検出および解放方法を提供する必要があります。
リソース割り当てマップ
ボックス内の円はリソースを表します
プロセスからリソースへのダイレクト エッジ コール リクエスト
デッドロックの解除
1) 資源の枯渇
デッドロックをハングさせたプロセスは、そのリソースを占有し、他のデッドロックされたプロセスに割り当てます。
2) 処理を元に戻す
デッドロックしたプロセスの一部またはすべてを強制的にキャンセルし、リソースを奪います。
3) プロセスのロールバック
デッドロックを回避するために、デッドロックしたプロセスを十分にロールバックさせます。
比較する
デッドロックと飢餓の違い
飢え
プロセスの実行は無期限に延期されます
飢餓状態に入るプロセスは 1 つだけです
準備ができている場合もあれば、ブロックされている場合もあります。
デッドロック
プロセスは行き詰まり、先に進むことができません。
デッドロックに入るプロセスの数は 2 以上でなければなりません
デッドロックが発生したプロセスはブロック状態である必要があります
第 3 章 メモリ管理
コンセプト
メモリ管理は、複数プログラムの同時実行をより適切にサポートするためのものです。
プログラムのリンクとロード
リンク
静的リンク
ライブラリ関数はロードモジュールにリンクされ、相対アドレスが変更されます。
ロード時の動的リンク
メモリにロードする場合、ロード中にリンクします
ランタイム動的リンク
実行中に使用されないオブジェクト モジュールは、メモリにロードされたり、モジュールにリンクされたりしません。
負荷
絶対マウントする (静的)
プログラミング段階で
単一チャンネルのプログラムに適しており、論理アドレスとメモリアドレスはまったく同じです
これは、プログラマによって、またはコンパイルまたはアセンブリによって指定できます。
再配置可能な負荷
静的再配置
ロード中にターゲット プログラム内の命令とデータ アドレスを変更するプロセスは、再配置と呼ばれます。
ロード後は変更しないでください
ロード時に論理アドレスを最終的な物理アドレスに変更します
動的ランタイム読み込み
動的再配置
ローダーはモジュールをメモリにロードした後、ロードされたモジュールの相対アドレスを絶対アドレスにすぐに変換せず、実行するまで変換プロセスを延期します。
ロード後に交換可能
メモリにロードされた後のアドレスはすべて相対アドレスです。
メモリ保護
論理アドレスを再配置値に加算して物理アドレスを取得します
境界アドレスレジスタは境界外かどうかを判断します
再配置レジスタと境界アドレス レジスタのロードには特権命令を使用する必要があります。この命令はオペレーティング システム カーネルによって完了され、ユーザーによる変更は許可されません。
メモリの共有
共有できるのは読み取り専用領域のみです
再入可能なコード (純粋なコード) は、複数のプロセスによるアクセスを許可しますが、どのプロセスによる変更も許可しません。
リエントラント技術により、コードの送受信が減り、スワップの数が減ってシステムのパフォーマンスが向上します。
カバーして交換
カバー
アクセスされるプログラム セグメントはカバレッジ エリアに配置され、他のセグメントは外部メモリに配置されます。システムは、元のセグメントを呼び出して置き換える前に、それらをカバレッジ エリアに転送する必要があります。
交換
待機中のプログラムをメモリから補助記憶装置に転送します。これが中間スケジューリングです。
継続的な割り当て管理
単一の連続した割り当て
システム領域はオペレーティングシステムが使用する領域であり、低アドレス部分に配置されます。
ユーザーエリアメモリにはユーザープログラムが1つだけ存在します
オーバーレイ技術を使用する
パーティション管理
最小限のコストでマルチプログラミングを実現する、最もシンプルなストレージ管理ソリューション
固定パーティション割り当て
ユーザー メモリはいくつかの固定サイズの領域に分割されており、各パーティションには 1 つのジョブのみがロードされます。
質問
1) プログラムが大きすぎてどのパーティションにも収まらないため、上書きテクノロジを使用します。
2) プログラムが小さすぎてパーティションに配置されると、内部断片化が発生します。
動的パーティション割り当て
時間の経過とともに、外部フラグメンテーションと呼ばれる、メモリ内に小さなメモリ ブロックが多数作成されます。
コンパクトなテクノロジによって解決され、オペレーティング システムがプロセスを移動および組織化します。
配分戦略
ファーストフィットアルゴリズム
アドレスの昇順にリンクします
近隣適応アルゴリズム
メモリ確保時は、最後に検索を終了した位置から検索を開始します。
最適アルゴリズム
空きパーティションは、容量が増加する順に空きパーティションのチェーンを形成します。
最も多くの外部破片を生成します
最悪適合アルゴリズム
容量の降順で空きパーティションのチェーンを形成する
記憶を取り戻す
スプライシング技術による空き領域の結合
1) リカバリ領域は、挿入ポイントの前の空きパーティションに隣接しています。
2 つのパーティションをマージし、前のパーティション テーブル エントリのサイズを 2 つのパーティションの合計に変更します。
2) リカバリ領域は、挿入ポイントの後の空きパーティションに隣接しています。
変更されたパーティション テーブル エントリのサイズは、2 つのエントリの合計です。
3) リカバリ領域は、挿入ポイントの前後の 2 つのパーティションに隣接しています。
前のパーティション テーブル エントリのサイズを 3 つのエントリの合計に変更します。
次のパーティションテーブルエントリをキャンセルします
4) リサイクルエリアには隣接する空きパーティションがありません
リサイクル領域の新しいテーブル エントリを作成し、開始アドレスとサイズを入力して、空きパーティション チェーンを挿入します。
システムによってユーザーに提供される物理アドレス空間は、合計空間サイズからページ テーブルまたはセグメント テーブルの長さを引いたものです。
ページネーションの管理
ページング管理では内部の断片化が発生しますが、外部の断片化は発生しません
プロセス内のブロックはページと呼ばれ、メモリ内のブロックはページ フレームと呼ばれます。
アドレス構造は仮想メモリのアドレス空間サイズを決定します
システムはプロセスごとにページ テーブルを作成し、ページ テーブルはメモリに保存されます。
ページ テーブルの開始アドレスは、ページ テーブル ベース アドレス レジスタに配置されます。
ページ サイズが決定されると、すべてのページは同じサイズ (2 の累乗) になります。
アドレス変換局
セグメンテーション管理
外部断片化を生成する
セグメント内では連続的ですが、セグメント間で連続的である必要はありません
セグメンテーションとは、ユーザーがプログラムを作成するときに、プログラムをロジックに従っていくつかの論理セグメントに分割することです。
論理構造に関係するもの
プログラムを容易にする動的リンク
セグメントページ管理
内部断片化を生成する
システムはプロセスのセグメント テーブルを作成し、各セグメントにはページ テーブルがあります。
ユーザーアドレス空間を管理および割り当てるためのセグメント化されたアプローチ 物理アドレス空間を管理および割り当てるためのページング方式
1 回のアクセスには、実際にはメイン メモリへの 3 回のアクセスが必要です。
仮想メモリ管理
特徴
複数回
ジョブは複数回に分けてメモリにロードされます。
互換性
未使用のプログラムとデータをメモリから呼び出します
仮想性
メモリ容量を論理的に拡張する
仮想メモリの実容量 ≦ メモリ容量 外部ストレージ容量
仮想メモリの最大容量 ≤ コンピュータのアドレス ビットが収容できる最大容量
実装
1) リクエストページング管理
ハードウェアのサポートが必要です
メモリ、外部メモリ、割り込み機構、アドレス変換など
ページテーブルの仕組み
ページ番号、物理ブロック番号、ステータスビット、アクセスフィールド、変更ビット、外部メモリアドレス
ページフォールト割り込みメカニズム
アクセスされたページがメモリにない場合、ページフォルト割り込みが生成され、システムにメモリへの転送が要求されます。
ページ フォールト率は、ページ サイズ、割り当てられた物理ブロックの数、置換アルゴリズム、およびプログラミングの影響を受けます。
アドレス変換局
ページフレームの割り当て
常駐セット
プロセスに割り当てられたページ フレームのコレクション
プロセスに割り当てられるページ フレームが少ないほど、メイン メモリに常駐するプロセスが増え、CPU 使用率が向上します。
プロセスのメイン メモリ内のページが少なすぎるため、ページ フォールト率が比較的高くなります。
メモリ割り当て戦略
1) 現地代替の固定割り当て
ページフォルトが発生した後、プロセスに一定数の物理ブロックを割り当て、プロセスに割り当てられたメモリページからページを選択して呼び出します。
2) 変数割り当てのグローバル置換
特定の数の物理ブロックを割り当てます。これは適切に増減できます。 グローバル置換: 空き物理ブロックからブロックを選択してプロセスに割り当て、欠落したページを転送します
3) 変数置換ローカル置換
ページが欠落した場合、このプロセスのみがメモリページから 1 ページを選択して呼び出すことができます。
物理ブロック読み込みアルゴリズム
固定配分戦略
1) 平均分配アルゴリズム
2) 比例配分する
プロセスサイズに応じて比例配分
3) 優先順位の割り当て
緊急性に基づいた割り当て
ページをロードする時間
実行前にロードする
実行時に呼び出される
置換アルゴリズム
1) 最適な置換アルゴリズム
まったく使用されないページや長期間使用されていないページを削除する
2) 先入れ先出しアルゴリズム
ベラディ異常が発生します
割り当てられた物理ブロックの数が増加し、ページ フォールトの数が減少する代わりに増加します。
3) 最近は使用されていないが、長期間使用されていない
レジスタとスタックのハードウェア サポートが必要
最近アクセスされていないページを計算する必要があるため、コストがかかります。
4) クロックアルゴリズム
5) クロックアルゴリズムの改善
修正ビットを追加しました
使用または変更されていないページを優先する
アクセスビットAと修飾ビットMによる判定
ジッターとワーキングセット
ジッター
先ほど入れ替えたページをすぐに再度入れ替える必要がある(頻繁に呼び出してページを持ち込む)
高いページフォールト率
理由
システム内で同時に実行されているプロセスが多すぎますが、各プロセスに割り当てられている物理ブロックが少なすぎます。
ワーキングセット
プロセスが一定期間内にアクセスするページのコレクション
ジッターを防ぐ
2) リクエストセグメント管理
3) リクエストセグメントページ管理
第4章 文書管理
ファイルのプロパティ
名前
タイプ
クリエイター
所有者
位置
サイズ
守る
時間
ファイルは抽象データ型、データ構造です
ファイル制御ブロック FCB
ファイルディレクトリエントリ
制御ファイルに必要な各種情報を格納するデータ構造
名前によるアクセス
内容: 基本情報、アクセス制御情報、使用法情報
インデックスノード i ノード
ディスク上のファイルディレクトリ
ディスクインデックスノード
各ファイルには一意のディスク インデックス ノードがあります。
プライマリ識別子、タイプ、権限、物理アドレス、長さ、リンク数、アクセス時間
メモリインデックスノード
メモリに保存されたインデックスノード
ファイルが開かれると、ディスク インデックス ノードがメモリ インデックス ノードにコピーされます。
ノード番号、ステータス、アクセス数、論理デバイス番号、リンクポインタ
ファイル操作
開いたり閉じたり
開ける
open を呼び出してファイル名に基づいてディレクトリを検索し、指定されたファイルの属性 (物理的な場所を含む) を外部ストレージからメモリ内のオープン ファイル テーブルのエントリにコピーし、エントリ番号をユーザーに返します。
FCBをメモリファイルディレクトリテーブルに格納する
閉鎖
close を呼び出すと、システムはファイル テーブルを開いてこのエントリを削除します。
読み取り呼び出し中に、ファイルがメモリにない場合、プロセスはスリープ状態になります。
ファイル保護
パスワード保護
パスワードはシステム内に保存されるため、安全性が十分ではありません。
暗号化保護
ファイルの盗難を防ぐ
アクセス制御
ユーザーがファイルにアクセスする方法を制御する
ファイルの論理構造
非構造化ファイル (ストリーミング ファイル)
レコードに順次編成される (順序付けされたコレクション)
構造化されたファイル(記録されたファイル)があります
シーケンスファイル
文字列構造
入金時間順に並べ替える
シーケンシャル構造
キーワードで並べ替える
インデックスファイル
固定長レコードファイル
可変長レコードファイル
順次検索
インデックスシーケンスファイル
N レコードは √N グループに分割され、インデックス テーブルには √N 個のエントリがあり、合計 √N/2 √N/2 の検索が必要です。
ダイレクトファイル/ハッシュファイル
レコードのキー値、またはハッシュ関数によって変換されたキー値が与えられると、レコードの物理アドレスが決定されます。
ファイルの物理構造
割り当て
継続的な割り当て
シーケンシャルアクセス/ランダムアクセスをサポート
アクセス速度が速い
ファイルを繰り返し削除すると、外部の断片化が発生します
追加、削除、変更が不便
ファイルのディレクトリ エントリのファイル物理アドレス フィールドには、最初のブロックのアドレスとファイル割り当て領域の長さが含まれます。
リンクの割り当て
離散配分方式
外部のゴミを除去
確認するのが不便
暗黙的なリンク
シーケンシャルアクセスのみに適しています
ディレクトリには、ファイルの最初のブロックへのポインタと最後のブロックへのポインタが含まれています。
内部断片化を生成する
明示的なリンク
リンク ポインタを明示的にメモリに格納するリンク テーブルは、ファイル アロケーション テーブル (FAT) と呼ばれます。 各エントリには次のディスクブロック番号が格納されます
FAT はディスク全体に 1 つだけあり、データ構造でもあります。
FAT エントリは物理ディスク ブロックに 1 対 1 で対応し、特別な番号 -1 を使用して最後のブロックを表すことができ、他の番号を使用して FAT のリンク関係が記録されるだけでなく、ディスク ブロックが空いていることを示すこともできます。各ブロックだけでなく、空きディスク部分もマークします。
インデックスの割り当て
ランダムアクセスをサポート
アクセスは連続割り当てほど高速ではありません
外部の破片がないこと
混合インデックス割り当て
目次
ディレクトリ構造
単一ディレクトリ構造
名前によるアクセス
検索速度が遅い、重複した名前が許可されていない、共有が不便
二次ディレクトリ構造
重複名の問題を解決しました
ファイルを分類できない、柔軟性に欠ける
ツリーディレクトリ構造
プロセスによるファイルへのアクセスは、現在のディレクトリに相当します。
中間ノードにはパス名ごとに段階的にアクセスする必要があるため、ディスクアクセス数が増加します。
非巡回グラフのディレクトリ構造
共有ファイルの場合、実際のファイルは 1 つだけ存在し、変更は他のユーザーに表示されます。
ディレクトリの実装
線形リスト
ファイル名とポインタの線形リストを取得します
チェーン構造を使用すると、ファイルの削除時間を短縮できます。
時間のかかる検索
ハッシュ表
すぐに見つかる
衝突を避ける必要がある
ファイル共有
静的共有
ハードリンク (インデックスノードに基づく)
ファイルの物理アドレスとファイル属性情報は、ディレクトリ エントリではなく、インデックス ノードに配置されます。
インデックス ノードにはカウントもあり、それが複数のユーザーによって共有されていることを示します。
ソフトリンク(シンボリックリンクを使用)
リンク ファイルを作成し、ファイル内のパス名に基づいてファイルを検索します。
ファイル所有者だけがそのインデックス ノードへのポインタを持っています 他のユーザーはこのファイルのパス名のみを知っています
ファイルにアクセスするたびにディスクを複数回読み取る必要があり、コストがかかります。
ネットワーク ファイルを共有する場合、ファイルが存在するマシンのネットワーク アドレスとファイル パス名を指定するだけで済みます。
動的共有
複数のユーザーが同時にファイルを操作する
ファイルシステム
外部ストレージ内のファイルシステムの構造
物理フォーマット
セクタの分割、不良セクタのチェック、不良セクタの交換
論理フォーマット
ディスク パーティション、各パーティションのファイル システムの完全な初期化
生産する
マスターブートレコードMBR
アクティブなパーティションを特定し、ブート ブロックを読み取ります。
ブートブロック
MBR はブート ブロック内のプログラムを実行し、オペレーティング システムを起動します。
スーパーブロック
ファイル システムのすべての重要な情報が含まれています。ファイル システムが初めて起動されると、スーパー ブロックがメモリに読み込まれます。
空きスペース管理
例: ビットマップ
iノードエリア
インデックス ノードは連続的に格納され、同じサイズになります。
ルートディレクトリ
メモリ内のファイルシステムの構造
ユーザーエリア
ファイル記述子/ファイルハンドル
カーネル領域
ディレクトリキャッシュ
システムオープンファイルテーブル
唯一
ユーザーがファイルテーブルを開く
システムのオープンファイルテーブルインデックスが含まれます
仮想ファイルシステム
統一された標準システムコールインターフェースを上位ユーザーに提供 基盤となる特定のファイル システムのシールド実装の違い
下位レベルのファイルは特定の機能を実装する必要があります
開かれた各ファイルは、統合されたデータ構造で表される vnode をメイン メモリ内に作成します。
vnode はメインメモリにのみ存在します i ノードはメイン メモリにロードされ、外部メモリに保存されます。
ファイルシステムのマウント(インストール)
新しくマウントしたファイルシステムを仮想ファイルシステムに登録し、 メモリマウントテーブルには、各ファイルシステムの情報が含まれています
新しくマウントされたファイル システムは、仮想ファイル システムに関数アドレス リストを提供する必要があります。
ファイルシステムをマウントポイント(親ディレクトリ)にマウントします。
ファイルスペース管理
収納スペース分割
物理ディスクをファイルボリューム(論理ディスク、論理ボリューム)に分割します。
ファイル ボリュームは複数の物理ディスクで構成できます
ストレージスペースの初期化
ファイルボリュームの初期化
ディレクトリ領域
ファイルディレクトリ情報FCB、ディスクストレージスペース管理に使用される情報を格納
ファイル領域
ファイルデータを保存する
スペース管理
フリーリスト方式
継続配分方式に属する
連続した記憶領域をファイルに割り当てる
最初の適応、最良の適応、および最悪の適応を使用できます
リサイクルは動的割り当てと同じです
フリーリスト方式
フリーディスクチェーン
リンク リストのようなリンク フリー ディスク ブロック
空きディスク ブロックには、次の空きディスク ブロックへのポインタが格納されます。
配布する
適応アルゴリズムを通じて条件を満たすディスク ブロックを見つけます
リサイクル
リサイクルされたディスクブロックをチェーンの終端に吊るす
割り当てとリサイクルはシンプルだが非効率的
空きエクステントチェーン
いくつかの連続した空きディスク ブロックが空きディスク領域を構成します
エクステントの長さは、エクステント内の最初の空きディスク ブロックに記録され、次のエクステントへのポインタになります。
配布する
通常、最初の適応
リサイクル
再利用領域を隣接する空きエクステントと結合する
割り当てとリサイクルは面倒だが効率的
ビットマップ方式
ディスクブロックが使用されているかどうかを示すためにバイナリビットを使用します
ディスク番号 b = n×i j
nは語長を表します
iはフォントサイズ(行番号)を表します
i = b/n
取り除く
jはビット番号(列番号)を表します。
j = b%n
残りを取る
連続割り当てと離散割り当ての両方に適用可能
グループ連携方法
グループチェーンブロック(スーパーブロック)は、空きディスクブロックのブロック番号と次の空きディスクブロックのグループの番号を格納するために使用されます。
空きディスクブロックのブロック番号は、グループブロック(エクステント)の先頭のディスクブロック番号となります。
グループの数は制限されています。たとえば、グループを形成できるのは 100 個の空きディスク ブロックのみです。
次のグループに空きディスク ブロックがない場合、ブロック番号は -1 に設定されます。
配布する
最後のディスクブロックから割り当て、スーパーブロック内の空きディスクブロック数を変更します
あるブロックに次の情報グループが格納されている場合、その情報をスーパーブロックにコピーしてから割り当てる必要があります。
リサイクル
スーパーブロックがいっぱいでない場合
次に、リサイクルされたブロックをスーパーブロックの直後に挿入します。
スーパーブロックがいっぱいの場合
リンクリスト形式の先頭挿入方式
ディスク
構造
ディスク
追跡
セクタ
ディスクブロックです
各セクターの容量は同じで、最も内側のセクターの密度が最も高くなります。
ディスク
ディスクの各面が磁気ヘッドに対応
シリンダー
すべてのディスク上で同じ相対位置を持つトラックがシリンダーを形成します
ディスクアドレスは(シリンダー番号-ディスク番号-セクター番号)で表されます。
ディスクスケジューリングアルゴリズム
読み取りと書き込みに必要な時間
シークタイム
ヘッドアームを起動します
所要時間
動く頭
1 つのトラックにまたがるには m かかり、n トラックにまたがる必要があります。
=sm×n
送信時間
読み取り/書き込み時間
回転速度はr、読み書きされるバイト数はb、各トラックのバイト数はNです。
= b/(r N)
遅れ
ディスク速度はrです
= 1/(2r)
ディスクスケジューリングアルゴリズム
シーク時間に直接影響します
早い者勝ち
検索時間が短い順
飢餓を引き起こす可能性がある
スキャンアルゴリズム
磁気ヘッドは最内周または最外周トラックに移動するときのみ逆方向に移動できます。
最外層または最内層がリクエストを処理しない場合でも、反対方向に移動し始める前に、ここに移動する必要があります。
飢えを引き起こさない
見た目アルゴリズム
スキャンアルゴリズムの改善
ヘッドの移動方向に他に要求がない場合は、直接方向を変更できます。
サイクルスキャン (エレベーター配車)
さまざまな位置に対するスキャンアルゴリズムの応答が不均一である問題を解決
戻る際はいかなる要求にも応答せず、開始エンドに直接移動します。
方向を変えるのは端まで移動してからのみ (スキャンアルゴリズムと同じ)
c-lookアルゴリズム
ループスキャンの改善
方向を変更するために端まで移動する必要はありません。移動方向は、他の要求なしに方向を変更できます。
遅延を短縮する方法
代替番号付け
論理的に隣接するセクターを物理的に分離する
場違いなネーミング
同じセクター内のセクターをずらして配置します (たとえば、セクター 0 とセクター 1 は、他の番号のセクターによって分離されます)。
アドレス構造の設計
シリンダー番号-ディスク番号-セクター番号
ヘッドの移動時間の短縮
ディスクの管理
ディスクの初期化
物理フォーマット
各ディスクトラックをセクタに分割する
パーティション
ディスクをパーティションに分割します。各パーティションは複数のシリンダーで構成されます。
論理フォーマット
ファイルシステムの作成
ブートブロック
パソコンの電源を入れると一連の初期化作業が必要になりますが、ブートローダープログラムを実行することで初期化作業が完了します。
完全なブートローダーは、ディスク上の固定の場所にあるディスクの起動ブロック (ブート ブロック) に保存されます。
不良ブロック処理
不良ブロックはハードウェア障害です
シンプルディスクの場合
不良ブロックはオペレーティング システムに対して不透明です (マークされます)。
複雑なディスクの場合
セクタースペア
複雑なディスクの場合、ディスク コントローラは不良ブロックのリンク リストを維持し、物理フォーマット中にそれを初期化し、スペア セクタを使用して不良ブロックを置き換えます。
ソリッドステートドライブSSD
原理
フラッシュメモリベース 電気的に消去可能な ROM (EEPROM) に属する
構成
フラッシュ翻訳レイヤー
変換論理ブロック番号
対応するページを見つける
記憶媒体
複数のフラッシュメモリチップ
各チップには複数のブロックが含まれています
各ブロックには複数のページが含まれます
読み取りおよび書き込みのパフォーマンス
ページ単位で
ブロック単位で
ランダムアクセスをサポート
読み取り速度が速い 書き込み速度が遅い
機械式ハードドライブとの比較
SSD は機械式ハードドライブよりも読み取りと書き込みが速く、ランダムアクセスが可能です。
SSDは静かでノイズレス
SSD の特定のブロックは、複数回消去すると損傷します。 機械式ハードディスクのセクターは、大量の書き込みによって損傷することはありません
ウェアレベリング
ブロック全体にわたる平均消去操作
動的なウェアレベリング
データ書き込み時は、累積消去回数の少ないフラッシュメモリブロックを優先してください。
静的ウェアレベリング
古いブロックは読み取り操作を担当します。 新しいブロックは書き込み操作を担当します。
動的よりも静的な方が優れています
第 5 章 IO 管理
機器の分類
ブロックデバイス
データ交換はブロック単位で行われます
高い伝送速度
キャラクターデバイス
データのやり取りは文字単位で行われます
転送速度が低く、アドレス指定できません
低速デバイス
マウスとキーボード
中速装備
プリンター
高速装置
ディスクドライブ、CDドライブ
IOインターフェース
デバイスコントローラー
CPUとデバイスの間にあります
デバイスコントローラーとCPU間のインターフェース
データライン、アドレスライン、制御ラインを含む
デバイスコントローラーとデバイス間のインターフェース
コントローラーには 1 つ以上のデバイス インターフェイスがあります
IOロジック
機器の制御を実現
デバイスコントローラーの機能
CPUを識別するコマンドを受け入れます
データ交換
デバイスのステータスを特定して報告する
住所認識
データバッファ
エラー制御
IOポート
CPUから直接アクセスできるデバイスコントローラ内のレジスタ
言い換えれば、複数の IO ポートが 1 つの IO インターフェイスを形成します。
データレジスタ
ステータスレジスタ
制御レジスタ
CPUとIOポートの通信方式
独立したアドレス指定
各ポートにポート番号を割り当てると、オペレーティング システムのみが特別な IO 命令を使用してポートにアクセスできます。
統一されたアドレス指定
各ポートには一意のメモリ アドレスが割り当てられます。
IO制御方式
直接プログラム制御
CPU は、ワードが IO コントローラのデータ レジスタにあると判断するまで、ループでペリフェラルのステータスをチェックします。
割り込み駆動モード
IO デバイスが CPU の動作を積極的に中断してサービスを要求できるようにします。 それによりCPUを解放します
データの転送が必要になるたびに CPU を中断します
DMAモード
IOデバイスとメモリ間の直接データ交換パスを確立する
要求されたデータ転送バッチの終了時に CPU を中断します。
CPU が命令を発行するときは、連続したデータ ブロックの読み取りまたは書き込みのみが可能です。
チャネル制御モード
特に入力と出力を担当するプロセッサ
ハードウェアの一部です
CPU は、実行するチャネル プログラムと IO デバイスの場所を示す io コマンドを発行します。
チャネルはメモリ内のチャネル プログラムを実行します
チャネルは CPU とメモリを共有します
io ソフトウェア階層
ユーザーIOソフトウェア
スプール技術の実装
仮想デバイス技術
専用機器の稼働率向上
専用デバイスを共有デバイスに変換する
CPUの高速性とIOデバイスの低速性の矛盾を緩和
ソフトウェア経由
マルチプログラミングの技術サポートが必要
このシステムは、ディスクの固定領域に入力ウェルと出力ウェルの 2 つの領域を開きます。
メモリ内の 2 つのバッファ (入力バッファと出力バッファ) を開きます。
共有プリンター
専用装置
個別プロセスによるシリアル使用を可能にするデバイス
静的割り当てを使用する
共有デバイス
複数のプロセスが一緒に使用できるようにするデバイス
マクロ的な意味での同時使用 微視的にはまだ交互に変化している
動的割り当てを使用する
共通の印刷原則
このシステムは、各ユーザーが必要とする印刷要求をディスクの入力ウェルに入力し、ディスク、メモリ、CPU の速度差を利用して、微視的な交互と巨視的な同時処理を実現します。
デバイス非依存ソフトウェア (デバイス非依存ソフトウェア)
独立
ユーザーがプログラミングしているデバイスは、実際のデバイスとは何の関係もありません
関数
論理デバイステーブルの管理
システム論理デバイス テーブル LUT を 1 つだけセットアップします
ユーザーごとに論理デバイステーブルLUTを設定
エラー制御
設備の割り当てとリサイクル
配分で考慮される要素
デバイス固有のプロパティ
デバイス割り当てアルゴリズム
デバイス割り当てのセキュリティ
安全な配布方法
プロセスが IO 要求を発行すると、ブロック状態になり、IO 操作が完了するまでブロック状態は解除されません。
CPU と IO デバイスがシリアル動作になる
安全でない割り当て方法
プロセスは、IO リクエストを発行した後も実行を継続し、IO リクエストが満たされない場合にのみ、IO リクエストを発行できます。
デッドロックの可能性がある
配分戦略
静的割り当て
必要なすべてのリソースを最初から割り当てます
動的割り当て
プロセス実行中に必要に応じて割り当てを継続する
デバイス割り当てデータ構造
チャンネル、コントローラー、デバイスの関係
デバイス制御テーブルDCT
特定のデバイスを表し、テーブルのエントリの内容はデバイスの各属性です。
コントローラ制御テーブル COCT
チャネル管理テーブル CHCT
各チャンネルは CHCT に対応します
システムデバイステーブルSDT
すべてのデバイスを含む
割り当てステップの改善
ユーザーが指定した論理デバイス名
論理デバイス名と物理デバイス名のマッピング(論理デバイステーブルLUT)による
LUT エントリには、論理デバイス名、物理デバイス名、デバイス ドライバ エントリ アドレスが含まれます。
バッファ管理
目的
CPUの処理速度に対して入出力速度が遅いことによるデータの蓄積問題を解決
単一バッファ
各データの処理時間を計算する
初期状態を仮定し、次回この状態に到達するまでにかかる時間を計算します。
バッファへの入力時間をT、バッファをワークエリアに転送する時間をM、データを処理する時間をCとします。
初期状態: ワークエリアがいっぱい、バッファが空
データの各ブロックの処理にかかる時間: MAX (C, T) M
計算式は参考用であり、特定の問題を詳細に分析し、ガント チャートを使用します。
ダブルバッファリング
作業領域は空で、1 つのバッファーが空で、もう 1 つのバッファーがいっぱいです。
データの各ブロックの処理にかかる時間: MAX (CM, T)
バッファプール
同時プロセスによる効率的な入出力を可能にする
IOスケジューリングを実装する
何らかのアルゴリズムを使用して、IO リクエストを処理する適切な順序を決定します。
デバイスの保護
デバイスは特別なファイルとして表示され、各ファイルには FCB が割り当てられ、アクセス許可が設定されます
デバイスドライバ
ハードウェアデバイスに対する特定の制御
データが存在するディスクのシリンダー番号、ヘッド番号、セクター番号などを計算します。
デバイスが異なれば、必要なドライバーも異なります
io API
キャラクターデバイスインターフェース
get/put 呼び出し、文字デバイスへの文字の読み取りと書き込み
ブロックデバイスインターフェース
読み取り/書き込みシステムコール: 文字の読み取りと書き込み シーク : 変更
ネットワークデバイスインターフェース
ネットワークソケットインターフェース ソケット システム コール: ネットワーク ソケットを作成し、ネットワーク プロトコルを指定します。 bind: ソケットをローカルポートにバインドします。 connect: ソケットをリモートアドレスに接続します 読み取り/書き込み: ソケットからのデータの読み取りと書き込み
ブロッキング/ノンブロッキング IO
ブロッキングイオ
プログラムは io システム コールを発行し、プロセスはブロックされて待機します。
ノンブロッキングIO
プログラムは io システム コールを発行します。システム コールはすぐに返されるため、プロセスはブロックして待機する必要がありません。