• Tidak ada hasil yang ditemukan

PDF G0GWGzGG n - ns.kogakuin.ac.jp

N/A
N/A
Protected

Academic year: 2024

Membagikan "PDF G0GWGzGG n - ns.kogakuin.ac.jp"

Copied!
12
0
0

Teks penuh

(1)

仮想記憶-1

仮想記憶

仮想記憶-2

仮想記憶

• 実メモリよりも大きいアドレス空間,記憶空間を ユーザに提供する方法.

主に,ページング,セグメンテーションの2手法.

実行中プロセスが参照するアドレスと,

実メモリの実際のアドレスを独立させる.

前者が仮想アドレス

(virtual address)

後者が実アドレス(real address)

仮想記憶-3

仮想記憶

• 使用するメモリサイズ(プログラム,データ,ス タックなど ) が物理メモリ量を超えることを許す.

– OS

はその時点でプログラムが使用している一部分 のみメモリ内に保存し,使っていない残りはディスク に置く.

– 2GBのプログラムを物理メモリ1GBのマシンで動か

すには,OSが必要に応じてプログラムの断片をディ スクとメモリ間でスワップ.

仮想記憶-4

仮想記憶

プログラム CPU

仮想 アドレス

1000

実メモリ

アドレス 300

ブロック置換

MOV REG 1000

仮想アドレス1000

→ 実アドレス300

仮想記憶-5

仮想記憶の意義

• 一定サイズで,巨大で,連続している(←全て

“仮想的に”)メモリ領域をプロセスに割り当てる ことができる.

フラグメンテーションがおきづらい

• プログラムを動的に再配置しやすい

仮想記憶-6

paging,segmentation

• paging (主流)

仮想アドレス空間と実アドレス空間を固定長ページ に分割して,それを対応づける

• segmentation

可変長のセグメント単位で,仮想アドレス空間と実ア ドレス空間を対応づける.

• page segment

– paging と segmentation の組み合わせ.セグメント

に複数のページを割り当てる.

仮想記憶-7

アドレスの変換

a

アドレス変換テーブル

v

b w

c x

d y

e z

仮想アドレス ブロック番号 相対位置

b m

実アドレス w + m

• 実アドレスと仮想アドレスの変換はこんな感じ

ブロック番号 実アドレス

仮想記憶-8

アドレスの変換

a

アドレス変換テーブル

v

b w

c x

d y

e z

仮想アドレス ブロック番号 オフセット

b m

実アドレス ブロック実アドレス オフセット

m w

• 実際はこんな感じ(MMUにて後述)

ブロック番号 実アドレス

(2)

仮想記憶-9

アドレス変換

CPU

MMU CPUパッケージ(?)

近年,多くのCPU製品にMMUが組み込まれている.MMU: memory management unit 仮想アドレス

実アドレス

memory disk

• CPUは仮想ア

ドレスをMMU に送信する

• MMUはメモリ に実アドレス

(物理アドレス) を

送信する

バス

仮想記憶-10

アドレス変換

• 仮想アドレス(空間)

プログラムが指定するアドレス

• 実アドレス(空間)

実際の物理メモリのアドレス

• アドレス変換

– MMU内のDATが行う.

– DAT:Dynamic Address Translator – MMU, DATはハードウェア

仮想記憶-11

仮想記憶の実装

• 仮想記憶は,以下の手法を用いて実現.

アドレス変換,Paging,Segmentation

• ほとんど場合,アドレス変換ハードウェアと OS(当然ソフトウェア)を協調させて実現

アドレス変換:MMU (のDAT)

仮想記憶-12

ページング

• 主記憶を固定長page frameに分割.

• 仮想アドレス空間も同サイズのpageに分割 –

当然,実記憶のpage frameと仮想pageを対応づけ

る. 対応づけることをmappingと言う.

– segmentaionでも“mapping”という

• 実アドレスと仮想アドレスの変換表をpage tableと呼ぶ.

仮想記憶-13

Paging

仮想アドレス空間 (仮想ページ)

0 1 2 3 4 5 6 7 8 9

page table

0 1 2 3 4 5 6 7 8 9

2 4 5 X 0 1 3 x 6 x

実アドレス空間 (実ページ)

0 1 2 3 4 5 6

仮想記憶-14 2

0KB-4KB 1 4KB-8KB

6 8KB-12KB

0 12KB-16KB

4 16KB-20KB

3 20KB-24KB

x 24KB-28KB

x 28KB-32KB

x 32KB-36KB

5 36KB-40KB

x 40KB-44KB

