入出力管理

入出力管理
オペレーティングシステム
第10回
今回の内容


入出力装置は
 多種多様
 遅い
どう扱うか?
入出力装置の分類(1)

2種類
 ブロックデバイス
 キャラクタデバイス(ストリームデバイス)
入出力装置の分類(2)

ブロックデバイス
 HDDなど

“ブロック”という単位で入出力
 ブロックの大きさは,固定であることが多い
 例えば,512バイト(単位で入出力)
 1バイトだけ,ということができない
入出力装置の分類(3)

キャラクタデバイス(ストリームデバイス)
 端末(ディスプレイ,キーボード)など


文字単位に入出力
任意長
入出力管理の目的
入出力管理の目的(1)

多種多様な入出力装置がある

制御するプログラムは,装置ごとに異なる

装置を変更すると,それを利用するプログラムも
変更
 誰が ⇒ プログラムを作った人
 無理!
入出力管理の目的(2)



制御プログラムの作成のためには
装置の詳細な情報が必要
 それを理解する
すべてのプログラム作成者に要求することは無
理
入出力管理の目的(3)
Bの制御プロ
グラムも追加
Bを追加
入出力管理の目的(4)

“統一された操作モデル”の提供
 入出力装置の詳細を隠す(抽象化)
 利用者のプログラムからは,同じような手順で
利用できるようにする
入出力管理の目的(5)
デバイスドライバ
(後述)
入出力管理の目的(6)


入出力操作を容易にするプログラム
 IOCS(Input Output Control System)
オペレーティングシステムの第一歩
ディスク装置について(1)


制御プログラム作成が困難なことを,ディスク(
HDD)を例にして説明
HDDの内部
 http://gigazine.jp/img/2009/08/10/largest_hd
d/520315_80448256.jpg
ディスク装置について(2)



円形の記録媒体
同心円がたくさんある
 トラック
“一定の大きさ”に区
切られる
 セクター
セクター
ディスク装置について(3)


各セクタにデータが記
録される
データの読み書き
 どのトラックのどの
セクタかを指定
ディスク装置について(4)

磁気ヘッド
 データを読み書き
 ヘッドの位置決め
 指定されたトラック
に移動(シーク)
 指定されたセクタ
ーが回転して来る
のを待つ
ディスク装置について(5)



ディスクは両面
 どちらの面かを指定
ディスクが複数あるものもある
最近は,外側のトラックの方がセクタの数が多い
 セクターの指定が難しい
ディスク装置について(6)


物理的に移動する部分があるので,そのタイミン
グが問題になることも
以上のことを理解していないとプログラムを作る
ことができない
ディスク装置について(7)


面倒な部分をOSが肩代わり
入出力装置の抽象化
 入出力装置の詳細な点を理解しなくても,そ
れを利用するプログラムを作ることができる
 いろいろな装置があっても,使い方は同じ
 極論すれば,“読め”・“書け”
デバイス ドライバ
入出力装置の制御プログラム
簡略化した構成図(第2回)
制御装置
デバイスドライバ(1)

入出力装置を制御する機器
 CPUが入っている
 つまり,コンピュータ
 プログラムが必要
 デバイスドライバと呼ぶ
デバイスドライバ(2)



入出力装置を制御するプログラム
 入出力装置ごとに異なる
入出力装置の追加
 対応するデバイスドライバをオペレーティング
システムに追加
利用者プログラムの変更の必要はない
デバイスドライバ(3)

入出力装置の製造者が用意
 装置の詳細は製造者が知っている
 場合により,公開されない情報もある
デバイスドライバ(4)


入出力の効率化を図る,という機能も
例 ディスク装置へのアクセス
 ヘッドのシーク時間を最小化するような
順序に,アクセスの順序を変更
デバイスドライバ(5)



MS-DOSの時代
アプリーケーションソフト(例えば,ワープロソフト
)が入出力機器を管理
新しい入出力機器が発売されると,それに対応
しなければならない
入出力の効率化
入出力の効率化(1)

入出力装置の動作は,CPUよりも遅い

いろいろな工夫
入力の場合,その時点で必
要な入力データだけでなく,
将来必要になるかも知れな
いデータも読み込む
(先読み)
入出力の効率化(2)



ブロッキング
大量の小さなデータは,まとめて大きなデータと
して入出力を行う
例 磁気テープ装置
 テープの速度が一定になるまで待つ
 テープ自体(メディア)の効率的利用
