Presentation is loading. Please wait.

Presentation is loading. Please wait.

計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について

Similar presentations


Presentation on theme: "計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について"— Presentation transcript:

1 計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について
ページングと補助記憶 仮想記憶について

2 メモリ管理におけるOSの役割 メモリ(主記憶装置): プロセッサと情報をやりとりできる唯一の装置 プログラムや計算の途中経過,結果などを格納
プロセスに何かをさせようとすると,必ずメモリが必要 有限の容量しかない 複数のプロセスに対し,メモリを配分する仕組みが必要 ...OSのお仕事

3 実現したい仕組み OS とプロセスの間で,「メモリの貸し借り」を行う仕組みが必要 プロセスは,OS からメモリを借りる
メモリを「割当て」てもらう 借りたメモリが不要になったとき,OS にメモリを返す メモリを「解放する」 メモリ 要求 プロセス OS メモリ 管理 機構 割当 プロセス 解放

4 メモリ管理機構の仕事 メモリ管理機構が行うべき仕事: メモリの貸し出し状況把握 どのプロセスに,メモリのどの部分を貸し出しているか
メモリの中で,利用可能な部分(未使用領域)はどこか 割当要求への対処 未使用領域のどこを切り取って,プロセスに貸し出すか プロセス(仮想計算機)のアドレス解決 プロセスから見える仮想的な住所(アドレス)と, 実メモリのアドレスとの対応付けを行う

5 メモリの使用状況 メモリの貸し出し状況把握とは... どのプロセスに,メモリのどの部分を貸し出しているか
メモリの中で,利用可能な部分(未使用領域)はどこか を管理,把握すること OS プロセス1 プロセス4 プロセス3 プロセス5 プロセス2 貸出中の領域 未使用の領域

6 状況把握の方法 どのプロセスに,メモリのどの部分を貸し出しているか プロセスごとに,どの領域を使っているか記録しておく レジスタ状態
メモリの開始アドレス 使用メモリサイズ  : プロセス メモリの中で,利用可能な部分(未使用領域)はどこか 連結リスト,双方向リストなどを利用して記憶しておく ... 連結リスト: ... 双方向リスト:

7 未使用領域の管理方式例 未使用領域の最初の数バイトを用いて,リストを表現 最初の未使用領域の場所 サイズ 次の未使用領域の場所 30 50
120 30 170 30 -1 30 80 120 150 170 200 あらかじめ決められたアドレス サイズの昇順(降順)で連結することも可能 上図は連結リストとしての実現.双方向リストも可

8 メモリの解放 プロセスからメモリが解放(返却)されたとき... 当該領域を「未使用」扱いに 必要に応じて,他の未使用領域と併合 解放 併合
使用中 未使用

9 メモリの割当 プロセスからメモリの割当を要求されたとき... 未使用領域の一部を切り出して,プロセスに貸し出す
どの未使用領域から切り出すか ... いくつかの戦略あり 使える未使用領域がない場合の対応は? 要求サイズ A B 基本的には, すし屋のカウンターに グループ客を座らせる問題...と同じ

10 メモリ割当の戦略 要求サイズより大きな未使用領域の中で... (A) 最初に見つかったところから切り出す (first-fit)
(B) もっとも大きな未使用領域から切り出す (worst-fit) 細かな未使用領域が多数発生することになり,損 (C) もっとも小さい未使用領域から切り出す (best-fit) 大きな領域を後に残しておけるので,全体的には得 要求サイズ A C B

11 戦略の違い 要求: の後に が来る場合 worst-fit戦略 割当不能! best-fit戦略 割当可能!

12 割当不能時の対処法 要求されたメモリ割当に使える未使用領域がないときは... 未使用領域ができるまで待つ
小さな要求が先に処理され,いつまでも空かないかも 使用中の領域を移動して,大きなスペースを作りだす メモリ内部の他の場所に移動 補助記憶装置等,メモリの外部に,一時的に追い出す 要求サイズ

13 領域の再配置について 使用中領域の再配置(移動,追い出し): 配置場所の変更を,プロセスには意識させたくない
プロセス(プログラム)による「メモリの使い方」を十分理解し, その視野の外で動作する仕組みを作りだす必要アリ コンピュータのプログラム: 抽象化された仮想計算機上で動作するよう作成される メモリは,第 0番地から順番にすべて利用可能,と想定 仮想的なアドレスを使って,データ等の場所を指示 実動作時には,メモリ内のどこかに配置される

14 仮想計算機上のプログラム 仮想計算機内でのプログラム 100番地に配置 400番地に配置 仮想アドレスを実アドレスに変換する必要アリ
000: JMP 100 : 100: LOAD B, 200 200: 2Ah 仮想計算機内でのプログラム 100 JMP 200 : 200 LOAD B, 300 300 2Ah 100番地に配置 400 JMP 500 : 500 LOAD B, 600 600 2Ah 400番地に配置 仮想アドレスを実アドレスに変換する必要アリ

15 アドレス解決の仕組み 方式1) メモリ割当時に,どのラベルが何番地になるか計算する 配置場所の移動はきわめて困難になる
方式2) メモリベースレジスタ(MBR)をプロセスに持たせる アドレスの参照は,MBRの値により補正 MBRの値を変えれば,配置場所の移動は比較的容易 400番地に配置 MBR 400 仮想計算機内 400 JMP 100 (+ MBR) : 500 LOAD B, 200 (+ MBR) 600 2Ah 000: JMP 100 : 100: LOAD B, 200 200: 2Ah

