1。概要
オペレーティングシステムの機能:
- プロセス管理
- ストレージ管理
- ファイル管理
- 仕事の管理
- 端末管理
2.プロセス管理
2.1プロセスの状態
プロセスの3つの状態:実行中、準備完了、待機中
プロセスの5つの状態モデル:静的準備完了、静的ブロック、アクティブ準備完了、アクティブブロック、実行中。
2.2先行図
先行グラフの定義:
先行グラフは、プログラムの各部分間の依存関係、または大規模な計算のサブタスク間の因果関係を説明するための図です。先行グラフにはサイクルがあってはなりません。
2.3プロセスの同期と相互排除
2.4PV操作
- 重要なリソース:プリンター、テープドライブなど、相互に排他的な方法でプロセス間で共有する必要のあるリソース。
- クリティカルセクション:クリティカルリソースにアクセスする各プロセスのコードは、クリティカルセクションと呼ばれます。
- セマフォ:は特別な変数です
Pはオランダ語でPasseren、Vはオランダ語でVerhoogです。P操作はリソースを適用するためのものであり、V操作はリソースを解放するためのものです。
PV操作の概略図:
P操作(S <0の場合)はブロッキングプロセスキューに入り、V操作(S <= 0の場合)は、ブロッキングプロセスキューにまだプロセスがブロックされていることを示し、ブロッキングプロセスをウェイクアップします。
たとえば、PVを使用して生産者と消費者の問題を操作する
PV操作の演習:
回答:AC
2.5PV操作と先行グラフ
vは実行を開始するためにリソースを解放することであり、pは待機および待機するためにリソースをロックすることであり、先行図の矢印はv–> p?
上から下、左から右へのスカラーセマフォ
回答:A、C、A
2.6デッドロックの問題
プロセス管理はオペレーティングシステムの中核ですが、適切に設計されていないと、デッドロックの問題が発生します。プロセスが起こり得ない何かを待っている場合、プロセスはデッドロックされます。また、1つ以上のプロセスがデッドロックすると、システムのデッドロックが発生します。
回答:k *(n-1)+ 1、k =プロセスの数、nはシステムリソースの数です。(少なくとも1つのプロセスの実行を終了させます)
デッドロック状態
- 相互排除条件:リソースは常に1つのスレッドによってのみ占有されます。
- 要求と保留の条件:リソースを要求することによってプロセスがブロックされると、取得したリソースを保持します。
- 非剥奪状態:スレッドによって取得されたリソースは、使い果たされる前に他のスレッドによって強制的に剥奪されることはなく、
リソースは使い果たされた後にのみ解放されます。 - 循環待機条件:いくつかのプロセスが、ヘッドツーテールの循環待機リソース関係を形成します。
デッドロック防止
デッドロックを回避するには、デッドロックを引き起こす4つの条件のうちの1つを破るだけで済みます。それでは、1つずつ分析してみましょう。
- 相互排他条件を破棄する:ロックと相互に排他的にする必要があるため、この条件を解除する方法はありません(重要な
リソースには相互に排他的なアクセスが必要です)。 - 要求を解除して条件を保留する:すべてのリソースを一度に要求します。
- 非プリエンプション条件の破棄:一部のリソースを占有しているスレッドが他のリソースにさらに適用される場合、適用できない場合は、
占有しているリソースをアクティブに解放できます。 - 循環待機状態の破壊:順番にリソースを申請することで防止します。特定の順序でリソースを申請し、逆の順序でリソースを解放します。
循環待機条件を解除します。
デッドロックの回避
デッドロックを回避するための主な方法は2つあります。順序付きリソース割り当て方法と銀行家のアルゴリズム
(1)順序付きリソース割り当て方法です。
整然としたリソース割り当て方法とは、システム内のすべてのリソースに順番に番号を付けることを指します。2つ以上のリソースを適用する場合は、リソース番号の順に適用する必要があります。数が多い場合は、より多くの数のリソースを申請できます。リソースの整然とした割り当ては、デッドロックに必要な4つの条件の1つである循環待機条件を破棄し、デッドロックを防止するという目的を達成します。
(2)銀行家のアルゴリズム
リソース割り当ての原則、銀行家のアルゴリズムの定義:
- リソースの最大需要がシステム内のリソースの数を超えない場合、プロセスを許可できます。
- プロセスは分割払いでリソースを要求できますが、要求の総数が最大需要を超えることはできません
- システムの既存のリソースが、プロセスでまだ必要なリソースの数を満たすことができない場合、プロセスへの要求を延期することができます。ただし、常に限られた時間だけプロセスにリソースを取得させます。
例:
回答:B
2.7プロセス制御ブロックPCB
プロセス制御ブロックPCBの構成は次のとおりです。
- 線形テーブル方式:プロセスの状態に関係なく、すべてのPCBはメモリのシステム領域に継続的に保存されます。この方式は、システム内の少数のプロセスに適しています。
- インデックステーブル方式:リニアテーブル方式を改良したもので、プロセスの状態に応じてレディインデックステーブルとブロッキングインデックステーブルを設定します。
- リンクテーブル方式:システムはプロセスPCBのステータスに従ってキューを形成し、レディキュー、ブロッキングキュー、実行キューなどを形成します。
3.ストレージ管理
3.1パーティションストレージ組織
3.2ページストレージ
ページストレージ:プログラムとメモリを同じサイズのブロックに分割し、プログラムをページ単位でメモリにロードします。
3.3セグメントストレージ
セグメントストレージ:論理空間は、ユーザーのジョブの自然なセグメントに従って分割されてから、メモリに転送されます。セグメントの長さは異なる場合があります。
3.4セグメントページストレージ
セグメント化されたページストレージ:セグメントとページの組み合わせ。最初にセグメント化し、次にページ分割します。プログラムには複数のセグメントがあり、各セグメントには複数のページがあり、各ページのサイズは同じですが、各セグメントのサイズは異なります。
3.5クイックテーブル
高速テーブルは特別な種類のキャッシュメモリ(キャッシュ)であり、コンテンツはページテーブルのコンテンツの一部またはすべてです。オペレーティングシステムに高速テーブルを導入すると、アドレスマッピングの速度が向上します。
高速テーブルは、仮想ページストレージ管理で現在のプロセスページテーブルのキャッシュとして設定されます。通常、高速テーブルはMMUにあります。
アドレス変換プロセス
- 論理アドレスのページ番号に従ってクイックテーブルを検索します
- ページが高速テーブルにすでに存在する場合、絶対アドレスはページシェルフ番号とユニット番号によって形成されます
- ページが高速テーブルにない場合は、メインメモリのページテーブルを再度確認し、ユニット番号で絶対アドレスを作成し、同時に高速テーブルにページを登録してください。
- クイックテーブルがいっぱいになり、新しいページを登録する必要がある場合、特定の置換戦略に従って古い登録アイテムを削除する必要があります[2]。
3.6ページ除去(置換)アルゴリズム
より詳細なグラフィックの説明:https://blog.csdn.net/m0_60001307/article/details/118554410
最適(OPT)アルゴリズム
毎回削除対象として選択されるページは、今後使用されないページ、または長時間アクセスされないページになります。これにより、ページフォールト率が最小になります。
先入れ先出し(FIFO)アルゴリズム
FIFOアルゴリズムは、最も単純なページ置換アルゴリズムです。名前が示すように、FIFOによって毎回削除されるページは、メモリに入る最初のページです。FIFOの実装方法は、メモリに転送されたページを順番にキューに入れることです。ページを置き換える必要がある場合は、キューの先頭にあるページを選択できます。
2番目の図はジッターを示しています。
最近使用されていない(LRU)アルゴリズム
最も最近使用されていない(LRU)アルゴリズムは、「ジッター」ではありません。LRUの理論的基礎は、「局所性の原則」の
演習です。
演習:
3.7ディスク
ディスクスケジューリングは、アーム移動スケジューリングとローテーションスケジューリングに分けられ、通常、アーム移動スケジューリングが最初に実行され、次にローテーションスケジューリングが実行されます。
ディスクスケジューリングアルゴリズム
例:ディスクに0から199までの番号が付けられた合計200のシリンダーがあり、シリンダーNo. 143にアクセスするリクエスターにサービスを提供した後、現在シリンダーNo. 125にアクセスする要求をサービスしており、複数のリクエスターが同時に待機しているとします。サービスでは、毎回アクセスしたいシリンダー番号は86、147、91、177、94、150、102、175、130です。
(1)先着順アルゴリズム
これは、比較的単純なディスクスケジューリングアルゴリズムです。プロセスがディスクへのアクセスを要求する順序に従ってスケジュールします。このアルゴリズムの利点は、公平でシンプルであり、各プロセスの要求を順番に処理でき、特定のプロセスの要求を長期間満たすことができない状況が発生しないことです。このアルゴリズムはシーク用に最適化されていないため、ディスクへのアクセス要求が多い場合、このアルゴリズムはデバイスサービスのスループットを低下させ、平均シーク時間が長くなりますが、各プロセスはサービス応答時間を取得します。小さいです。
先着順(125)86.147.91.177.94.150.102.175.130
(2)最短のシークタイムファースト
アルゴリズムは、シーク時間を毎回最短にするために、現在のヘッドが配置されているトラックに最も近いトラックにアクセスする必要があるこのようなプロセスを選択します。このアルゴリズムは、より良いスループットを得ることができますが、保証することはできません。最短の平均シーク時間。欠点は、ユーザーのサービス要求に対する応答の機会が等しくないため、応答時間が大幅に変動することです。多数のサービスリクエストの場合、インナーエッジトラックとアウターエッジトラックへのリクエストは無期限に遅延し、一部のリクエストの応答時間は予測できなくなります。
最初の最短シーク時間(125)130.147.150.175.177.102.94.91.86
(3)スキャンアルゴリズム
スキャンアルゴリズムは、アクセスするトラックと現在のトラックの間の距離だけでなく、磁気ヘッドの現在の移動方向も考慮します。たとえば、ヘッドが内側から外側に移動している場合、スキャンアルゴリズムによって選択される次のアクセスオブジェクトは、現在のトラックの外側と最も近いトラックの両方にアクセスするトラックである必要があります。このようにして、アクセスする必要のある外部トラックがなくなるまで、磁気アームが整流され、外側から内側に移動します。このとき、そのようなプロセスもスケジューリングのために毎回選択されます。つまり、アクセスされるトラックは現在のトラック内にあり、それによって飢餓の発生を回避します。このアルゴリズムの頭の動きの法則はエレベータの動作に似ているため、エレベータスケジューリングアルゴリズムとも呼ばれます。このアルゴリズムは基本的に、最短シーク時間優先アルゴリズムのサービスが中間トラックに集中し、応答時間が大きく変動するという欠点を克服し、最短シーク時間優先アルゴリズムの利点、つまりスループットが大きく、平均応答時間は短いですが、ウォブルスキャン方式のため、アクセスされる2つのトラックの周波数はまだ中央のトラックの周波数よりも低くなっています。
エレベータースケジューリング(125)102.94.91.86.130.147.150.175.177
(4)サイクリックスキャンアルゴリズム
サイクリックスキャンアルゴリズムは、スキャンアルゴリズムを改良したものです。トラックへのアクセス要求が均等に分散されている場合、ディスクの一方の端に到達して反対方向に移動するときに、頭の後ろに落ちるアクセス要求は比較的少なくなります。これは、これらのトラックが処理されたばかりであり、ディスクのもう一方の端の要求密度が非常に高く、これらのアクセス要求が長時間待機するためです。この状況を解決するために、循環スキャンアルゴリズムでは、ヘッドが一方向に移動します。たとえば、内側から外側に移動するだけで、ヘッドがアクセスされる最も外側のトラックに移動すると、ヘッドはすぐにアクセスされる最も内側のトラックに戻ります。つまり、最小のトラック番号の後に最大のトラック番号が続きます。スキャンのサイクル。
ループスキャン(125)130.147.150.175.177.86.91.94.102
最短移動アームスケジューリングアルゴリズム
ディスクデータ時間の計算を読み取る
4.ジョブ管理
4.1ジョブステータス
4.2ジョブスケジューリングアルゴリズム
一般的なジョブスケジューリングアルゴリズムは次のとおりです。
- 先着順
- タイムスライスローテーション
- 最初の短い仕事
- 最優先方式
- 高応答率優先方式
参照:https://blog.csdn.net/jianbai_/article/details/91344424
応答率=ジョブ待機時間/実行時間
5.ファイル管理
5.1インデックスファイルの構造
インデックスは、直接アドレスインデックス、第1レベルの間接インデックス、第2レベルの間接インデックス、および第3レベルの間接インデックスに分けられます。
演習:
1024/4 = 256
回答:C、D
5.2ファイルとツリーのディレクトリ構造
ツリーのようなディレクトリ構造のファイル
ファイル属性:読み取り専用ファイル属性、アーカイブ属性、システムファイル、隠しファイル
ファイル名の構成:ドライブ文字、パス、メインファイル番号、拡張子
絶対パス:ドライブ文字から始まるパスです
フルファイル名:ルートディレクトリから始まるドライブ文字とパス名を含める必要があります
相対パス:現在のパスから始まるパスです
5.3空きストレージスペースの管理
フリーエリアテーブル方式(フリーファイルディレクトリ)
フリーリスト方式は、連続配分方式です。これは、メモリ管理における動的パーティション割り当てに似ています。
外部メモリスペース上の連続した未割り当て領域は、「空き領域」と呼ばれます。オペレーティングシステムは、ディスク外部メモリ上のすべての空き領域に対して空きテーブルを確立します。各エントリは空き領域に対応し、空きテーブルには「シリアル番号、最初の空きディスクブロック番号、空きディスクブロックの数」などの情報が含まれます。連続ファイル構造で動作します。
各ファイルに連続したストレージスペースを割り当てます。システムは、外部メモリ上のすべての空き領域に対して空きテーブルを確立し、各空き領域は空きテーブルエントリに対応します
フリーリスト方式
すべてのフリーエクステントをフリーチェーンにプルすることです。チェーンを構成するさまざまな基本要素に応じて、リンクリストにはフリーディスクブロックチェーンとフリーディスクブロックチェーンの2種類があります。
フリーディスクブロックチェーンディスク
上のすべての空きストレージスペースを、ディスクブロックを基本要素とするチェーンにまとめます。利点は、ディスクブロックの割り当てと再利用のプロセスが非常に単純であるということです。欠点は、空きディスクブロックのチェーンが非常に長くなる可能性があることです。
フリーエクステントチェーン
これは、ディスク上のすべてのフリーエクステント(各エクステントには複数のディスクブロックを含めることができます)をチェーンにプルすることです。次の空きエクステントを示すために使用されるポインタに加えて、各エクステントには、エクステントのサイズ(ディスクブロックの数)を示す情報もマークする必要があります。この方法は、割り当てと再利用がより複雑ですが、フリーエクステントチェーンは短くなります。
ビットマップ
この方法では、バイナリビットを使用してディスク内のディスクブロックの使用状況を表し、ディスク上のすべてのディスクブロックに対応するバイナリビットがあります。値が0の場合は、対応するディスクブロックが空いていることを示し、値が1の場合は、対応するディスクブロックが割り当てられていることを示します。
運動の質問:
グループリンク方式
フリーリスト方式とフリーリンクリストは、フリーリストが長すぎるため、大きなファイルシステムの使用には適していません。グループリンク方式は、2つの方式の長所を組み合わせ、2つの短所を克服した2つの方式を組み合わせた管理方式です。一般的な考え方は、n個のアイドルセクターのアドレスを最初のアイドルセクターに保存し、次に他の連続するアイドルセクターのアドレスを次のアイドルセクターに保存するというように、すべてのフリーセクターがリンクされるまで続けます。
参照:https://blog.csdn.net/tongyuehong137/article/details/44598893
6.デバイス管理
6.1 I/O管理ソフトウェア
I / O管理ソフトウェアの特定のレベルは、ユーザーレベルのI / Oレイヤー、デバイスに依存しないI / Oレイヤー、デバイスドライバー、割り込みハンドラー、およびハードウェアです。
ユーザーレベルのI/O:I/O呼び出しの発行
デバイスに依存しないI/Oレイヤー:デバイス名の解決、プロセスのブロック、バッファーの割り当て
デバイスドライバー:レジスタの設定、デバイスのステータスの確認。
割り込みハンドラー:I / Oの完了後にデバイスドライバーをウェイクアップします
ハードウェア:特定のI/O操作を完了します。
6.2データ伝送制御モード
主なDMAメソッド:
6.3仮想デバイスとスプーリングテクノロジー
オペレーティングシステムでは、仮想デバイスは通常、スプーリングテクノロジを採用し、ディスクデバイスを使用して仮想デバイスを提供します。スプーリング技術は、実際には、ある種類の物理デバイスを使用して別の種類の物理デバイスをシミュレートする技術であり、専用のデバイスを複数の仮想デバイスに変換する技術であり、速度マッチング技術でもあります。スプーリングシステムは、「事前入力プログラム」、「低速出力プログラム」、「並列管理プログラム」、および入出力並列で構成されています。
7.マイクロカーネルオペレーティングシステム
特別なオペレーティングシステム
リアルタイムオペレーティングシステムは、特定の制限時間内に特定の機能の完了を保証するオペレーティングシステムです。リアルタイムオペレーティングシステムは、ハードリアルタイムとソフトリアルタイムに分けられます。ハードリアルタイムでは、オペレーティングシステムの設計時に保証されている、指定された時間内に操作を完了する必要があります。ソフトリアルタイム。タスクの優先度に応じて、できるだけ早く操作を完了する必要があります。それだけです。