7 44KB-48KB

x 48KB-52KB

x 52KB-56KB

x 56KB-60KB

x 60KB-64KB

0 1 2 3 4 5 6 7

0KB-4KB 4KB-8KB 8KB-12KB 12KB-16KB 16KB-20KB 20KB-24KB 24KB-28KB 28KB-32KB

Paging

• 仮想メモリ64KB,実記憶 32KB,ページ(フレーム)サ イズ4KBの場合

ページ ページフレーム

2 0KB-4KB

1 4KB-8KB

6 8KB-12KB

0 12KB-16KB

4 16KB-20KB

3 20KB-24KB

x 24KB-28KB

x 28KB-32KB

x 32KB-36KB

5 36KB-40KB

x 40KB-44KB

7 44KB-48KB

x 48KB-52KB

x 52KB-56KB

x 56KB-60KB

x 60KB-64KB

0 1 2 3 4 5 6 7

0KB-4KB 4KB-8KB 8KB-12KB 12KB-16KB 16KB-20KB 20KB-24KB 24KB-28KB 28KB-32KB

• 64KB(?bitのアドレス)のプログ ラムを実行可能

– 64KBのうち32KBが実メモリに入る.

– 64KBの全てがHDD

(などの二次記憶装置)

に入る.

プログラム

MOV REG, 0

↓MMU

実メモリアクセス

8192

2 0KB-4KB

1 4KB-8KB

6 8KB-12KB

0 12KB-16KB

4 16KB-20KB

3 20KB-24KB

x 24KB-28KB

x 28KB-32KB

x 32KB-36KB

5 36KB-40KB

x 40KB-44KB

7 44KB-48KB

x 48KB-52KB

x 52KB-56KB

x 56KB-60KB

x 60KB-64KB

0 1 2 3 4 5 6 7

0KB-4KB 4KB-8KB 8KB-12KB 12KB-16KB 16KB-20KB 20KB-24KB 24KB-28KB 28KB-32KB

• MOV REG,4096 → 4096

• MOV REG,8192 → 24576

• MOV REG,20500→ ????

• MOV REG,25000→PageFault

ヒント

20500 = 20K + 20

(3)

仮想記憶-17

Page Fault

• 全ての仮想ページが物理メモリにマップされて いる分けではない.

実メモリ内に存在→アドレス変換して対応

実メモリ内に存在しない→Page Fault

• 実メモリに入っていないメモリへのアクセスが来 たら,Page Fault.

仮想記憶-18

Page Fault , Page in , Page out

• 実メモリに入っていないメモリへのアクセスが来 たら,Page Fault.具体的には,

– Page Fault割り込みが発生.

– OSは「あまり使われていないページフレーム」を選

択し,それを二次記憶に書き出す(Page out).

当該ページを,空いたページフレームに読み込む

(Page in).

ページテーブル

(

アドレス変換テーブル

)

を更新

割り込みを起こした命令を再度実行

仮想記憶-19 2

0KB-4KB 6 8KB-12KB

0 12KB-16KB

4 16KB-20KB

3 20KB-24KB

x 24KB-28KB

x 28KB-32KB 32KB-36KB

5 36KB-40KB

x 40KB-44KB

7 44KB-48KB

x 48KB-52KB

x 52KB-56KB

x 56KB-60KB

x 60KB-64KB

0 2 3 4 5 6 7

0KB-4KB 8KB-12KB 12KB-16KB 16KB-20KB 20KB-24KB 24KB-28KB 28KB-32KB

• MOV REG,32780→PageFault

• PageOut対象PageFrame決定 – Page5/PageFrame3とする

• Page8 を PageFrame3 に読込む

x

1

4KB-8KB 1 4KB-8KB

仮想記憶-20 2

0KB-4KB 6 8KB-12KB

0 12KB-16KB

4 16KB-20KB

3→×

20KB-24KB x 24KB-28KB

x 28KB-32KB 32KB-36KB

5 36KB-40KB

x 40KB-44KB

7 44KB-48KB

x 48KB-52KB

x 52KB-56KB

x 56KB-60KB

x 60KB-64KB

0 2 4 5 6 7

0KB-4KB 8KB-12KB 12KB-16KB 16KB-20KB 20KB-24KB 24KB-28KB 28KB-32KB

• PageTable の更新 – Page5

は対応なし

– Page8はPageFrame3に対応

• 再度,命令実行

– MOV REG,32780→12300

1

4KB-8KB 1 4KB-8KB

x→3

3

仮想記憶-21

ページサイズ

