この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。...
DESCRIPTION
この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。 パワーポイント 2007 で最終版として保存しているため、変更はできませんが、授業でお使いなる場合は松尾 ([email protected]) まで 連絡いただければ、編集可能なバージョンをお渡しする事も可能です。. オペレーティングシステム #10 主記憶管理: セグメンテーション, ページ化セグメンテーション. 復習. ページング 主記憶の再配置システム - PowerPoint PPT PresentationTRANSCRIPT
1
オペレーティングシステム#10
この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。
パワーポイント 2007 で最終版として保存しているため、変更はできませんが、授業でお使いなる場合は松尾([email protected]) まで連絡いただければ、編集可能なバージョンをお渡しする事も可能です。
2
オペレーティングシステム#10
オペレーティングシステム
#10 主記憶管理:セグメンテーション,
ページ化セグメンテーション
3
オペレーティングシステム#10 復習
■ ページング 主記憶の再配置システム 仮想アドレスの上位(ページ番号)を
物理アドレスの上位(ページフレーム番号)に変換することでアドレス変換
フラグメンテーションも改善
■ ページテーブル 上記変換を行うためのテーブル ページに対応するエントリごとにフラグなどを配置
➔ ページへのアクセス権などを設定可能
4
オペレーティングシステム#10
物理空間
3
復習:ページングの動作
00
01
02
03
04
05
06
07
08
09
0
1
2
0x00000
0x00FFF0x01000
0x01FFF0x02000
0x02FFF0x03000
0x03FFF0x04000
0x04FFF0x05000
0x05FFF0x06000
0x06FFF0x07000
0x07FFF0x08000
0x08FFF0x09000
0x09FFF
0x0000
0x0FFF0x1000
0x1FFF0x2000
0x2FFF0x3000
0x3FFF
V P C ページフレーム
111111111
0100
02030405060708
02
0011 00
仮想アドレス
物理アドレス
=
02 123
1230
スワップイン
5
オペレーティングシステム#10 復習
■ ページングの改善法 ハッシュ関数
➔ ページテーブルの巨大さを緩和➔ 仮想アドレス空間に比例する大きさが必要だったのが,
物理アドレス空間に比例する大きさまで縮小
連想レジスタ➔ 主記憶へのアクセス回数の緩和➔ 最近使用した「ページ番号→ページフレーム番号」の
変換結果を CPU 内で記憶➔ ページテーブル検索のための主記憶アクセスを削減
6
オペレーティングシステム#10 今日の内容
■ ページングの構成法 多重レベルページング (10.3) 0 レベルページング (10.4)
■ セグメンテーション セグメンテーション (10.1) ページ化セグメンテーション (10.2)
■ 教科書とは違う順番でやります
7
オペレーティングシステム#10
10.3多重レベルページング
8
オペレーティングシステム#10 復習:ページングの問題点
■ ページテーブルが巨大 (仮想記憶の大きさと同じエントリ数)
× (同時実行プロセス数)だけのエントリ数が必要
主記憶を圧迫
■ 前回はハッシュ関数を利用することで改善➔ 仮想アドレス空間に比例する大きさが必要だったのが,
物理アドレス空間に比例する大きさまで縮小 さらに改善したい
9
オペレーティングシステム#10 多重レベルページング
0x0000
0x1000
0x2000
0x3000
仮想アドレス
物理アドレス
=
123
1230
基底アドレス
10
234
6000
0 2
0x4000
0x5000
0x6000
0x7000
0x8000
0x9000
主記憶
ページテーブルページ
テーブル
ページテーブル
仮想アドレス
空間
2
1
3
4
5
2
3
6
6
0
0
80005000
ページテーブル
ページテーブル
0x00000
0x00FFF0x01000
0x01FFF0x02000
0x02FFF0x03000
0x03FFF0x04000
0x04FFF0x05000
0x05FFF0x06000
0x06FFF0x07000
0x07FFF0x08000
0x08FFF0x09000
0x09FFF
ページテーブルページ番号
23
フレーム番号
01
ページテーブルを多段に
10
オペレーティングシステム#10 多重レベルページング
0x0000
0x1000
0x2000
0x3000
仮想アドレス
物理アドレス
=
123
1230
基底アドレス
10
234
6000
0 2
0x4000
0x5000
0x6000
0x7000
0x8000
0x9000
主記憶
ページテーブル
仮想アドレス
空間
2
1
3
4
5
2
3
6
6
0
0
80005000
ページテーブル
ページテーブル
0x00000
0x00FFF0x01000
0x01FFF0x02000
0x02FFF0x03000
0x03FFF0x04000
0x04FFF0x05000
0x05FFF0x06000
0x06FFF0x07000
0x07FFF0x08000
0x08FFF0x09000
0x09FFF
ページテーブル
ページテーブル
当面必要でないページテーブルは,
仮想記憶上に置いておける
11
オペレーティングシステム#10 多重レベルページング
■ ページングを多段化 2 段だけでなく,さらに多段化も可能
■ ページテーブルを細かく分割可能 必要なテーブルのみを主記憶上に置くことで
主記憶使用量を削減
■ 多段化により,主記憶アクセスは増加 TLB により解決
12
オペレーティングシステム#10
10.40 レベルページング(連想写像方式)
13
オペレーティングシステム#10 連想写像方式
■ 一般的なページング 主記憶上にページテーブル CPU 内の MMU が,ページテーブルを用いて
アドレス変換
■ 0 レベルページング(連想写像方式) ハードウェアとしての MMU を持たない 一般的なページテーブルを持たず,
連想メモリで構成した TLB でアドレス変換
14
オペレーティングシステム#10
3
0 レベルページングの動作
00
01
02
03
04
05
06
07
08
09
0
1
2
0x00000
0x00FFF0x01000
0x01FFF0x02000
0x02FFF0x03000
0x03FFF0x04000
0x04FFF0x05000
0x05FFF0x06000
0x06FFF0x07000
0x07FFF0x08000
0x08FFF0x09000
0x09FFF
0x0000
0x0FFF0x1000
0x1FFF0x2000
0x2FFF0x3000
0x3FFF
V P C ページフレーム
0 011 0 310 011 0 0110 011 0 210 011 0 11
0100
02030405060708
02
07
05
仮想アドレス
物理アドレス
=
00
02 789
789003
物理空間
フレーム ページフレーム
00 302 005 2
07 1
連想メモリ
インデクスを持たない全エントリを並列検索
02 0
15
オペレーティングシステム#10 0 レベルページングの特徴
■ メリット 高クロック実装が可能
➔ MMU 不要のため, CPU 機構が単純化
■ デメリット TLB ヒットしなかった場合のオーバヘッドが膨大
➔ ソフトウェア処理のため
■ よって ... 主記憶使用量の少ないプログラムには高速 主記憶使用量の多いプログラムには非常に低速
16
オペレーティングシステム#10
10.1セグメンテーション
17
オペレーティングシステム#10
こちらも実現したい
ページングで実現可能■ 大きさが無制限 プロセスは主記憶の空き容量を考慮する必要なし プログラムの簡単化,バグの可能性減少
■ プロセスごとに固有 他のプロセスからのアクセスに対し保護
■ プログラム部,データ部,スタック部など分離 用途ごとに空間を分けることで,自プロセス内での不正アクセスの可能性を低減
■ 必要時にはプロセス間で共有も可能 並列動作するプロセス間で共有し,
高速な通信機構として使用
復習:理想的な論理アドレス空間
18
オペレーティングシステム#10 セグメンテーション
■ ページ(ページング) 一定の大きさを割り当て単位とする
■ セグメント(セグメンテーション) プロセスに対し複数のセグメントを割り当て
➔各セグメントは論理的に独立➔ プログラム部,データ部など固有領域として使用可能
各セグメントはその論理空間の大きさを自由に増減可能
19
オペレーティングシステム#10 セグメンテーション
プロセス1
プログラム領域
プログラム領域
データ領域
データ領域
スタック領域
スタック領域
プロセス2
データ領域
データ領域
プロセス間共有も実現可
セグメント
20
オペレーティングシステム#10
物理空間
セグメンテーション
0x00000
0x00FFF0x01000
0x01FFF0x02000
0x02FFF0x03000
0x03FFF0x04000
0x04FFF0x05000
0x05FFF0x06000
0x06FFF0x07000
0x07FFF0x08000
0x08FFF0x09000
0x09FFF
0x0000
0x3FFF
V 基底アドレス
11
111111
0100
02030405060708
仮想アドレス
物理アドレス
=
02 123
1345
セグメント長
0x1222
10 1222 1300
1300
21
オペレーティングシステム#10 セグメンテーション
■ 利点 プログラム部,データ部など,用途別に複数を
プロセスに割り当て 各セグメンテーションは大きさを増減可
■欠点 フラグメンテーション
他の手法と組み合わせて利用
22
オペレーティングシステム#10
10.2ページ化セグメンテーション
23
オペレーティングシステム#10 ページング v.s. セグメンテーション
■ ページング 固定長ブロック
➔ フラグメンテーションの解決
ページテーブル➔ 仮想→物理アドレスの1 対 1 対応
➔ 動的再配置による仮想記憶の実現
■ セグメンテーション 複数のアドレス空間
➔ 用途別論理空間の実現
アドレス空間のオーバラップ
➔複数プロセスによる空間の共有を実現
24
オペレーティングシステム#10
■ ページング + セグメンテーション セグメンテーションを,複数のページフレームにより構成する
セグメントごとにページテーブルを用意
ページ化セグメンテーション
セグメントセグメントページフレーム
ページフレーム
ページ番号 フレーム番号
セグメントセグメント
ページフレーム
ページフレーム
ページフレーム
ページ番号 フレーム番号
セグメントセグメント ページフレーム
ページ番号 フレーム番号
ページテーブル
ページテーブル
ページテーブル
25
オペレーティングシステム#10 ページ化セグメンテーション
0x0000
0x1000
0x2000
0x3000
仮想アドレス
物理アドレス
=
123
1230
基底アドレス
10
234
セグメント長
6000 1000
0 2
0x4000
0x5000
0x6000
0x7000
0x8000
0x9000
物理アドレス
空間
主記憶
ページテーブルページ
テーブル
ページテーブル
仮想アドレス
空間
セグメント
0
9
2
1
3
4
5
6
7
8
セグメント2
3
6
6
0
0
8000 10005000 2000
セグメント 0
セグメント 2
セグメント 1ページテーブル
セグメント 0 用ページテーブル
ページ番号
23
フレーム番号
01
セグメントテーブル
26
オペレーティングシステム#10
ページ化セグメンテーションにおける仮想アドレス
■ 仮想アドレスの構造
セグメントがページ単位で構成されている➔ セグメンテーションとページングの階層化
セグメント内相対アドレスが,ページングにおける仮想アドレスに相当
➔ 仮想アドレスの構造も二階層になっていると考えるとわかりやすい
仮想アドレスセグメント番号 セグメント内の相対アドレス
ページ番号
オフセット(ページ内相対アドレス)
仮想アドレス
セグメント番号セグメント内相対アドレスページ番号
オフセット(ページ内相対アドレス)
27
オペレーティングシステム#10 ページ化セグメンテーションの利点
■ フラグメンテーションの回避 主記憶割り当ては基本的にページ単位
■複数セグメント 各セグメントは大きさ増減可能 複数使用により,用途別に使い分け可能
■ プロセス間共有 セグメンテーションとほぼ同様に共有可能
■ ページテーブルの分散 ページテーブルが複数に分割されるので,
多重レベルページング同様,その一部を仮想記憶に追い出すことで主記憶使用量削減
28
オペレーティングシステム#10 今日のまとめ
■ 多重レベルページング 従来のページングにおける,仮想アドレスの
「ページ番号部」を複数に分割 それぞれをページ番号とし階層化したテーブルを検索 ページテーブルの分割により,テーブルによる
主記憶使用量を削減(残りは仮想記憶へ)
■ 0 レベルページング(連想写像方式) MMU を持たず, CPU の構成を単純化(=高速化) 連想記憶(検索のためのインデクスを持たない)でTLB を構成
29
オペレーティングシステム#10 今日のまとめ
■ セグメンテーション セグメント:
仮想記憶と物理記憶を対応させる可変長な単位 プロセスあたり複数のセグメントを許す セグメント間のオーバラップ(共有領域)を許す
■ ページ化セグメンテーション ページングとセグメンテーションの利点を融合 セグメンテーションの利点を生かしつつ
➔ フラグメンテーションを回避➔ ページテーブルの分割により,多重ページング同様
主記憶使用量の削減