目次
5.1 I/O システムの機能、モデル、インターフェース
5.1.1 I/O システムの基本機能
1.物理デバイスの詳細を非表示にします
2.機器との独立性
3. プロセッサと I/O デバイスの使用率を向上させる (並列操作)
4. I/O機器の制御(4つの制御方法)
- プログラム入出力方式
- 割り込みモード
- ダイレクトメモリアクセスモード
- チャンネルモード
5. デバイスの正しい共有を確保する (デバイス共有属性)
6. エラー処理
5.1.2 I/O システムの階層とモデル
全体的な設計目標は次のとおりです。高効率と汎用性。
- I/O デバイスと CPU の同時実行性
- シンプルな抽象化、明確で統一されたインターフェース
1. I/O ソフトウェアの階層
1) ユーザー層ソフトウェア: ユーザーと対話するためのインターフェースを実現し、ユーザーはユーザー層で提供される I/O 操作に関連するライブラリ関数を直接呼び出してデバイスを操作できます。
2) デバイス独立ソフトウェア: デバイス ドライバーとの統一されたインターフェイス、デバイスの命名、デバイスの保護、デバイスの割り当てと解放などを実現し、デバイスの管理とデータ転送に必要なストレージ スペースを提供します。
3) デバイス ドライバー: ハードウェアに直接関係し、システムからデバイスに発行された操作命令を実装し、I/O デバイスを動作させる役割を担います。
4) 割り込み処理プログラム: 中断されたプロセスの CPU 環境を保存し、対応する割り込み処理プログラムに転送して処理し、中断されたプロセスのシーンを復元して中断されたプロセスに戻るために使用されます。
2. I/O システム内のさまざまなモジュール間の階層ビュー
5.1.3 I/O システムインターフェース
1.ブロックデバイスインターフェース
代表的な代表者:ディスク
- データのアクセスと転送は、データ ブロック単位のデバイスです。
- 基本的な機能は、通常は毎秒数メガバイトの高い転送速度です。
- Addressable: データの入力元アドレスと出力先アドレスを指定できます。
- ブロックデバイスのI/OはDMA方式を採用。
2.ストリームデバイスインターフェース(キャラクターデバイスインターフェース)
典型的な代表者: キーボード、プリンター
- データのアクセスと送信は、文字単位のデバイスです。
- 基本的な特性は、転送速度が非常に低く、通常は 1 秒あたり数バイトから数千バイトです。
- Unaddressable: データの入力元アドレスと出力先アドレスを指定できません。
- ストリーム デバイスの I/O は割り込み駆動型です。
3. ネットワーク通信インターフェース
コンピュータがネットワーク上の他のコンピュータと通信したり、ネットワークを介してインターネットを閲覧したりできるように、OS は対応するネットワーク ソフトウェアとネットワーク通信インターフェイスを提供する必要があります。
///dev目录下存放的都是设备文件
int fd = open("/dev/something");
for (int i = 0; i < 10; i++) {
fprintf(fd, "Count %d\n", i);
}
close(fd);
1.オペレーティングシステムは、どのデバイスが開いているか、読み取り、書き込み、閉じているかに関係なく、ユーザーに統一されたインターフェースを提供します。
2. 異なるデバイスは異なるデバイス ファイルに対応し、デバイス属性はデバイス ファイルに格納されます。
5.2 I/O デバイスとデバイスコントローラ
I/O システム: データの入出力とデータの保存を実現するために使用されるシステムを指します。
5.2.1 I/O 设备
1. I/O デバイスの種類
2. デバイスとコントローラー間のインターフェース
CPU -- コントローラ -- デバイス
デバイスは、CPU と直接通信するのではなく、デバイス コントローラと通信します。そのため、デバイス コントローラとのインターフェイスを I/O デバイスに含める必要があります。
1) データ信号線: デバイスとコントローラの間でデータ信号を伝送します。
2) ステータス信号線: デバイスの現在のステータスを示す信号を送信します。例: 読み取り/書き込み、または新しいデータ送信の準備。
3) 制御信号線: デバイスコントローラが制御信号を I/O に送信する経路。例:読み取り、書き込み制御など
5.2.2 デバイスコントローラ
① デバイス コントローラの主な機能: 1 つまたは複数の I/O デバイスを制御して、I/O デバイスとコンピュータ間のデータ交換を実現します。これは、CPU と I/O デバイス間のインターフェイスです。
- マイコンやミニコンのコントローラは、多くの場合、プリント回路カード、つまりインターフェースカードの形で作られています。
②デバイスコントローラはアドレサブルデバイスで、1つのデバイスのみを制御する場合は1つの固有のデバイスアドレスを持ち、複数のデバイスを制御する場合は複数のデバイスアドレスを含み、各デバイスアドレスがデバイスに対応します。
③ デバイスコントローラは、次の 2 つのカテゴリに分類できます。
- ブロックデバイスを制御するコントローラー
- キャラクターデバイスを操作するコントローラー
デバイスメモリの特徴:
① コマンドの受信と識別: コントローラには対応するコマンド レジスタがあり、受信したコマンドとパラメータを格納し、受信したコマンドをデコードするために使用されます。
②データ交換:CPU-データバス-コントローラのデータレジスタ-機器間のデータ交換を実現。
③ 機器の状態の把握と報告: コントローラには対応するステータス レジスタがあり、それぞれが機器の特定の状態を反映しています。CPU がレジスタの内容を読み取ると、デバイスの状態を知ることができます。
④アドレス識別:デバイスコントローラは、制御するデバイスのアドレスと自身のレジスタのアドレスを識別できる必要があります。
⑤ データのバッファリング: ホストと I/O デバイス間の速度のミスマッチを解決します。
⑥ エラー制御:コントローラはデータのエラー検出を行い、I/O デバイスから送信されたデータが間違っている場合、CPU に報告し、CPU はデータを無効にし、I/O デバイスはデータを再送信します。 .
Q: デバイス コントローラーがデータを直接傍受しないのはなぜですか?
5.2.3 I/O 通道
1. I/O チャネル デバイスの紹介
I/O チャネルは、入出力を担当し、I/O 命令を実行する機能を持つ特別なプロセッサです。主な目的は、独立した I/O 操作を確立することです。これにより、I/O 操作の編成、管理、および終了処理も CPU から独立します。
CPU はプロセッサであり、 I/O チャネルは特別なプロセッサです。CPU は I/O コマンドを I/O チャネルに送信し、I/O チャネルは対応するチャネル (I/O) プログラムを実行します。割り込み信号は、I/O チャネルの実行が完了した後にのみCPU に送信されます。
I/O チャネルと汎用プロセッサの違い:
- 命令の種類は単一で、I/O 操作に関連する命令のみに限定されます。
- 独立したメモリはなく、I/O チャネルは CPU とメモリを共有します。
2.チャンネルタイプ
1) バイト多重チャネル
メイン チャネルは複数のサブチャネルを接続し、これらのサブチャネルはラウンドロビン タイム スライス方式でメイン チャネルを共有します。
各サブチャネルは一度に 1 バイトしか送信しないため、中速および低速のデバイスのみを接続できます。
バイト マルチプレクサが各サブチャネルを十分に高速にスキャンする限り、サブチャネルに接続されたデバイスのレートは、情報が失われるほど高くはありません。
2) アレイ選択チャンネル
- 高速でデータを転送するために配列で作業します。
- 複数の高速デバイスを接続できます。
- 一度に 1 つのデバイスのみがデータを送信し、排他を形成します。
- チャネル使用率が低い。
独占されているので、データを送信しなければ他のデバイスも送信できません。
3) アレイマルチチャンネル
アレイ選択チャネルの高い伝送速度とバイト多重チャネルの時分割並列動作の利点を組み合わせた新しいチャネルです。
- そのデータ転送は配列の形式です。
- エクスクルーシブ。
- 複数の非分散サブチャネルは、時分割によって並行して送信されます。
したがって、このチャネルはデータ伝送速度が高いだけでなく、十分なチャネル使用率を得ることができます。
3. チャネルの「ボトルネック」問題
デバイス 1 ~ 4 のいずれかがチャネル 1 を使用して開始する限り、他のデバイスを開始することはできません。たとえば、下の図で、デバイス 2 を起動しようとすると、コントローラ 1 とチャネル 1 が占有されているため、起動に失敗します。
解決策: チャネルを増やすのではなく、デバイスとホストの間のパスを増やします。つまり、1 つのデバイスを複数のコントローラーに接続し、それらのコントローラーを複数のチャネルに接続します。
5.2.4 バスシステム
1. マイコン I/O システム
デバイス コントローラ: I/O デバイスと 1 対多の関係があり、システムはそれを介してデバイスと通信します。
システム -- デバイス コントローラ -- デバイス
短所: バスのボトルネック、CPU のボトルネック。
2. ホスト I/O システム (4 レベル構造)
コンピュータ -- I/O チャネル -- I/O コントローラ -- デバイス
I / Oチャネルはバスの拡張、つまりマルチバスモードに相当し、チャネルには一定のインテリジェンスがあり、CPUと並列化して負担を解決できます。
3. 共通バス
- ONE (8ビット)
- EISA(16bit)
- ローカルバス
- VESA(32ビット)
- PCI(64ビット)