• 後述の理由で,必ず2の冪乗.

• 512B~1MB.4KBが一般的.

仮想記憶-22

MMUでのアドレス変換

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 010 1

0 001 1 1

110 1 2

000 1 3

100 1 4

011 1 5

000 0 6

000 0 7

1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 000 0

15

MMU

への入力

MMU

からの出力

有効 無効

12bit (0~4095→4KB) 4bit

そのまま使用 変換

Page Table

仮想記憶-23

MMU でのアドレス変換

0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

MMUへの入力 MMUからの出力

12bit (0~4095→4KB) 4bit

仮想ページ番号 ページ内オフセット 010 1

0 001 1 1

110 1 2

000 1 3

100 1 4

実ページ フレーム番号

ページ内オフセット

仮想ページ番号が 変換表のindexになる

仮想記憶-24

ページサイズは 2 n であるべき

• 10進数にて,

1000[bytes/page]×1009[pages]の場合 仮想アドレス:123456 仮想ページ:123 ページ内: 456

実ページフレーム:28 ページ内:456

実アドレス:28456

仮想ページ 番号

実ページフレーム 番号

0 23

1 35

2 38

3 01

4 74

123 28

1007 64

(4)

仮想記憶-25

ページサイズは 2 n であるべき

• 10進数にて,

1009[bytes/page]×1000[pages]の場合

仮想アドレス:123456

仮想ページ:122

ページ内:358

実ページフレーム:27

ページ内:

358

実アドレス:27601

仮想ページ 番号

実ページフレーム 番号

0 23

1 35

2 38

3 01

4 74

122 27

1007 64

123456÷1009

=122・・・358 を計算する

27×1009+358

27601 を計算する

仮想記憶-26

置き換え技法

• Page Fault率の低いものが好ましい.

• OPT, NRU, FIFO ,second-chance, クロック 法, LRU

仮想記憶-27

Optimal ( 最適 ) アルゴリズム

• 「次にアクセスされるまでの時間」が最も長いも のを Page out させる.

• 最適(最低のPageFault率)だが,非現実的 –

未来のメモリアクセスが分かる必要がある

• 他のアルゴリズムとの性能比較に用いられる.

仮想記憶-28

NRU (Not Recently Used)

• 全ページに,参照bit,更新bitを設ける.

• 定期的クロック割り込みで参照bitを0にする.

更新フラグはクロック割り込みでは0にしない.

これは,

page out

時の書込みの要不要を表す

class 0:参照,更新なし class 1:参照無し,更新あり class 2:参照あり,更新なし class 3:

参照

,

更新あり

• 最も若いクラスのページを置換対象とする.

注意:class3がクロック割込で クリアさせるとclass1になる.

(更新bitはクリアされない)

仮想記憶-29

FIFO (First-In First-Out)

• 最初に実メモリに入った最も古いPageがPage out対象.

• 実装が容易で負荷が低いが,性能が低く,その ままの形で使われることは稀である.

仮想記憶-30

second-chance

• FIFOを改変したアルゴリズム.

前クロックインターバルに参照されていない最古ページを

Page outする.

• FIFOで置換対象となった最古のページの参照bitを確

参照なし

そのまま

page out –

参照あり → 参照ビットを「なし」にして

リストの最後尾

(page in

直後の状態

)

に移動.

再度,リストを調査.

全てが「参照あり」なら,FIFOと同様となる.

クロックベース , FINUFO

• First In Not Used First Out

• second chanceは合理的だが,

ページをリスト上で移動させる負荷が 高い.

• Page Fault時は,

ポインタページを調査

参照無し

→Page out

参照あり→「参照無し」に変更し進める.

実装が容易

. IBM VM/370,

日立

OS7

など

LRU (Least Recently Used)

• 「最後に参照されてからの時間」が最も長い物 をpage out

最も「参照されていない時間」が長いもの

最もよく採用されるアルゴリズムだが,

「完全なLRU」は実装が難しく簡易版が使用される ことが多い.

ループしたシーケンシャルアクセスで破綻する
(5)

仮想記憶-33

ランダム

• ループしたシーケンシャルアクセスなどでも一定 の効果を生む.

ループアクセスなどによる著しいLRUの性能劣化を 検出すると,

LRU

からランダムに切替えるなど

仮想記憶-34

NFU (Not Frequently Used)

• 不完全なLRU的位置づけ

• 全ページフレームにソフトウェアカウンタを用意.

• クロック割り込みのたびに全ページフレームの R ビットの値を調査し,カウンタに加算.

参照されていると,カウンタが増える.

