主記憶管理(メモリ管理)主記憶管理(メモリ管理)...

12
主記憶管理(メモリ管理) z プログラムは主記憶上で実行される z プログラムやデータはファイルとして補助記憶装置に格納されている z 複数のプログラムを同時に主記憶上で実行する(マルチプロセス) プログラムA プログラムB プログラムD プログラムC プログラムA プログラムB プログラムD プログラムC ファイル 主記憶 割当て済みの主記憶 未使用領域 OSが管理すること:主記憶の効率的に使う 補助記憶装置 主記憶の割当て方式 単一プロセスにおける主記憶割当て 単一連続割当て OSと一つのユーザプログラムが 主記憶領域を分割して使用する : ユーザプログラムはOSが使用して いる領域以外を使用する マルチプロセスにおける主記憶割当て 固定区画方式 可変区画方式 プログラム OS 主記憶 (1) 再配置可能 (2) 再入可能 (3) アドレス変換 プログラムに 要求される性質 ハードウェアによる 支援 1

Transcript of 主記憶管理(メモリ管理)主記憶管理(メモリ管理)...

Page 1: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

主記憶管理(メモリ管理)

プログラムは主記憶上で実行される

プログラムやデータはファイルとして補助記憶装置に格納されている

複数のプログラムを同時に主記憶上で実行する(マルチプロセス)

プログラムA

プログラムB

プログラムD

プログラムCプログラムAプログラムB

プログラムD

プログラムC

ファイル

主記憶 割当て済みの主記憶

未使用領域

OSが管理すること:主記憶の効率的に使う

補助記憶装置

主記憶の割当て方式

• 単一プロセスにおける主記憶割当て– 単一連続割当て

: OSと一つのユーザプログラムが主記憶領域を分割して使用する

: ユーザプログラムはOSが使用している領域以外を使用する

• マルチプロセスにおける主記憶割当て

– 固定区画方式

– 可変区画方式

プログラム

OS

主記憶

(1) 再配置可能

(2) 再入可能

(3) アドレス変換

プログラムに要求される性質

ハードウェアによる支援

1

Page 2: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

プログラム

プログラム

プログラム

プログラム

プログラム

主記憶

プログラムは主記憶のどの領域に配置しても正しく動作しなければならない

→ データの参照やジャンプ先の

番地(アドレス)指定は主記憶の物理的な番地(物理アドレス)で指定しない(論理アドレスで指定する)

(1) 再配置可能(relocatable)であるということ(主記憶のどの領域に配置されても実行可能なプログラム)

データ部①

データ部①

データ部①

プログラム部①

プログラム部①

プログラム部①プログラム部①

主記憶

一つのプログラムが複数のプロセスによって使用されるとき,プログラムを個々に配置するのは主記憶の無駄使いになる

プロセスA

プロセスC

プロセスB

(2) 再入可能(reentrant)であるということ

2

Page 3: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

プログラム部①

プログラム部①

データ部A

データ部B

データ部C

主記憶

プログラムが使用するデータ部はプロセスごとに独立させる

プロセスAのデータ

プロセスCのデータ

プロセスBのデータ

プログラム部(手続き部)は各プロセスで共有する

(2) 再入可能(reentrant)であるということ(同時に複数のプロセスとして実行可能なプログラム)

プログラム部は各プロセスに共通

プログラム部とデータ部が分離され,プロセスごとに独立してデータ領域を保持できる性質をもつプログラム

= 再入可能プログラム / リエントラントプログラム

ソフトウェア開発技術者試験問題(平成16年度春期)

問:再入可能(リエントラント)プログラムの説明として,最も適切なものはどれか。

ア 一度実行した後,ロードし直さずに再び実行を繰り返しても,正しい結果が得られる。

イ 実記憶上のどこのアドレスに配置しても実行することが可能である。

ウ 複数のセグメントに分割されており,セグメント単位にロードして実行することが可能である。

エ 複数のプロセスで並行して実行しても,正しい結果が得られる。

3

Page 4: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

基本情報技術者試験問題(平成17年度春期)

問:処理が終了していないプログラムが,別のプログラムから再度呼出されることがある。このプログラムが正しく実行されるために備えるべき性質はどれか。

ア 再帰的(リカーシブ)

イ 再使用可能(リユーザブル)

ウ 再入可能(リエントラント)

エ 再配置可能(リロケータブル)

物理アドレスと論理アドレス

マルチプロセスの環境では,OSがプログラムの主記憶領域中の配置場所を決める

→ プログラム自身は実行時の物理アドレスを意識できない◆ プログラム実行時の命令やデータの主記憶上の番地(アドレス):物理アドレス

◆ プログラムが想定する命令やデータの論理的な番地(アドレス):論理アドレス

