入出力管理 - SEGAWA`s Web Site

入出力管理
オペレーティングシステム
第11回
入出力装置の分類(1)

ブロックデバイス

キャラクタデバイス,ストリームデバイス
入出力装置の分類(2)

ブロックデバイス
 HDDなど


ブロック単位に入出力
 1バイトだけ,ということができない
固定長データが多い
 例えば,512バイト単位で入出力
入出力装置の分類(3)

キャラクタデバイス,ストリームデバイス
端末(ディスプレイ,キーボード)

文字単位に入出力

任意長のストリーム

入出力管理の目的(1)

多種多様な入出力装置

制御するプログラムは,装置ごとに異なる

装置を変更すると,利用者のプログラムも変更
 無理!
入出力管理の目的(2)



制御プログラムの作成のためには
装置の詳細な情報が必要
 それを理解する
一般の利用者に要求することは無理
入出力管理の目的(3)


利用者のプログラムからは,同じような手順で利
用できるようにする
統一された操作モデル
 入出力装置の詳細を隠す(抽象化)
入出力管理の目的(4)


入出力操作を容易にするプログラム
 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が肩代わり
入出力装置の抽象化
 入出力装置の詳細な点を理解しなくても,そ
れを利用するプログラムを作ることができる
 いろいろな装置があっても,使い方は同じ
デバイス ドライバ
デバイスドライバ(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
セントロニクスインターフェイス

プリンタで利用される(されていた)
 出力データだけでない