• カウンタの値が最小のページが置換対象.

• 欠点:昔のデータが消えない.かつて頻繁に使 用したが,最近使用しないページが残る.

仮想記憶-35

aging

• NFUを改善し,LRUに類似手法を実現可能

• カウンタを加算する前にビットシフト

• LRUとの違いは,

A)

カウンタの最上位が同一だったときに区別が付か ない

(

区別が付かないと

,LRU

とは言えない

) B)

有限回数のビットシフト(クロック割り込み)で情報

が全て消える.

仮想記憶-36

aging

引用:オペレーティングシステム(a) 設計と実装第3版.アンドリューー・S・タネンバウム P. 429 01111000

10001000

01011000 00101000 10110000

00100000 ページ0-5の

Rビット,

クロック単位4 0 1 1 0 0 0

11110000

00100000

10110000 01010000 01100000

01000000 ページ0-5の

Rビット,

クロック単位3 1 0 0 0 1 0

11100000

00100000

01100000 10100000 11000000

10000000 ページ0-5の

Rビット,

クロック単位2 1 1 0 1 0 1

11000000

01000000

11000000 01000000 10000000

00000000 ページ0-5の

Rビット,

クロック単位1 1 1 0 0 1 0

10000000

10000000

10000000 10000000 00000000

00000000 ページ0-5の

Rビット,

クロック単位0 1 0 1 0 1 1

(b) (c) (d) (e)

Time

仮想記憶-37

動作例

• ページフレーム数が3

参照順が 0,1,2,3,0,1,4,0,1,2,3,4

のときの FIFO , LRU , OPT の動作は?

仮想記憶-38

Page Frame数 と Page Fault数

• ページフレーム数が多い(実メモリ容量が大き い)と,ページフォルト回数は減少する?性能が 向上する?

おおむね Yes

仮想記憶-39

Page Frame 数 と Page Fault 数

• ページフレーム数が1~6,

参照順が 0,1,2,3,0,1,4,0,1,2,3,4 のときの,

FIFO動作を考える.

仮想記憶-40

Page Frame 数 と Page Fault 数

0 2 4 6 8 10 12 14

0 1 2 3 4 5 6 7

Num. of Page Frames

Num. of Page Faults

(6)

仮想記憶-41

Page Frame 数 と Page Fault 数

• ページフレーム数が3,4

参照順が 0,1,2,3,0,1,4,0,1,2,3,4 のときの,

FIFO動作は?

仮想記憶-45

Page Frame 数 と Page Fault 数

• Belady’s anomaly

置換えアルゴリズムによっては,ページフレーム数 が増加するとページフォルト数が増加する.

– OPT, LRU

などは

Belady’s anomaly

が発生しない.

仮想記憶-46

良いページング

• 以下を紹介

ワーキングセットモデル

Denning, 1968

割付のローカル,グローバルポリシー

適切なページサイズ

仮想記憶-47

working set model

• working set

プロセスが各時点で頻繁に参照するページ群

• working set は可能な限り主記憶上に維持 –

各プロセスのワーキングセットを把握し,プロセス実

行前にメモリ上にワーキングセットを乗せる.

• もし,working set が主記憶に乗り切らないと,

頻繁にページフォルト&置換が発生し計算機性 能が著しく低下.スラッシング

仮想記憶-48

working set model

• ほとんどプロセスはアドレス空間を一様には参 照しない.

• 時刻 t における直前の k 回のメモリ参照で参照 されたページの集合 w( k , t ) がワーキングセッ ト

k w ( k , t )

仮想記憶-49

working set model

• プログラムの再スタート時に,

最後に停止した際のワーキングセットを基に,ど のページが必要になるかを予測

→プリページング

working set model

• ワーキングセットモデルを実現するには,OSは ワーキングセット内のページを管理する必要が ある.

管理方法例1:

aging

アルゴリズムを使用

.

上位nビット内に1があればワーキングセット内.

n

は経験的に決定する.ただし,性能は

n

の変化に敏 感でない.(nを変えてもWSは大差なし)

本手法は

wsclock

と呼ばれる.

スラッシング thrashing

• ページフォルトが頻繁に発生し,計算機の性能 が著しく低下している状態.

ワーキングセットサイズより主記憶サイズが小さいと,

メモリ参照のたびにページフォルトが発生.

ページアウトしたページが,すぐにページイン.

計算機能力のほぼ全てがページ置換処理に消費さ れてしまう.
(7)

仮想記憶-52

良いページングの歴史

• 歴史的にはLRU と working set model (1968

~) が成功