バッファに書き込めば,実際
の出力は終了していなくても,
利用者プログラムの出力は
終了
つまり,先に進むことができる
入出力の効率化(3)


バッファリング
 割込み参照
利用者のプログラムからの出力
 バッファ(メモリ)に書き込む
 別のプログラムが,メモリから出力装置に送る
利用者
プログラム
バッファ
プリンタ
入出力の効率化(3)


バッファリング
入力データ
 必要になるより前に,メモリに読み込む
 実際に必要になると,メモリから読み出す
 先読み
 無駄になることもある
入出力の効率化(4)


バッファリング
一般に,速度が異なるものの間でのデータ交換
の効率化
入出力の効率化(5)


キャッシング
プログラムがディスクからデータを読み込む
 メモリにも格納
 再度,そのデータを読み込む
 ディスクから読み込まず,メモリのデータ
HDD
メモリにも
コピー
プログラム
入出力の効率化(6)



キャッシング
プログラムがディスクにデータを書き込む
 メモリにも格納
 そのデータを読み込む必要
 ディスクから読み込まず,メモリのデータ
いずれの場合も,実際の入力を行わないので時
間短縮
入出力の効率化(7)


キャッシング
本来は,CPU内の高速メモリ(キャッシュ)と主記
憶の間で用いられていたことに対する用語
ファイルへの書き込
みが終了すれば,
出力も終了
(場合により,プログ
ラムは終了)
入出力の効率化(8)





スプーリング
本来はバッチ(一括)処理 遅い入出力装置の
出力データは装置に送るのではなく,ファイルと
制御をスプーラに任せる
して書き出す
スプーラと呼ばれる独立したプログラムが,それ
を装置に送る
入力データもあらかじめ読み込み,ファイルとし
ておく
入出力装置の制御
入出力装置の制御



動作の起動指示
データ転送
 入力データは,入力装置からメモリへ
 出力データは,メモリから出力装置へ
といったことをどのように行うのか?
CPUが直接制御



割込みの2回目
 プリンタの例の割込みを用いないもの
最大のネックは,入出力装置の動作終了を待た
なければならない
CPUの使用効率が悪い
割込み



割込みの2回目
 プリンタの例の割込みを用いるもの
入出力装置の動作終了を割込みにより検出
 動作中にCPUは別の処理ができる
ただし,データ転送はCPU
DMA



Direct Memory Access
CPUは,動作開始を入出力装置の制御装置に
指示
データ転送は,制御装置が行う
 制御装置が直接メモリとの間でデータをやり
取りする
チャネル

大型機

入出力装置用コンピュータ(みたいなもの)

これに操作を任せる
接続規格
パソコンの入出力装置の接続方法
入出力管理の話ではない
ハードウェアの規格
IDE



最大4台の内蔵ディスクを接続
 CD ROMなども可能
 以前からある規格
共通仕様 ATA(AT Attachment interface)
拡張仕様
 Serial ATA(高速化)
SCSI

“スカジー”と読む

汎用接続規格

最大8台までの機器をディジーチェーンで接続
 実際は7台
 接続ケーブルの末端にターミネータをつける
U S B (1)




汎用接続規格
 パソコンでは良く使われている
最大127台まで
電源を入れたままで接続・切離し可
 ホットプラグ
低速・中速機器向け
 USB2.0で高速機器をサポート
 そろそろUSB3.0
U S B (2)

ちなみにUSBメモリには寿命がある
 書き込み回数に上限がある
 USBメモリの書き換え限界寿命が来ると何が
起きるのか、実際に寿命が来たケースをレポ
ート
http://gigazine.net/index.php?/news/commen
ts/20080204_usb_memory_life/
IEEE 1394 (1)

IEEEは“アイ トリプル イー”と読む
 FireWire (アップル)
 i.LINK (ソニー)
IEEE 1394 (2)

デジタル機器同士だけで接続可
 パソコン不要
 デジタルビデオカメラDV端子

最大63台

ホットプラグ
IEEE

いろいろな規格を定めている
 IEEE802.11a/b/g 無線LAN
セントロニクスインターフェイス

プリンタで利用される(されていた)
 出力データだけでない
ま と め
ま と め(1)



入出力装置の分類
 ブロックデバイスとキャラクタデバイス
入出力管理の目的
 統一された操作モデル
デバイスドライバ
ま と め(2)


入出力の効率化
 ブロッキングなど
入出力装置の制御
 CPUが直接制御
 割込みの利用
 DMA
 チャネル