命令・データ

プログラム(論理アドレス)

0番地

X番地

Y番地

命令・データ

主記憶(物理アドレス)

0番地

A番地

(ベースアドレス)

X+A番地

論理アドレスから物理アドレスへ変換

Y+A番地

プログラムの実行時には,「論理アドレス」は「物理アドレス」に変換されて実行される

4

Page 5: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

• 静的再配置(static relocation)– 補助記憶装置から主記憶へプログラムをもってくる時

(ロード時)に物理アドレスに変換する

– 実現が容易

• 動的再配置(dynamic relocation)– 命令の実行時にハードウェア(ベースレジスタ)によって

論理アドレスを物理アドレスへ変換する(後述)

– コンパクション(後述)によって、主記憶の利用効率を向上できる

(3) アドレス変換(address mapping/translation)

: 論理アドレスから物理アドレスへの変換

主記憶の割当て方式

• 単一プロセスにおける主記憶割当て– 単一連続割当て

: OSと一つのユーザプログラムが主記憶領域を分割して使用する

: ユーザプログラムはOSが使用している領域以外を使用する

• マルチプロセスにおける主記憶割当て

– 固定区画方式

– 可変区画方式

プログラム

OS

主記憶

(1) 再配置可能

(2) 再入可能

(3) アドレス変換

プログラムに要求される性質

ハードウェアのよる支援

5

Page 6: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

固定区画方式

• 主記憶領域をサイズ固定の区画に分割• 領域サイズを複数用意する• 区画内に収まるプログラムを選んでロードする

プログラム①

プログラム②

プログラム③

150K

50K

50K

300K

200K

100K100K

区画A

区画B

区画C

区画D

OS

主記憶

• 一時にロードできるプログラム数,

大きさに制限がある

• あらかじめ設定された区画よりも

大きなプログラムを実行することができない

• 「内部断片化 」が発生する

→ 主記憶の使用効率が悪化

区画A(300K)プログラム①

プログラム②

プログラム③

OS

主記憶

150K

区画B(200K)

区画C(100K)

区画D(100K)

• 割り当てられた領域内

で使用されない無駄な空き領域が生じる

• 主記憶の利用効率を

下げる

内部断片化

50K

50K

空き領域が450Kあっても,300Kのプログラムを

実行できない

空き領域

6

Page 7: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

メモリ領域を可変長の区画で管理する主記憶に格納されるプログラム数,大きさは動的に定まる新しいプログラムをロードするとき,そのプログラムを格納するのに十分な空き領域を確保し,その領域に割り当てる「外部断片化 」の発生

可変区画方式

プログラム①

プログラム②

プログラム③

主記憶

150Kプログラム③プログラム②

プログラム①

OS

50K

50K

可変区画割当ての例

(P1:200K P2:100K P3:160K P4:130K P5:100K)

50K

0

250K

350K

510K

550K

50K

0

250K

350K

510K

550K

50K

0

250K

350K

510K

550K

50K

0

180K

350K

510K

550K

50K

0

280K

350K

510K

550K

180K 180K

プロセス1終了プロセス

プロセス2

プロセス3

OS

未使用

OSOSOSOS

プロセス4割付け未使用

未使用

未使用

未使用

プロセス2終了

プロセス5割付け

未使用 未使用 未使用 未使用

プロセス2

プロセス3

プロセス3

プロセス2

プロセス4

プロセス4

プロセス3

プロセス4

プロセス5

プロセス3

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

7

Page 8: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

可変区画方式における空き領域の割当てアルゴリズム

◆ 新しいプログラムをロードするための主記憶中に散在する空き領域を探す

1. 初適合(first-fit)... 最初に見つかった十分な空き領域を割り当てる

– 探索が速く、実現が容易、利用効率はあまりよくない

2. 最適適合(best-fit) ... 十分な領域をもつ最小の空き領域を割り当てる

– 利用効率はよい(空き領域は最小)が、空き領域を見つけるオーバーヘッドが大きい

3. 最悪適合(worst-fit) ... 最大の空き領域を割り当てる

– 小さな空き領域が多くなり,領域の利用効率が悪い

メモリ領域割当てアルゴリズム

20KB

60KB

80KB

40KB

空き

割当て済み

30KB

20KB

30KB

80KB

40KB

20KB

60KB

80KB

10KB

20KB

60KB

50KB

40KB

(1) 初適合 (2) 最適適合 (3) 最悪適合

検索方向

割当て要求

OS OSOSOS

8

Page 9: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

空き領域の管理方法(1)1. リスト方式

使用プロセス

開始アドレス(ユーザ領域の先頭を0番地とする,単位Kバイト)

大きさ(Kバイト)

空き 0 150 ② 150 150