• 近年は

一次記憶容量が増大

参照の局所性の低下

(

オブジェクト指向プログラムなど

)

– GC (ゴミ集め)

起動で参照パターンが著しく変化

仮想記憶-53

ページテーブル

• 仮想ページ番号を実ページフレーム番号に変 換する表.

• 重要な課題

(1) ページテーブルは極端に大きくなり得る (2) 変換は高速でなくてはならない

仮想記憶-54

ページテーブルサイズ

• 32bit仮想アドレス,ページサイズ4KB

→ ページエントリ数は?

• 64bit仮想アドレス,ページサイズ4KB

→ ページエントリ数は?

• 各ページテーブルは??行あり,

その表を各プロセスが持つ.膨大なメモリ.

各プロセスが独立したアドレス空間を持つので.

仮想記憶-56

ページ変換速度

• 1024 MIPS=1GIPS の例 –

1命令1ナノ秒.

命令に1個以上のオペランドが付随していれば,そ の分だけ変換が必要.

変換は250ピコ秒未満が妥当?

オペランドとは? ピコとは? ナノとな?

仮想記憶-58

ページテーブルの管理 1?

• 高速なレジスタ上にページテーブルを1個持 つ?

プロセスディスパッチの際に, (主記憶上にある)そのプロ セス用のページテーブルをレジスタに読込む.

きわめて高速でわかりやすい.が,高価.

プロセス切り替えの際にページテーブル全てを読み 込むのは,コストが大きい.

仮想記憶-59

ページテーブルの管理 2?

• 全てのページテーブルを主記憶上に持つ?

アドレス変換の度に,主記憶にアクセスが必要.

• これらをそのまま実装することは希

「高速なレジスタ上にページテーブルを1個持つ?」

「全てのページテーブルを主記憶上に持つ?」

仮想記憶-60

• 32bitのアドレスを20,12ビットに分割.

ページサイズは何バイト?

全メモリ空間は何バイト?

ページ数は?

非階層化ページテーブル

仮想記憶-62

非階層化ページテーブル

• 工夫のない実装方法 –

約100万行の表

– 1行8 [Bytes]なら

表は8[MB]

実は

,

たいしたことない?

0 1 2 3 4 5 6 1048573 1048574 1048575

(8)

仮想記憶-63

• 32bitのアドレスを10,10,12ビットに分割.

ページサイズは何バイト?

第1段テーブル(上位10bit)1行は,何バイト?

全メモリ空間は何バイト?

多階層ページテーブル

仮想記憶-65

多階層ページテーブル

• 4GBのメモリ空間のうち,下記の12MBを使用 するプログラムを想定する.

– アドレス0~ の4MB – アドレス 4MB ~ の 4MB – アドレス~4GB の4MB (合計12MB)

0MB4MB 4MB~8MB 8MB12MB

未使用

1048575

12MB~16MB

仮想記憶-66

多階層 ページテーブル

0 1 2 3 4 1023

0 1 1023 0 1 1023 0 1 1023

第2段 ページテーブル

第1段 ページテーブル

仮想記憶-67

多階層ページテーブル

• 実際に使用しているページテーブルは,

1024行が4個のみ.すなわち4096行のみ.

第1段ページテーブル1行につき何バイト?

第2段ページテーブル1行につき何バイト?

仮想記憶-69

多階層ページテーブル

• 仮想アドレス0x00403004=4,206,596 (10)にア クセスする場合

PT1 = ? (10bits) PT2 = ? (10bits) offset = ? (12bits)

0 0 4 0 3 0 0 4

PT1 PT2 offset

仮想記憶-71

多階層 ページテーブル

0 1 2 3 4 1023

2 ページテーブル

第1段 ページテーブル

2 3 1023

0 1 4

実メモリ Page Frame

(4KB)

2 3

0 1 4 5 4095

PT1 = 1,PT2 = 3,offset = 4

• 仮想アドレス0x00803004にアクセスする場合 PT1 = 2 , PT2 = 3 , offset = 4

Page

Fault

アクセス

例外(など)

0 1 2 3 4 1023

第2段 ページテーブル 1

ページテーブル

多階層ページテーブル

Page Fault

ページテーブルエントリ

• ページテーブルの各行は

多くの場合

以下の情報 を持つ

キャッシュ禁止フラグ,参照フラグ,更新フラグ(ダー ティービット

)

保護フラグ

• 1bitの例:アクセスが可/不可

• 3bitの例:読み込み,書き込み,実行,が可/不可

在/不在フラグ

ページフレーム番号

