この一連のブログは、深セン大学のオペレーティング システムコースの核心的な内容と参考文献「コンピュータ オペレーティング システム」を整理することに重点を置いています (質問がある場合は、コメント エリアで議論および指摘するか、私に直接連絡してください)プライベートメッセージ)。
概要
このブログでは主にオペレーティングシステムの第6章に入出力システムに関する関連知識を紹介します。
目次
4. ユーザーレベルの I/O ソフトウェア - スプーリングシステム
2.4 サイクリックスキャンスケジューリングアルゴリズム (CSCAN)
1. I/O(入出力)方式
入出力システム (Input/output) システム管理の主な対象は、I/O デバイスと対応するデバイス コントローラーであり、主な機能は、ユーザーからの I/O要求を完了し、I/O 速度を向上させ、I/O 速度を向上させることです。デバイスの利用。
1。概要
I/O ソフトウェアには幅広い側面が含まれます。下位ではハードウェアと密接に関係しており、上位ではファイル システム、仮想メモリ システム、およびユーザーと直接対話します。今日の主流のソリューションは、下位階層の I/O システムを使用する階層型 I/O システムです。入力を完了するレベルのサービス関数をエクスポートし、上位層にサービスを提供するサブ関数。
このうち、I/O システムの各モジュールの階層図は次のとおりです。
2. I/Oデバイスとデバイスコントローラ
I/O デバイスは一般に、I/O 操作を実行する機械部品と制御 I/O を実行する電子部品で構成されます。前者は I/O デバイス、後者はデバイス コントローラーまたはアダプターです。マイクロコンピュータやミニコンピュータのコントローラは、多くの場合プリント回路カードの形で作られているため、コントロール カード、インターフェイス カード、またはネットワーク カードと呼ばれ、コンピュータの拡張スロットに挿入できます。一部の大規模および中規模のコンピュータ システムでは、I/O チャネルまたは I/O プロセッサも構成されます。
I/O デバイスには次のような多くの分類があります。
- 利用特性による分類: ①ストレージデバイス(外部メモリ:大容量、低速) ②I/Oデバイス(入出力/インタラクティブデバイス、キーボードマウススキャナ/ディスプレイ)
- 伝送速度による分類:①低速機器②中速機器③高速機器
通常、デバイスは CPU と直接通信せず、デバイス コントローラーを介して通信します。
デバイス コントローラの主な機能は、1 つ以上の I/O デバイスを制御し、I/O デバイスとコンピュータ (CPU) の間のデータ交換を容易にすることです。デバイス コントローラーは次のもので構成されます。
3.I/O通道
CPU と I/O デバイスの間にデバイス コントローラーを追加すると、I/O に対する CPU の介入が大幅に軽減されますが、ホストが多数のペリフェラルで構成されている場合、CPU への負担は依然として大きくなります。このため、CPUとデバイスコントローラの間にI/Oチャネル(I/O Channel)が追加されます。その主な目的は、独立した I/O 操作を確立することです。
I/O チャネルは、I/O 命令を実行する機能を備えた特殊なプロセッサであり、チャネル (I/O) プログラムを実行することで I/O 動作を制御します。
1. 命令タイプは単一であり、主に I/O 操作に関連する命令に限定されます。
2. 独自のメモリがない場合、チャネル プログラムはホスト メモリに配置されます。
したがって、I/O チャネルに「ボトルネック」の問題が発生し、チャネルの価格が高いためチャネル数が少なくなり、I/O 動作が制限され、システムのスループットが低下します。下図に示すように、デバイス 4 を起動するには、チャネル 1 とコントローラ 2 を起動する必要があります。すでに他のデバイスによって占有されている場合、起動に失敗します。
主なソリューションは、次のようなマルチチャネル I/O システムです。
「ボトルネック」問題を解決するだけでなく、システムの信頼性も向上します。
4. I/O制御方式
I/Oデバイスの制御方法としては、主にポーリングプログラムからDMAコントローラへの割り込み、チャネルまでの開発プロセスが行われます。開発の中心的な目的は、I/O 制御におけるホストの介入を減らし、より多くのデータ処理タスクを完了できるようにすることです。
- ポーリング プログラマブル I/O モード: 入出力時、ビジー ステータス ビットが 1 に設定され、テストは連続サイクルで完了するため、CPU が大幅に浪費されます。
- 割り込みを使用したプログラマブル I/O モード: CPU と I/O デバイスは並行して動作し、CPU はデータ入力後の毎回の割り込みに少量の時間を費やします。
- ダイレクトメモリアクセスモード: バイト(byte)単位で割り込みI/Oモードが介在するため、ブロックデバイスでは非常に非効率です。そこでDMAコントローラを導入し、以下のような構成としました。
- I/O チャネル制御方法: データ ブロックに対する読み取りと書き込みの介入を、データ ブロックのグループに対する読み取りと書き込みの介入に減らします。
I/O チャネル制御メソッドの中心的な実装は、チャネル プログラムを通じて I/O デバイスの制御を完了することです。チャネル プログラムには通常、次の情報が含まれます。
(1) 動作: 読み取り、書き込み (2) P: チャネル終了ビット: P=1 は、このコマンドがチャネル プログラムの最後のコマンドであることを意味します (3) R: 記録終了ビット: R=1 は、これが最後のコマンドであることを意味します特定のレコードを処理します。 1 つの命令 (4) カウント: この命令によって読み書きされるバイト数を示します。 (5) メモリ アドレス: 文字がメモリに送信される最初のアドレスを示します。
上の例には 3 つのレコードが含まれており、1 ~ 3 の命令が 1 つのレコード、4 が 1 つ、5 ~ 6 が 1 つのレコードです (R を参照)。
2. バッファ管理
最新のオペレーティング システムでは、ほとんどすべての I/O デバイスが CPU とデータを交換するときにバッファを使用します。これは基本的にストレージ領域であり、一般にハードウェア レジスタまたはメモリ (より一般的には) で構成されます。
バッファリングを導入する主な理由は次のとおりです。
- CPU と I/O デバイス間の速度の不一致を軽減します。プロデューサーは、コンシューマーの準備が完了するのを待たずにデータをバッファに出力できます。
- CPU の割り込み周波数を下げ、CPU 割り込み応答時間の制限を緩和します。以下の例では、(a) 100us に 1 回の割り込みと応答の場合、(b) 割り込み周波数を 1/8 に減らすことができ、( c) 応答時間を 1/8 に短縮できます。
- CPU と I/O デバイス間の並列性の向上
1. 単一バッファ:
1 つの I/O リクエスト 1 つのバッファ
実行サイクル: Max(C, T) + M
2. ダブルバッファ:
コンシューマがバッファ データを取得しない場合、プロデューサは新しいデータを入力できないため、ダブル バッファが導入されます。
動作サイクル: Max(C+M、T)
C+M<T: ホストは高速で、ホストは待機し、ディスクは継続的に入力します。
3. 設備の配置
専用機器の割り当てを実現するには、システムは対応するデータ構造、つまりデバイス制御テーブル (DCT)を構成する必要があります。
コントローラ制御テーブル、チャネル制御テーブル、システム機器テーブルの比較は次のとおりです。
単一チャネル システムのデバイス割り当てプロセスは次のとおりです。
4. ユーザーレベルの I/O ソフトウェア - スプーリングシステム
ユーザーレベルの I/O ソフトウェアでは、完全にカーネルの外部で実行されるスプール システムが必要です。スプーリング システム (テクノロジ)により、1 つの物理 I/O デバイスを複数の論理 I/O デバイスに仮想化し、複数のユーザーが共有できます。
SPOOLing テクノロジの中核は、I/O を担当するシステム内の 2 つのプロセスであり、I/O 周辺機器の機能をシミュレートし、(偽の) オフライン入出力を実現します。
そのシステム構成は次のとおりです。
1. 入力ウェルと出力ウェル:
ディスク上に 2 つの大きなストレージ スペースが開かれました。
- 入力ウェルは、オフライン入力をシミュレートするためのディスクであり、I/O デバイスによって入力されたデータを保存するために使用されます。
- 出力ウェルは、オフライン出力をシミュレートするためのディスクであり、ユーザー プロセスの出力データを保存するために使用されます。
2. 入力バッファと出力バッファ:
CPU とディスク間の速度の不一致の矛盾を軽減するために、メモリ内で 2 つのバッファが開かれます。
- 入力バッファは、入力デバイスから送信されたデータを入力ウェルに送信する前に一時的に保存するために使用されます。
- 出力バッファは、出力ウェルによって送信されたデータを出力デバイスに送信する前に一時的に保存するために使用されます。
3. 入力プロセス SPi と出力プロセス SPo:
- 入力プロセスSPiは、オフライン入力中に周辺制御マシンをシミュレートし、ユーザーが入力したデータを入力デバイスから入力バッファを介して入力ウェルに送信します。
- 出力プロセスSPoは、オフライン出力中に周辺制御マシンをシミュレートし、ユーザーが必要とする出力データを出力ウェルから出力バッファを介して出力デバイスに送信します。
システムの特徴は以下の通りです。
- I/O速度を上げる
- 専用デバイスを共有デバイスに変える
- 仮想デバイス機能を実現
5. ディスクストレージ管理
ディスク ストレージはコンピュータ システムで最も重要なストレージ デバイスであり、多数のファイルが保存され、ファイルの読み取りと書き込みにはディスクへのアクセスが伴います。
1。概要
1.1 構造とデータ
ディスク構造は次のとおりです。
1. ディスクの構成:
- ディスクは複数のプラッターで構成されています
- 各ディスクは 2 つのディスクに分割されます
- 各ディスクは複数のトラック(同心円)に分割されています
- 各トラックはいくつかのセクターに分割されています
2: ディスクのアドレス指定: ヘッド - シリンダー - セクター
- ヘッド ヘッド: 最初のディスクの表または裏
- シリンダー シリンダー: どのトラックか
- セクター: トラック上のパーティション番号
セクター(Sector)のデータ構造は以下のとおりで、主に(1)識別子フィールド(ID Field)、(2)データフィールド(Data Field)から構成されます。
ディスクには次の 2 種類があります。
- 固定ヘッド ディスクには、トラックごとに 1 つの読み取り/書き込みヘッドがあり、すべて剛性アームに取り付けられています。磁気ヘッド並列読み取り/書き込み、高速 I/O 速度、大容量ディスクに使用
- 可動ヘッドディスク。各ディスクにはヘッドが 1 つだけ装備されており、ヘッドは移動してシークできます。I/O速度は遅く、構造が単純で、中小規模のディスク装置に広く使用されています。
1.2 ディスクアクセス時間
読み取りまたは書き込みを行うには、磁気ヘッドが指定されたトラックに移動し、指定されたセクターが磁気ヘッドの下で回転するのを待ってからデータの読み取りまたは書き込みを行う必要があるため、ディスクのアクセス時間は次の 3 つの部分に分割できます。
1. シーク時間 Ts: ヘッドが指定されたトラックに移動する時間
磁気アームの開始時間 s とヘッドが n トラック移動するのにかかる時間の合計
Ts=m×n+s
ヒント: m はディスクドライブの速度に関係する定数です。一般的なディスクの場合は m=0.2、高速ディスクの場合は m≤0.1 です。磁気アームの起動時間 s は約 2 ms です。 。一般的なシーク時間 5 ~ 30 ms
2. 回転遅れ時間 Tτ: セクタが磁気ヘッドの下を移動するのにかかる時間
5400 rpm のハードディスク、つまり 5400 r/min、1 回転にかかる時間は 11.1 ms、平均回転遅れ時間 Tτ は 5.55 ms
3. 伝送時間 Tt: データがディスクから読み取られる、またはディスクに書き込まれる時間
これは、毎回の読み取り/書き込みバイト数 b と回転速度に関係します。r はディスクの 1 秒あたりの回転数、N はトラック上のバイト数です。
セクタ数がわかっている場合、Tt = 1/r*セクタ数
4. 総アクセス時間 Ta:
一度に読み書きされるバイト数がトラックの半分のバイト数に等しい場合、合計時間は次のようになります。
ヒント: 送信時間の割合は低いです
例
2. ディスク スケジューリング アルゴリズム
1. ディスク I/O 速度を向上させる方法:
ディスクハードウェアのパフォーマンスを向上させる 適切なスケジューリングアルゴリズムを使用してディスクの高速バッファを設定する
2. ディスクのスケジューリング:
ディスクは複数のプロセスがアクセスできる共有デバイスであるため、ディスク スケジュール アルゴリズムが必要です
ディスク スケジューリング アルゴリズムの目標は、平均シーク時間を短縮することです。
2.1 先着順 (FCFS)
コア: プロセスがディスクへのアクセスを要求する順序に従ったスケジューリング
- 利点: シンプル、各リクエストを順番に処理できる
- 短所: 平均シーク距離が長い
2.2 最短シーク時間優先 (SSTF)
コア: アクセス トラックが現在のトラックに最も近いという原則に基づく (実際には優先順位ベースのスケジューリング)
ヒント: 現在のトラックは 100 です
- 利点: 平均シーク時間が短い
- 短所: 一部のプロセスで「スタベーション」が発生し、磁気ヘッドが長時間同じトラック上に留まる可能性があります (磁気アームの固着)。
2.3 スキャン スケジュール アルゴリズム (SCAN)
コア:磁気ヘッドの移動方向とアクセストラックと現在のトラック間の最短距離の2つの原則による
磁気ヘッドの移動方向は...、外側、内側、外側、... を常に繰り返します。例: 現在のヘッドはトラック 80 で停止し、トラック 89 の要求が完了したところです。磁気ヘッドの移動方向は内向きであること。
ヒント: 現在のトラックは 100 で、方向は外側です。
- 利点: プロセスの「飢餓」現象がなくなり、平均アクセスシーク時間が短縮されます。
- 短所: ヘッドに近いがヘッドの移動方向と逆方向のトラックは待ち時間が長く、ヘッドが同じトラックに長時間留まる可能性があります (磁気アームの固着)
2.4 サイクリックスキャンスケジューリングアルゴリズム (CSCAN)
コア: 最も外側のトラックに到達した後、最も小さいトラックに戻り、SCAN アルゴリズムを開始します。
ヒント: 現在のトラックは 100 で、方向は外側です。
- 利点: プロセスの「飢餓」が発生せず、平均アクセスシーク時間が短く、最長待ち時間が SCAN より短い (半分)
- 欠点: ヘッドが同じトラックに長時間留まる可能性があります (磁気アームの固着)
2.5 ディスクスケジューリングアルゴリズムの例
ディスク管理システムがあり、ディスクへのアクセスを待機している現在のリクエスト シーケンスが 15、10、30、150、190、80、95、40、140、であると仮定して、トラックには内側から外側へ昇順に番号が付けられます。 20. 現在のヘッドはトラック90で停止しており、トラック93へのアクセスは先ほど完了したところである。各アルゴリズムのスケジューリング シーケンスと平均シーク距離を見つけるには、FCFS、SSTF、SCAN、CSCAN アルゴリズムをそれぞれ使用してください。
オペレーティング システム - FCFS、SSTF、SCAN、CSCAN アルゴリズムを使用して合計シーク長と平均シーク長を計算する例 (詳細) - プログラマーが求めた
FCFS、SSTF、SCAN、CSCAN_scan アルゴリズム例 OS ディスク スケジューリング アルゴリズムの説明
3. 追加の知識
1. ディスクキャッシュ:
メモリ内の記憶領域を使用して、ディスクから読み取られた一連のディスク ブロック内の情報を一時的に保存します。
キャッシュは、論理的にはディスクに属しますが、物理的にはメモリ内に存在するディスク ブロックのセットです。
2. メモリ内の 2 つの形式のキャッシュ:
ディスク キャッシュとしてメモリ内に別の記憶領域を開きます。そのサイズは固定であり、アプリケーションの数には影響されません。
すべての未使用のメモリ領域を、リクエスト ページング システムとディスク キャッシュによって共有されるバッファ プールに変換します。
3. ディスク速度を向上させるその他の方法:
先読み: 局所性の原則に従って、プリページング戦略など、隣接するディスク ブロックを事前にメモリに読み込みます。
遅延書き込み: 変更されたページはすぐにはディスクに書き戻されず、一定量が蓄積されて一度に書き戻されるため、I/O 操作の数が削減されます。
物理ブロックの分散を最適化します。同じファイルの物理ブロックを可能な限り集中させる必要があります。
仮想ディスク: メモリ空間または他のストレージ メディアを使用して、メモリ ハードディスクやソリッド ステート ディスクなどのディスクをエミュレートします。