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

Download Report

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

オペレーティングシステム
(仮想記憶管理)
2006年11月2日
酒居敬一([email protected])
http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS/2006/
記憶階層(45ページ)
(0次記憶、短期記憶)
CPU内部のレジスタ
一次記憶(長期記憶)
主記憶(通常はRAM)のこと
電力の供給を絶てば、記録内容は失われる
二次記憶(外部記憶)
HDDやフロッピーなど
電力の供給がなくても、記録し続けるしくみがある
大容量とか可搬であるとか利点をもつが、一般に低速
一次記憶
一般にRAMとしてDRAMが使われる
DRAMは大容量だがアクセス速度が遅い
RAMの中ではコストパフォーマンスがよい
通常、お金は有限なのです…
ただし、リフレッシュが必要
小容量だがアクセス速度の速いSRAMもある
記憶の参照は局所性がみられることが多い
DRAMに高速SRAMを組み合わせるのが一般的
このときの高速SRAMはキャッシュと呼ばれている
CPUはせっかちさんだからね…
二次記憶
2つ以上の状態間で遷移でき、状態維持にエネル
ギーを消費しないものを利用して記録する
磁化を利用する
HDDやフロッピーやDAT(磁界を変調して書く、磁界を読む)
光磁気ディスクやMD(磁界を変調して書く、カー効果で読む)
電荷を利用する
フラッシュROM(電荷を注入して書く、閾値の変化で読む)
結晶構造を利用する
CD-RW(加熱による相変化で書く、相変化を読む)
入出力命令で装置上のデータを読み書きする
CPUがメモリを参照するのとは少し違う
記憶管理技法(46ページ)
 フェッチ技法
 要求時
 プリフェッチ
 割付け技法
 連続割付け
 単一連続割付け
 分割割付け
 固定区画割付け
 可変区画割付け
 非連続割付け
 ページング
 セグメンテーション
 置き換え技法
 スワッピング
 FIFO
 OPT
 LRU