– 2次記憶アドレス

(9)

仮想記憶-74

TLB

• TLB (Translation Lookaside Buffer)

• (通常)MMUの中にあり,

変換表をキャッシュする.

• 典型的なTLB

– 8行~4096行.64行以上は希.

– hit

時のアクセスタイム:

1 CPU clock

– Missペナルティ:10~30 CPU clock.

ミス率:??

(

不明だが

…)

仮想記憶-75

TLB の例

有効

1 1 1 1 1 1 1 1

仮想ページ

番号 更新 保護属性 実ページ フレーム番号 140

20 130 129 19 21 860 861

1 0 1 1 0 0 1 1

RW- R-X RW- RW- R-X R-X RW- RW-

31 38 29 62 50 45 14 75

•例

プログラム

19,20,21 –

データ

129,130,140 –

スタック

860,861

仮想記憶-76

TLB の動作

1. プログラムが仮想アドレス x にアクセス 2. MMUが「x →実アドレス」変換を依頼される 3. 仮想ページ番号がTLB内にあるか調査 4. TLB内に存在し,アクセス許可の場合

→ (ページテーブルを参照せず) TLB 内で解決

存在するが,保護違反の場合

→ 保護例外発生

仮想記憶-77

TLB の動作

4. 存在しない場合

→ 実メモリ上の通常のページテーブルを用い て仮想アドレスを実アドレスに変換.

つまり...

ページテーブルから当該レコードの行を読み込む.

TLBから1行追い出して,その行をTLBに入れる.

追い出された行はメモリに書き出される.

書き出される情報は「更新ビット」のみ.他は変化なし.

TLBミス時の対処は誰がやるか?→後述.

仮想記憶-78

TLBからの検索

• 仮想ページ番号がTLB内にあるか調査

つまり...

– CAM

に対して「仮想ページ番号」の検索を行う.

全メモリに対して同時並列に検索が行われる.

仮想記憶-79

CAM 連想メモリ

• TLBは通常,CAM

• RAM

ユーザが「アドレス」を指定し,メモリより「そのアドレ スにあるデータ」が得られる.

• CAM (Content Addressable Memory)

検索機能付きメモリ.ユーザが「データ」を指定し,メ モリより「そのデータが格納されているアドレス」が得 られる.

仮想記憶-80

TLB ミス時の処理

実装依存.昔は(A),最近は(B)

A) ハードウェア (MMU) が行う. MMU がページ テーブルを調査して必要な情報を取り出す.

 OS(ソフト)にはTLBミスは通知されない.

B) ソフトウェア(OS)が行う.TLBミスで例外が発 生し, OS がページテーブルを引いて解決し,

TLBに追加し,命令を再実行.

MMUが単純になり,CPUキャッシュ

などを増やせる

仮想記憶-81

Inverted Page Table 逆ページテーブル

• 64bitCPUではページテーブルサイズが膨大 – 2^64のアドレス空間がある.

– 4KBのページが2^52個.約4500兆行の表.

– 1行8バイトとして,??Bの表!?!

• 逆ページテーブル

「実記憶ページフレーム→仮想記憶ページ」の変換 テーブルを持つ.

– 16GB実メモリ,4KBページ→??行の表

(10)

仮想記憶-83

Inverted Page Table 逆ページテーブル

• 仮想アドレス空間>>実アドレス空間 の場合に 有効.

• 性能は(順方向の)ページテーブルと比較して著 しく劣る.

仮想ページ番号与えられても,「仮想ページ番号」を 索引として表を引けない.表を捜査する.

– TLBに期待.TLBミス時はhashなど.

– IBM, Sun, HP のワークステーションにて使用.

仮想記憶-84

最適ページサイズ

• s :プロセスの平均サイズ

• e :ぺーテーブルエントリ

• s = 1MB, e = 8Bの例において,最適ページサ

イズは4KB

• 証明省略

最適とは,ページテーブルサイズと,内部フラグメン テーションの合計が最小の意味.

se 2

仮想記憶-85 Aの情報

(?の表) Bの情報 (?の リスト)

Cの情報

Dの情報

Segmentation

• Pagingにより膨大なメモリを 仮想的に使用可能になったが,

理論上の衝突は起きる.

• Cの情報に割付けられた 空間があふれたら困る

プログラマがごみ集め,動的再配置

などの

(きわめて面倒な)

作業行う?

仮想アドレス空間 空き領域 Cの情報 によって 使用中 Cの情報の

ために 割付けられた アドレス空間

仮想記憶-86 Aの情報

(?の表)