16 ここまでのまとめ 計算機のメモリは,OSのメモリ管理機構が管理する メモリ管理機構は,プロセスからの動的な要求に対応する
未使用領域の管理には,リスト構造の利用が便利 best-fitting戦略を使えば,割当の効率がよい MBRを用いてアドレス解決を行えば,再配置が容易 ここからのおはなし ページ単位でのメモリ管理にすれば,もっと効率アップ MBR方式を拡張する必要あり 仮想記憶方式との整合性も良い

17 メモリの「ページ」 ページ:メモリを管理するときの1ブロック 典型的な1ページ=4096バイト分のメモリ 基本的なアイデア:
メモリ全体を多数のページに分割する プロセスの持つメモリも,ページに分割して管理 プロセスは,ページ変換表を使ってページの対応を管理 (MBRは使わない) この方式の良いところ: 必ずしも連続したページを割り当てる必要がない

18 ページの管理 実際のメモリ 使用中ページ 未使用ページ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 プロセスの持つ ページ変換表 1 2 3 14 6 9 内部番号 実ページ番号 14 6 9 2 ページ変換表を利用することで, 連続したメモリ領域を保持して いる場合と同等に扱える

19 プロセス内でのアドレス管理 ページサイズを S とする プロセスが,自分のメモリの先頭から M 番目にアクセスする:
M = PS + Q となる P と Q を計算する P...プロセス内で何ページ目にあたるか Q ...そのページ内で,先頭から何番目か ページ変換表の P 行目を参照し,実ページ番号 R を得る メモリの RS + Q 番地が,アクセスすべき番地 実際のメモリ番地への変換は,OSが行う (プロセスは,OSに対して M 番地の内容を問い合わせるだけ)

20 アドレス変換の例 ページサイズを S = 1000h バイトとする プロセス内の 28F4h 番地にアクセスしたいとき...
28F4h = 2x1000h + 8F4h 実ページ番号は 9 メモリ 9 ページ目の 8F4h 番地  = 98F4h番地を参照 1 2 3 14 6 9 内部番号 実ページ番号 0000 1000 2000 3000 14 6 9 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0000 1000 2000 3000 4000 5000 6000 7000 8000 9000 A000 B000 C000 D000 E000 F000 10000 11000 12000 13000

21 ページ単位でメモリ管理をする利点 使い道のない,小さな未使用領域の発生を抑制 「断片化の問題」が少ない
一つのプロセスに,連続したメモリを割当てる必要がない 割当場所の違いは,ページ変換表を使ってOSが吸収 2番目の利点をもっと積極的に利用すると... ページの場所を移動しても,比較的簡単に対応可能 (プロセスのページ変換表を書き換えるだけ) ページを,メモリ以外の場所に一時退避することも可能 実際のメモリ容量以上のページを確保することも可能 ⇒仮想記憶

22 主記憶装置と補助記憶装置 準備: メモリのページを一時退避するための補助記憶装置を用意 (スワップ領域:ハードディスク等の高速装置を利用)
アドレス変換表を拡張 (退避中か否か,退避場所に関する情報を持たせる) メモリ(主記憶装置) アドレス変換表 ディスク(補助記憶装置)

23 ページアウト 主記憶上の未使用ページが少なくなってくると... OSが,補助記憶装置に掃出すページを選択する
掃出すページの内容を補助記憶装置へ転送 掃出された跡地を未使用扱いに 掃出されたページを指していたアドレス変換表を更新 ページアウト スワップアウト

24 ページイン ページアウトされていたページが参照されると... 割込み(ページフォルト,アドレス変換例外)が発生
主記憶の未使用ページへ,補助記憶からデータ転送 アドレス変換表を更新 ページイン スワップイン

25 ページアウトの戦略 ページイン:参照されたページを読み込むだけ ページアウト:どのページを掃出すか,選択の余地あり
参照される確率が低そうなページをページアウトしたい 「メモリ参照の局所性」を利用 プログラム実行中のある時点でA番地のメモリを参照 ⇒A番地付近のメモリも参照される可能性が高い メモリのページ毎に,「最近いつ参照されたか」を記録しておく 「近々には使われなさそうなメモリページ」をページアウトする

26 LRU法 LRU法 (Least Recently Used) 「最近最も使われなかった」ページを掃き出す戦略 グローバルLRU法:
対象ページがどのプロセスに属するか無関係に, とにかく最近使われていないものを掃き出す ローカルLRU法: 優先度の低いプロセスを特定し,そのプロセスに 属するページをLRUで掃き出す

27 仮想記憶 ページイン,ページアウトが可能であれば, プロセスの全てのページが,主記憶上にある必要はない 仮想記憶:
プロセスに「見せる」アドレス空間を,実際のメモリの アドレス空間とは分離して管理する仕組み プロセスに対し,実際のメモリサイズよりも大きな メモリサイズを提供することが可能 ただし,頻繁にページイン・ページアウトを繰り返すようだと, 実行効率は大幅に悪化する

28 メモリ管理に関連するその他の概念 デマンドページング,プリページング 実際に参照されたページのみページインする(デマンド–)
ページ参照を予測し,事前にページインを行う(プリ–) スラッシング メモリの割当要求が過剰で,プロセッサがページイン, ページアウトにばかり時間をとられて仕事が進まない様子 近年の計算機...巨大なメモリを持つようになった ⇒ スラッシング,ページングが発生する機会も少なくなった

29 本日のまとめ メモリ管理について 未使用領域の管理と割当戦略 ページング 仮想記憶 次回の講義:ファイルシステムについて
課題(結果の提出不要): UNIXベースのOSで vmstat を実行し,メモリ使用状況や ページイン・アウトの様子を観察せよ


Download ppt "計算機システム概論・4回目 本日のトピック:メモリの管理と仮想記憶 メモリ管理におけるOSの役割 メモリの割当方法について"

Similar presentations


Ads by Google