記憶領域の保護
• TEXT
– 命令を置くための領域
– 書き込むことはあり得ない
– 命令はロードモジュールに含まれる
• DATA
– 初期値つき静的変数を置く領域
– 初期値はロードモジュールに含まれる
• BSS
– 初期値なし静的変数を置く領域
• STACK
– 動的変数や一時変数を置く領域
[Intel, ``Software Developer Manual’’]
[Intel, ``Software Developer Manual’’]
[大久保英嗣, オペレーティングシステムの基礎]
プロセスの中では記憶領域を自由に配置・獲得・使用したい!
記憶領域に関しても現実と切り離して、仮想的な存在とする
仮想記憶(55ページ)
仮想記憶に必要なこととは?
• 有限の資源である主記憶のプロセスへの割付け
– ページング
– (現在ではセグメンテーションは単体では使われない)
• アドレス変換
– ページング
– セグメンテーション
• プロセス固有の領域を保護
– セグメンテーション
アドレス変換
• ページングによるもの
– ページという固定の単位ごとにアドレスを変換
– 変換はアドレス変換表を使用
– 自由自在な変換ができる
– 高速化のためにTLBを使う
• 連想記憶機構を使った変換表のキャッシュ
– 領域は物理的に分割したもの(構造が無い)
• セグメンテーションによるもの
– 任意の大きさの領域を変換
– 領域は一般に論理セグメントに対応(構造がある)
ページングによるアドレス変換
[Intel, ``Software Developer Manual’’]
ページングによるアドレス変換
[Intel, ``Software Developer Manual’’]
[Intel, ``Software Developer Manual’’]
セグメンテーションによるアドレス変換
[Intel, ``Software Developer Manual’’]
[Intel, ``Software Developer Manual’’]
[Intel, ``Software Developer Manual’’]
ページングとセグメンテーションは組み合わされることが多い
ページングアルゴリズム(58ページ)
目的はページフォルト率を最小化
• FIFO
– 主記憶上の最も古いページを選択しページアウト
• ページインした順にページアウトする
– 特別なハードウェアはいらない
• OPT
– 将来のページ使用を見てページアウト
– 現実には実装できない。性能評価の際の指標
• LRU
– 参照の時間的局所性を利用したものである
– 主記憶上で最も使われなかったページをページアウト
– ハードウェア機構が必要である
• カウンタ
LRUアルゴリズム
– 時間を計時するため、カウンタを設ける
– 各ページは最終参照時刻を保持する
– 最も古くに参照されたページを線形検索しページアウト
• スタック
– 参照されたページ番号をスタックトップに移動する
– スタックボトムがページアウト対象を示す
• 参照ビット
– 定期的にページ参照があったかをソフトウェアで調査
– 荒い時間刻みでLRUを実装したことに相当
– 擬似LRUとも呼ばれる
割付け技法
• 大域割付け
– システム内に、ページ枠の集合はひとつ
– ページのプロセスの所属とは無関係に割付ける
• 局所割付け
– プロセスでは、各々のページ枠集合から割付け
– ページ枠の集合をプロセスごとに持たせる
均等割付け(ページ枠数÷プロセス数)
比例配分割付け(ページ枠数×仮想記憶量÷全仮想記憶量)
ワーキングセット
プロセスが活発に参照した領域(ワーキングセット)を維持
ワーキングセットの決定には発見的手法が必要
記憶割付けに関して
• 要求時ロードとページ置き換え
– 実記憶を超えた容量の仮想記憶が割付け可能
– プログラムやデータは参照される瞬間だけ実記憶に存
在していればよい(そのように維持されればよい)。
• 1次記憶(主記憶、RAM)と2次記憶(HDD)の関係
– 1次記憶は2次記憶のキャッシュ
• 記憶の実態は2次記憶装置上にある
– 2次記憶は1次記憶が不足したときの退避領域
• スラッシング
– ページインとページアウトが激しく起きている状態
– 実記憶容量より仮想記憶容量が大きく、参照の局所性
が期待できないときに起こることが多い。
サスペンドとハイバネーション
• サスペンド
– CPUは動作停止。内部情報の保持のため電力供給。
– メモリ(通常はDRAM)はリフレッシュ動作のみ継続。
– 周辺デバイスは内部状態をメモリ等に退避して電力供
給を停止。
• ハイバネーション
– すべてのデバイスは動作停止。電力供給も停止。
– 二次記憶装置などに内部状態を退避。
• レジューム
– CPU/メモリ/周辺デバイスの状態を復帰して、実行再
開
入出力機器
• バイト単位で入力と出力できる装置
– 読み書きする位置が設定(シーク)できるもの
• シーク可能デバイス
– DAT
– HDD
» シークが比較的速いので二次記憶装置として使われる
• ランダムにアクセスできるが、アクセス位置を示すポインタ
は装置側に存在する(メモリと異なる点)
– 読み書きする位置が設定できないもの
• シーク不可能デバイス
– キーボード
– プリンタ
– スキャナ
• 狭い意味での入出力装置
制御方法
• 入出力制御専用の命令:I/O命令
– メモリのようにキャッシュしない
これは、メモリのようにキャッシュ制御できないから
• I/O空間(メモリ空間に置かれている場合もある)
– メモリのように空間内にすべて展開しない
– I/Oポートという、ポートを通じて制御する
– ポート(Port: 本来の意味は港)に対して入出力する
直接同期制御
• プロセッサがハードウェアを直接操作
• ハードウェアの状態変化と操作が同期
• 状態変化を検出する方法→ポーリング
– ポーリングは時間精度がよい
– プロセッサは検出にかかりっきり
直接非同期制御
• プロセッサがハードウェアを直接操作
• ハードウェアの状態変化とプロセッサの動作
が非同期
– つまり、状態変化を別の手段で知る
– たとえば、割り込み
• プロセッサはその間別のことができる
間接制御
• バスマスタ転送
– DMA
• 主記憶を対象にデータを転送
– バス使用権を持っているもの→バスマスタ
• それ以外はバスマスタによってデータが転送される
• バスマスタになりえるもの→プロセッサ、ディスクI/Fなど
• I/Oプロセッサ
– 例: ネットワーク通信ボード, RAIDボード
– プロセッサの高速化により、減りつつある
入出力管理
• キャラクタデバイス
– 入出力動作で1バイトのデータが入出力できる
– キーボード、マウス、HDD
– 基本的にシーケンシャルアクセス
• ブロックデバイス
– ファイルシステムが構築できる
– HDD、フロッピー、CDROM
– 基本的にランダムアクセス
論理デバイス
• 直接ハードウェアを操作させると問題がある
– プロセスはOSの上に複数存在する、一方で、
デバイスは限られた数しかない。
– デバイスドライバが間に入る。
– ハードウェア構成は同一であるとは限らないが、
同一のインターフェースで使用できるようにしたい
– OSが使用するデバイスは、一般のプロセスから
アクセスされては困る。