Presentation is loading. Please wait.

Presentation is loading. Please wait.

第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.

Similar presentations


Presentation on theme: "第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法."— Presentation transcript:

1 第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法

2 入出力ハードウェア CPU 主記憶 システムバス ディスク コントローラ ビデオ コントローラ プリンタ ドライバ 磁気ディスク

3 入出力制御とデバイスコントローラ 入出力装置を制御することは、OSの重要な役割の一つ
CPU(メインプロセッサ)は、デバイスコントローラを介して入出力制御を行う OSの入出力装置を担当するソフトをデバイスドライバと呼ぶ デバイスコントローラ 特定の型の入出力装置に対する操作インターフェースをCPU上のソフトウェアに提供 データレジスタ ... 転送するデータを一時的に格納するレジスタ 状態レジスタ ... 入出力の結果をCPU(プログラム)から参照 できるようにするための状態レジスタ 入出力ポート ... プログラムから制御するための インターフェース メモリマップト入出力(memory-mapped I/O) 分離入出力(isolated I/O)

4 デバイスコントローラによる 入出力装置の動き(入力の場合)
プログラムが入出力ポートを通じてデバイスコントローラに入出力装置から、デバイスコントローラにデータをデータレジスタに読み出す指令を出す データの読み出しが完了すると、状態レジスタに完了の状態がセットされる CPUは状態レジスタを参照し、入力が正常に行われたかを調べ、データをデータレジスタから取り出す

5 デバイスコントローラにおける 入出力装置の動作(出力)
CPUはデバイスコントローラのデータレジスタに出力データを入れ、これを装置に書き込むように指令 状態レジスタに出力の結果がセットされる CPUは、状態レジスタをチェックし、出力が正常に完了したかを調べる

6 入出力の並列処理 入出力装置の動作は、CPUの処理速度に比べ、桁違いに遅い
処理のオーバラッピング・並列化 入出力の完了を知る方法が鍵 ポーリング 割込み

7 ポーリング デバイスコントローラに入出力動作の完了を示すフラグを用意 CPUは、入出力操作と並列で他のプロセスを処理
周期的にこのフラグを見に行き、動作完了をチェックする 周期短 ⇒ CPUの時間のほとんどがフラグチェックに費やされてしまう 周期長 ⇒ 入出力装置が遊んでしまう 周期的に完了フラグ をチェック 起動 後処理 CPU 入出力装置 プロセスA プロセスB

8 割込み処理 ポーリングは、フラグチェックに要する時間が無駄である 入出力の完了を割込みによって、CPUに通知する 割込みハンドラ
割込みベクタ 起動 後処理 CPU 入出力装置 完了を割込みで 通知 プロセスA プロセスB

9 入出力の方式 PIO(Programmed I/O) ... CPUと入出力装置のデータ転送をCPUが行う
キーボードやシリアルプリンタなどの1Byte単位の低速な入出力装置によく使われる ディスプレイ ... ビデオRAMに表示したデータを書き込む DMA(Direct Memory Access) ... DMAコントローラと呼ばれる専用のハードウェアがCPUと独立してデータ転送を行う 一度に大量のデータをブロック単位で転送するのに適している DMAコントローラは、CPUに比べて高い優先度でシステムバスを獲得できる

10 DMA転送による入出力 例:ディスクに対するアクセス
コントローラ src_addr, dest_addr Read/Write バイト数 CPU counter dest_addr src_addr src_addr dest_addr 入出力要求 完了割込み 転送停止命令 DMA転送 システムバス 主記憶 ディスク コントローラ ディスク バッファ

11 入出力装置の分類(Unix) キャラクタ型端末 ... 1文字単位の入出力を行う装置
キーボード、シリアル回線 cf). /dev 以下でls –l すると crwx などのようにモード表記の一番左がcとなっている装置 ブロック型端末 ... ブロックを単位として入出力を行う装置 磁気ディスク、磁気テープ cf). /dev 以下でls –l すると brwx などのようにモード表記の一番左がbとなっている装置

12 入出力のためのソフトウェア技法 バッファリング ... 入出力とプロセッサの処理をオーバラップさせるために、入出力用にバッファと呼ばれる一時記憶領域に入出力データを蓄積する技法 キャッシング ... 一度利用されたデータを主記憶(キャッシュ)上に一時的に格納し、再利用時のデータアクセスの高速化を実現する スプーリング ... 急を要さない入出力を専用のプロセス(スプーラという)に依頼し、入出力を一元管理する手法 プリンタなどによく利用されている

13 バッファリング データを受け渡しする者同士の速度差を緩和する(バッファ→ 緩衝器という意味) 入出力装置とバッファは、ブロック単位で転送
データを受け渡しする者同士の速度差を緩和する(バッファ→ 緩衝器という意味) 入出力装置とバッファは、ブロック単位で転送 バッファとプログラムは、レコード単位もしくは、バイト単位で受け渡し ブロッキング ... 複数のレコードを1つのブロックにまとめて出力する 入出力の回数を減らせる ブロッキング係数n ... 1つのブロックがn個のレコードを含む レコード一つあたりの準備操作の時間は1/n になる レコード間ギャップ(IRG), ブロック間ギャップ(IBG) ... ブロックが小さいと、ギャップ領域大となり、使用効率落ちる。 デブロッキング ... バッファに読み込んだブロックを複数のレコードに分割して、プログラムに渡す ダブルバッファリング ... 作業用バッファと、転送用バッファの2つを1組にして使用する プログラムは、作業用バッファに対して入出力操作を行う 作業用バッファと転送用バッファのコピーがOSによって行われる

14 端末入出力制御 キー入力の流れ エコー(echo) ... デバイスドライバが、入力した文字を一文字ずつ画面に表示する
キーボードからの文字入力は、割込みにより通知される 押されたキーのコードを入力ポートから取り出す ASCIIコードなどの文字コードに変換 SHIFTやCTRLなどのキーが押された状態をチェック 大文字、小文字、制御文字の解釈 主記憶上のバッファに格納される エコー(echo) ... デバイスドライバが、入力した文字を一文字ずつ画面に表示する エコーさせるかどうかは、ソフトウェアが指定する

15 端末入出力の手法 文字単位の入出力 ... 1文字ずつ転送し、文字単位でエコー
行あるいは画面単位の入出力 ... バッファを持ち、行単位あるいは画面単位で転送し、局所的にエコーを返す ↵キーが押されると、バッファがフラッシュされるなど

16 端末入出力のモード 標準モード(canonical mode) ... 個々の文字の解釈をユーザプログラムではなく、デバイスドライバが行う
生モード(raw mode) ... 個々の文字の解釈をユーザプログラムが行い、デバイスドライバは生データを渡すのみ

17 入出力を行うソフトウェアの階層 入出力ライブラリ ユーザプログラム ディレクトリ管理 ファイル管理 バッファ管理 デバイスドライバ
割込みハンドラ 装置に 依存しない 装置依存


Download ppt "第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法."

Similar presentations


Ads by Google