オペレーティングシステム

オペレーティングシステムJ/K
(入出力管理)
2005年10月24日
酒居敬一([email protected])
http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS/2005/
記憶階層
(0次記憶、短期記憶)
CPU内部のレジスタ
一次記憶(長期記憶)
主記憶(通常はRAM)のこと
電力の供給を絶てば、記録内容は失われる
二次記憶(外部記憶)
HDDやフロッピーなど
電力の供給がなくても、記録し続けるしくみがある
大容量とか可搬であるとか利点をもつが、一般に低速
一次記憶
一般にRAMとしてDRAMが使われる
DRAMは大容量だがアクセス速度が遅い
RAMの中ではコストパフォーマンスがよい
通常、お金は有限なのです…
ただし、リフレッシュが必要
小容量だがアクセス速度の速いSRAMもある
記憶の参照は局所性がみられることが多い
DRAMに高速SRAMを組み合わせるのが一般的
このときの高速SRAMはキャッシュと呼ばれている
CPUはせっかちさんだからね…
二次記憶
2つ以上の状態間で遷移でき、状態維持にエネル
ギーを消費しないものを利用して記録する
磁化を利用する
HDDやフロッピーやDAT(磁界を変調して書く、磁界を読む)
光磁気ディスクやMD(磁界を変調して書く、カー効果で読む)
電荷を利用する
フラッシュROM(電荷を注入して書く、閾値の変化で読む)
結晶構造を利用する
CD-RW(加熱による相変化で書く、相変化を読む)
入出力命令で装置上のデータを読み書きする
CPUがメモリを参照するのとは少し違う
入出力機器
• バイト単位で入力と出力できる装置
– 読み書きする位置が設定(シーク)できるもの
• シーク可能デバイス
– DAT
– HDD
» シークが比較的速いので二次記憶装置として使われる
• ランダムにアクセスできるが、アクセス位置を示すポインタ
は装置側に存在する(メモリと異なる点)
– 読み書きする位置が設定できないもの
• シーク不可能デバイス
– キーボード
– プリンタ
– スキャナ
• 狭い意味での入出力装置
制御方法
• 入出力制御専用の命令:I/O命令
– メモリのようにキャッシュしない
これは、メモリのようにキャッシュ制御できないから
• I/O空間(メモリ空間に置かれている場合もある)
– メモリのように空間内にすべて展開しない
– I/Oポートという、ポートを通じて制御する
– ポート(Port: 本来の意味は港)に対して入出力する
サスペンドとハイバネーション
• サスペンド
– CPUは動作停止。内部情報の保持のため電力供給。
– メモリ(通常はDRAM)はリフレッシュ動作のみ継続。
– 周辺デバイスは内部状態をメモリ等に退避して電力供
給を停止。
• ハイバネーション
– すべてのデバイスは動作停止。電力供給も停止。
– 二次記憶装置などに内部状態を退避。
• レジューム
– CPU/メモリ/周辺デバイスの状態を復帰して、実行再
開
記憶割付けに関して
• 要求時ロードとページ置き換え
– 実記憶を超えた容量の仮想記憶が割付け可能
– プログラムやデータは参照される瞬間だけ実記憶に存
在していればよい(そのように維持されればよい)。
• 1次記憶(主記憶、RAM)と2次記憶(HDD)の関係
– 1次記憶は2次記憶のキャッシュ
• 記憶の実態は2次記憶装置上にある
– 2次記憶は1次記憶が不足したときの退避領域
• スラッシング
– ページインとページアウトが激しく起きている状態
– 実記憶容量より仮想記憶容量が大きく、参照の局所性
が期待できないときに起こることが多い。
直接同期制御
• プロセッサがハードウェアを直接操作
• ハードウェアの状態変化と操作が同期
• 状態変化を検出する方法→ポーリング
– ポーリングは時間精度がよい
– プロセッサは検出にかかりっきり
直接非同期制御
• プロセッサがハードウェアを直接操作
• ハードウェアの状態変化とプロセッサの動作
が非同期
– つまり、状態変化を別の手段で知る
– たとえば、割り込み
• プロセッサはその間別のことができる
間接制御
• バスマスタ転送
– DMA
• 主記憶を対象にデータを転送
– バス使用権を持っているもの→バスマスタ
• それ以外はバスマスタによってデータが転送される
• バスマスタになりえるもの→プロセッサ、ディスクI/Fなど
• I/Oプロセッサ
– 例: ネットワーク通信ボード, RAIDボード
– プロセッサの高速化により、減りつつある
入出力管理
• キャラクタデバイス
– 入出力動作で1バイトのデータが入出力できる
– キーボード、マウス、HDD
– 基本的にシーケンシャルアクセス
• ブロックデバイス
– ファイルシステムが構築できる
– HDD、フロッピー、CDROM
– 基本的にランダムアクセス
論理デバイス
• 直接ハードウェアを操作させると問題がある
– プロセスはOSの上に複数存在する、一方で、
デバイスは限られた数しかない。
– デバイスドライバが間に入る。
– ハードウェア構成は同一であるとは限らないが、
同一のインターフェースで使用できるようにしたい
– OSが使用するデバイスは、一般のプロセスから
アクセスされては困る。
時間管理
• プロセスがプロセッサを占有する時間
– システムタイマ
• デバイスがバスを占有する時間
– レイテンシタイマ
• 何らかのタイマデバイスにより時間を計っている
時刻管理
• バッチジョブの投入
• UNIXではcronというコマンドで定期的な
ジョブを投入できる。
• ファイルのタイムスタンプにも利用。
• メイルなどでも時刻を必要とする。
• タイマデバイスを利用してカウントしている。