Bの情報 (?の リスト)

Cの情報

Dの情報

Segmentation

• 独立したアドレス空間を複数用意する.アドレ スが2次元になった.

アドレスは( セグメント番号 , 内部アドレス)

各セグメントは0番地~最大許容番地までのアド

レスを持てる.

各セグメントサイズは有限だが,(通常は)あふれ ることはない.

Segment 0 Segment 1 Segment 2 Segment 3

仮想記憶-87

paging,segmentation

• paginの利点

固定長のpage単位なので,管理や実装が容易

外部フラグメンテーションが発生しない

実記憶より大きなプロセスも(swappingしながら)実 行可能.

• segmentation の利点

内部フラグメンテーションは発生しない

論理的意味を持つセグメント単位で管理するため,

参照局所性などが(実アドレスでも)失われない.

仮想記憶-88

paging,segmentation

• この技術が利用されていることをプログラマが 認識する必要があるか?

– Paging No

– Segmentation Yes

• いくつのリニアアドレス空間が存在するか?

– Paging 1

– Segmentation

複数

paging , segmentation

• 全アドレス空間が物理メモリ容量を超えることが できるか?

– Paging Yes

– Segmentation Yes

• 手続きとデータは区別されて別々に保護される か?

– Paging No

– Segmentation Yes (segmentごとに管理可能)

paging , segmentation

• サイズが変動するテーブルを柔軟に対応し格納 できるか?

– Paging No

– Segmentation Yes

• この技術が発明された理由

– Paging

より大きな物理メモリを購入することな

く巨大なリニアアドレスを得るため.

– Segmentation

プログラムとデータの各々に独 立のアドレスを与え,それらを共有と保護
(11)

仮想記憶-91

Segmentation の実現

• Segmentationは可変長.以下を参照

– (a)~(d) チェッカーボーディング

(外部フラグメンテーション)の進行

– (e) コンパクションによるチェッカーボーディングの除去

(3KB) (3KB)

(3KB) (3KB)

(4KB)

(10KB)

(3KB) seg.4 (7KB)

seg.3 (8KB) seg. 2 (5KB) seg. 1 (8KB) seg. 0 (4KB)

seg.4 (7KB)

seg.3 (8KB) seg. 2 (5KB)

seg. 7 (5KB)

seg.3 (8KB) seg. 2 (5KB)

seg. 7 (5KB) seg.5 (4KB)

seg.6 (4KB) seg. 2 (5KB)

seg. 7 (5KB) seg.5 (4KB)

seg.6 (4KB) seg. 2 (5KB) seg. 7 (5KB) seg.5 (4KB)

seg. 0 (4KB) seg. 0 (4KB) seg. 0 (4KB) seg. 0 (4KB)

(a) (b) (c) (d) (e)

仮想記憶-92

余談 MMU の実装

• MMUがCPUとは独立したIC

初期のプロセッサ.

MC68000, Z80

など

• CPUがMMUを内蔵 – MC68030, Z280など

• 近年のMMUのほとんどがPaging – x86はSegmentもサポート

仮想記憶-93

ページ割付のローカルポリシー,

グローバルポリシー

• ローカルページ置換アルゴリズム

ページフォルト時の置換対象を,自プロセスのため に割与えられているページフレームから探す

• グローバルページ置換アルゴリズム

ページフォルト時の置換対象を,全ページフレーム から探す

仮想記憶-94

ページ割付のローカルポリシー,

グローバルポリシー

• グローバルページ置換

短所:ページフォルト率を自プロセスで制御できない

長所:ワーキングセットサイズの時間変化に対応で

きる.

どうやって,適切な「各プロセスに割り与えるページ フレーム数」を決定するのか?

• →次のスライドへ

仮想記憶-95

PFF (Page Fault Frequency)

• ページフォルト率の測定

毎秒のフォルト数を数える,累積平均などを算出.

– 1

秒あたりのページフォルト数が

多いプロセス →ページフレームを増やす.

少ないプロセス

ページフレーム減少の対象.

全てのプロセスのPageFault/秒が閾値以上なら

プロセスをメモリから追い出し,メモリを他のプロセ

スに与える.

仮想記憶-96

記憶保護 memory protection

• 通常,OSとハードウェア(CPU内のMMU)が協 力してメモリ保護を実現.

仮想記憶-97

記憶保護 memory protection

• Pagingでは,MMUが仮想アドレス→実アドレス 変換とともにアクセスの可否を判断.

不正なアクセスと判断 → 例外発生

仮想記憶-98