空き 300 50 ④ 350 100

空き 450 250

主記憶

プロセス④

プロセス②

OS

50K

150K

150K

100K

250K

0

150

300350

450

空き領域の管理方法(2)

2. ビットマップ方式

0 0 0 0 0 0 1 1

領域の未使用/使用を0と1に対応させる(この例では25Kバイトを1ビットに対応させている)

主記憶

プログラム④

プログラム②

OS

50K

150K

150K

100K

250K

0

150

300350

450

1 1 1 1 0 0 1 1

1 1 0 0 0 0 0 0

0 0 0 0

9

Page 10: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

外部断片化

ロードされたプログラムの実行が終了し,空き領域が断片的に存在する。全体としての空き領域が大きくても,一つ一つの空き領域が小さいため、新たなプログラムを割り当てられない。

150K

150K50K プログラム③

プログラム②

プログラム①

OS

250K

主記憶 主記憶

プログラム④

プログラム②

OS

50K

150K

150K

100K

250K

プログラム④100K

外部断片化の解消:コンパクション

• 主記憶上のプログラムを移動することによって、散在する空き領域を1つの大きい空き領域にまとめる

→ 主記憶の利用効率が向上する

• プログラムの移動によるオーバーヘッドが大きい

• プログラムは動的再配置 可能でなければならない

OS

プログラムD

プログラムH

プログラムF

OS

プログラムD

プログラムH

プログラムF

10

Page 11: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

コンパクションを行った場合の可変区画割当ての例

(P1:200K P2:100K P3:160K P4:130K P5:100K)

50K

0

250K

350K

510K

550K

50K

0

250K

350K

510K

550K

50K

0

290K

390K

550K

50K

0

180K

290K

390K

550K

180K

プロセス1終了プロセス

1

OS

未使用

OSOSOS

プロセス4割付け

未使用

未使用プロセス5割付け

未使用

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

280Kプロセス

2

プロセス3

プロセス2

プロセス3

プロセス4

プロセス2

プロセス3

プロセス4

プロセス5

プロセス2

プロセス3

0

500

LOAD $R0, (500)

1234

主記憶(物理アドレス)

10000

10500

LOAD $R0, (500)

1234

10000 ベースレジスタ(再配置レジスタ)

プログラム(論理アドレス)

動的再配置(dynamic relocation)– 各命令の実行時に,論理アドレスから物理アドレスへ変換する

プロセスごとに用意する

11

Page 12: 主記憶管理(メモリ管理)主記憶管理(メモリ管理) zプログラムは主記憶上で実行される zプログラムやデータはファイルとして補助記憶装置に格納されている

演習問題 5 1. 次の文に相当する方式・状況・現象を何というか。選択群から選べ。

(1) 複数のプロセスが互いに干渉することなく,同一のプログラムを同時に利用できること。 (2) 主記憶のどこに読み込まれても実行可能であること (3) 命令が,命令やデータの記憶場所を識別するのに使用する論理的なアドレス (4) 命令やデータの実体が存在する主記憶上の物理的なアドレス (5) プログラムの主記憶へのロード時に,論理アドレスを物理アドレスに変換して,主記憶に

配置する方式 (6) プログラムの実行時に,ハードウェアによって論理アドレスを物理アドレスに変換してプ

ログラムを実行する方式 (7) 割当てられた主記憶領域の中で無駄な領域が生じる現象 (8) 主記憶の空き領域が全体として大きくても,それらが主記憶内に散在しているため,プロ

グラムの実行に利用することができない現象 【選択群】

内部断片化 物理アドレス 外部断片化 動的再配置 再入可能 再配置可能 論理アドレス 静的再配置

2. 右表の 5 個のプロセスが順に主記憶にロードされて実行され

るときのメモリ内容の推移を(a),(b)の場合について図示し,すべて

のプロセスの実行が終了するまでの時間を求めよ。ただし,プロ

セス実行のために利用できる全メモリ容量は 500kB(OS の使用

領域を除く 100kbyte~600kB の領域)とし,P1 から順番に処理

を行うものとする。 (a) 可変区画割付でコンパクションを行わない場合 (b) 可変区画割付で全体の実行時間が最小になるようにコンパクションを行う場合

(a) の場合

(b) の場合

プロセス 大きさ 実行時間

P1 100kB 10 ミリ秒

P2 250kB 20 ミリ秒

P3 200kB 20 ミリ秒

P4 150kB 25 ミリ秒

P5 250kB 10 ミリ秒

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

t=10 t=0 t= t= t= t= 600 600 600 600 600 600

OS OS OS OS OS OS

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

0

100

200

300

400

500

t=10 t=0 t= t= t= t= 600 600 600 600 600 600

OS OS OS OS OS OS

12