記憶保護 memory protection (再掲載)

• OS/360 では,

メモリを2KB単位に分割し,それぞれに4bitの保護 コードを付加.

– PSW (Program Status Word)

にも4bitのキーを付加.

保護コードの一致しないメモリアクセスが発行される とエラー(割り込み発生)

メモリの保護コード,PSWのキーはOSのみが変更 可能.

– OSやユーザプログラムを不正アクセスか保護

(12)

仮想記憶-99

フェッチ技法

• 要求時ページング demand paging

必要になったときにページを主記憶に読み込む

• プリページング prepaging

プロセスに参照される前に,前もってページを主記 憶に読み込んでおく

仮想記憶-100

要求時ページング

• 利点

プログラムの実行経路の予測

(

アクセスされるペー ジの予測)は困難.

プリページングでは不要なページを読込危険性有り.要 求時ページングではない.

読み込むページの決定処理の負荷が最小.

• 欠点

ページ読込待ち時間の間は,読み込み済みページ は使用不可と同様の状態になる.

仮想記憶-101

プリページング

• プロセスが必要とするページを予測し,それらを 主記憶に読み出しておく方法.

予測の多くが正しいならプロセス実行時間は短縮さ れる.(全てが正解でなくても良い)

予測負荷が低ければ,他のアプリケーションへの影 響が小さい.

主記憶(DRAM)の低価格化と大容量化に伴い,余 分なページの読み出しの弊害が小さく.

Referensi

Dokumen terkait

この記事は、季刊「環境技術会誌」2020.10 NO.181に掲載されたものに写真等を加えて編集し たものです。 明治、大正から公害国会(1970年)以前の 環境行政の動向と法制度(その1) ― 廃棄物対策を中心に ― 一般財団法人日本環境衛生センター 理事長 南 川 秀 樹 記憶に残る本の再読は楽しいものである。書き込みやメモの貼り付けは、これ

日本農芸化学会 2009 年度(平成 21 年度)大会 保育室利用規約 必ずご一読の上、「保育室利用申込書」及び「同意書」にご記入いただき、2009 年 3 月 13 日金までにお申し込み下さい。大会プログラムを掲載する学会誌 3 月号は 3 月初旬に届 く予定ですので、利用希望時間に変更がある場合は、3 月 19 日木までにご連絡ください。 ご利用資格

電気 ・ 情報 工学 専攻 計算機アーキテクチャ (選択 2 単位) 1年後期 佐藤清次 授業テーマ・内容 計算機アーキテクチャを理解するために、コンピュータ内部のCPUのしくみと動作について講義する。コンピュータにおけるデータの 表現や演算方式、命令セットと命令制御方式、割り込み、 入出力等について講義する。

★人体を10の区分(系)に機能的に分割して、その器官や 臓器の形態的大要及び名称が記述でき①、口頭でもわか りやすく説明できること。(②) B(良)=①+②、C(可)=① 週 学修内容 授業の実施方法 到達レベルC可の基準 予習・復習 時間 能力名 分 1 ○ 人体構造の大要 解剖学的表記法、人体 外形区分、器官・臓器 の位置と名称(英語表 記を含む)を理解す

16 米国のアフガニスタンからの撤退は、日本人の考え方に影響を与えたか。――実験 結果は、影響を与えていないことを示唆 多くの専門家が、米国のアフガニスタンからの撤退は、米国への信頼低下という副作用をも たらすと予想した。米国の解説者の多くは、アフガニスタン撤退が国民の支持を得たこと

各テストの実施会場確認方法 ※画面は公開組み分けテスト ※デザインは変更される場合があります ①ホームページの上部メニューバーより「公開テスト」 にカーソルを合わせると各種テストが一覧で表示され ます。 ご希望のテストを選択してください。 ②各テストの紹介ページには「実施要項」の記載が あります。この中から「試験会場・申込番号」の項目

2 筆記 第1問 問 1 下線部説明(8 点) 【解答例】 7 年に及ぶ新種の探索を始めることになろうとは,彼は少しも予想していなかった。 【基準・配点】 次の部分ついて,誤訳・欠如の程度に応じて減点する。 部分 配点 要素 減点無し ①the last thing he expected was that 彼は少しも予想していなかった

3.2 投資支出の決定 この章では、投資需要の大きな部分の決定が、民間企業の選択によることを考える。そ こでは、企業が技術的な制約のもとで、利潤を最大にするという行動をとるとき、投資需 要は利子率と予想産出量に依存すること、利子率が低いほど大きく、予想産出量が大きい ほど大きいことが示される。