計算機システム概論・4回目
DESCRIPTION
計算機システム概論・4回目. 本日のトピック:メモリの管理と仮想記憶 メモリ管理における OS の役割 メモリの割当方法について ページングと補助記憶 仮想記憶に ついて. メモリ管理における OS の役割. メモリ(主記憶装置): プロセッサと情報をやりとりできる唯一の装置 プログラムや計算の途中経過,結果などを格納 プロセスに 何かをさせようとすると,必ず メモリが必要 有限の容量しかない 複数のプロセスに対し,メモリを配分する仕組みが必要 ...OS のお仕事. 実現したい仕組み. OS とプロセスの間で,「 メモリの貸し借り 」を行う仕組みが必要 - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/1.jpg)
計算機システム概論・4回目
本日のトピック:メモリの管理と仮想記憶メモリ管理における OS の役割メモリの割当方法についてページングと補助記憶仮想記憶について
1
![Page 2: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/2.jpg)
メモリ管理における OS の役割
メモリ(主記憶装置):プロセッサと情報をやりとりできる唯一の装置プログラムや計算の途中経過,結果などを格納プロセスに何かをさせようとすると,必ずメモリが必要有限の容量しかない
複数のプロセスに対し,メモリを配分する仕組みが必要...OS のお仕事
2
![Page 3: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/3.jpg)
実現したい仕組み
OS とプロセスの間で,「メモリの貸し借り」を行う仕組みが必要
プロセスは, OS からメモリを借りるメモリを「割当て」てもらう
借りたメモリが不要になったとき, OS にメモリを返す
メモリを「解放する」
3
プロセス
プロセス OSメモリ管理機構
要求
割当
解放
メモリ
![Page 4: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/4.jpg)
メモリ管理機構の仕事
メモリ管理機構が行うべき仕事:メモリの貸し出し状況把握
どのプロセスに,メモリのどの部分を貸し出しているかメモリの中で,利用可能な部分(未使用領域)はどこか
割当要求への対処未使用領域のどこを切り取って,プロセスに貸し出すか
プロセス(仮想計算機)のアドレス解決プロセスから見える仮想的な住所(アドレス)と,
実メモリのアドレスとの対応付けを行う
4
![Page 5: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/5.jpg)
メモリの使用状況
メモリの貸し出し状況把握とは ...どのプロセスに,メモリのどの部分を貸し出しているかメモリの中で,利用可能な部分(未使用領域)はどこか
を管理,把握すること
5
プロセス1プロセス2プロセス3
プロセス4プロセス5
貸出中の領域未使用の領域
OS
![Page 6: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/6.jpg)
状況把握の方法
どのプロセスに,メモリのどの部分を貸し出しているかプロセスごとに,どの領域を使っているか記録しておく
6
• レジスタ状態• メモリの開始アドレス• 使用メモリサイズ
:プロセス
メモリの中で,利用可能な部分(未使用領域)はどこか連結リスト,双方向リストなどを利用して記憶しておく
...連結リスト:
...双方向リスト:
![Page 7: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/7.jpg)
未使用領域の管理方式例
サイズの昇順(降順)で連結することも可能上図は連結リストとしての実現.双方向リストも可
7
未使用領域の最初の数バイトを用いて,リストを表現
サイズ 次の未使用領域の場所
2000 30 80 120
150
170
12050 1703030 30 -1
最初の未使用領域の場所
あらかじめ決められたアドレス
![Page 8: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/8.jpg)
メモリの解放
プロセスからメモリが解放(返却)されたとき ...当該領域を「未使用」扱いに必要に応じて,他の未使用領域と併合
8
使用中 未使用
解放
併合
![Page 9: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/9.jpg)
メモリの割当
プロセスからメモリの割当を要求されたとき ...未使用領域の一部を切り出して,プロセスに貸し出すどの未使用領域から切り出すか ... いくつかの戦略あり使える未使用領域がない場合の対応は?
9
要求サイズ
A B
基本的には,すし屋のカウンターにグループ客を座らせる問題 ... と同じ
![Page 10: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/10.jpg)
メモリ割当の戦略
要求サイズより大きな未使用領域の中で ...(A) 最初に見つかったところから切り出す (first-fit)(B) もっとも大きな未使用領域から切り出す (worst-fit)
細かな未使用領域が多数発生することになり,損(C) もっとも小さい未使用領域から切り出す (best-fit)
大きな領域を後に残しておけるので,全体的には得
10
要求サイズ
A C B
![Page 11: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/11.jpg)
戦略の違い
11
worst-fit戦略
要求: の後に が来る場合
割当不能!
best-fit 戦略
割当可能!
![Page 12: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/12.jpg)
割当不能時の対処法
要求されたメモリ割当に使える未使用領域がないときは ...未使用領域ができるまで待つ
小さな要求が先に処理され,いつまでも空かないかも
使用中の領域を移動して,大きなスペースを作りだすメモリ内部の他の場所に移動補助記憶装置等,メモリの外部に,一時的に追い出す
12
要求サイズ
![Page 13: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/13.jpg)
領域の再配置について
使用中領域の再配置(移動,追い出し):配置場所の変更を,プロセスには意識させたくない
プロセス(プログラム)による「メモリの使い方」を十分理解し,
その視野の外で動作する仕組みを作りだす必要アリ
コンピュータのプログラム:抽象化された仮想計算機上で動作するよう作成される
メモリは,第 0 番地から順番にすべて利用可能,と想定仮想的なアドレスを使って,データ等の場所を指示
実動作時には,メモリ内のどこかに配置される 13
![Page 14: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/14.jpg)
仮想計算機上のプログラム
14
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 番地に配置
仮想アドレスを実アドレスに変換する必要アリ
![Page 15: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/15.jpg)
アドレス解決の仕組み
方式 1) メモリ割当時に,どのラベルが何番地になるか計算する
配置場所の移動はきわめて困難になる方式 2) メモリベースレジスタ (MBR) をプロセスに持たせる
アドレスの参照は, MBR の値により補正MBR の値を変えれば,配置場所の移動は比較的容易
15
400 JMP 100 (+ MBR) :
500 LOAD B, 200 (+ MBR) :
600 2Ah
400 番地に配置 MBR 400
000: JMP 100 :
100: LOAD B, 200 :
200: 2Ah
仮想計算機内
![Page 16: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/16.jpg)
ここまでのまとめ
計算機のメモリは, OS のメモリ管理機構が管理するメモリ管理機構は,プロセスからの動的な要求に対応する
未使用領域の管理には,リスト構造の利用が便利best-fitting 戦略を使えば,割当の効率がよいMBR を用いてアドレス解決を行えば,再配置が容易
16
ここからのおはなしページ単位でのメモリ管理にすれば,もっと効率アップMBR方式を拡張する必要あり仮想記憶方式との整合性も良い
![Page 17: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/17.jpg)
メモリの「ページ」
ページ:メモリを管理するときの1ブロック典型的な 1 ページ= 4096バイト分のメモリ
基本的なアイデア:メモリ全体を多数のページに分割するプロセスの持つメモリも,ページに分割して管理プロセスは,ページ変換表を使ってページの対応を管理
( MBR は使わない)
この方式の良いところ:必ずしも連続したページを割り当てる必要がない
17
![Page 18: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/18.jpg)
ページの管理
18
実際のメモリ 未使用ページ使用中ページ
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
プロセスの持つ14 6 9 2ページ変換表
0123
14692
内部番号 実ページ番号ページ変換表を利用することで,連続したメモリ領域を保持している場合と同等に扱える
![Page 19: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/19.jpg)
プロセス内でのアドレス管理
ページサイズを S とする
プロセスが,自分のメモリの先頭から M 番目にアクセスする:1. M = PS + Q となる P と Q を計算する
P ...プロセス内で何ページ目にあたるかQ ...そのページ内で,先頭から何番目か
2. ページ変換表の P 行目を参照し,実ページ番号 R を得る
3. メモリの RS + Q 番地が,アクセスすべき番地
実際のメモリ番地への変換は, OS が行う(プロセスは, OS に対して M 番地の内容を問い合わせるだけ)
19
![Page 20: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/20.jpg)
アドレス変換の例
ページサイズを S = 1000h バイトとする
プロセス内の 28F4h 番地にアクセスしたいとき...1. 28F4h = 2x1000h + 8F4h2. 実ページ番号は 93. メモリ 9 ページ目の 8F4h 番地
= 98F4h 番地を参照
20
189 13 14 15
0123
14692
内部番号 実ページ番号
0 1 2 3 4 5 6 7 8 10 11 12 16 17 19
14 6 9 2
0000
1000
2000
3000
0000
1000
2000
3000
4000
5000
6000
7000
8000
9000
A000
B000
C000
D00
0
E000
F000
1000
0
1100
0
1200
0
1300
0
![Page 21: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/21.jpg)
ページ単位でメモリ管理をする利点
使い道のない,小さな未使用領域の発生を抑制「断片化の問題」が少ない
一つのプロセスに,連続したメモリを割当てる必要がない
割当場所の違いは,ページ変換表を使って OS が吸収
2番目の利点をもっと積極的に利用すると ...ページの場所を移動しても,比較的簡単に対応可能
(プロセスのページ変換表を書き換えるだけ)ページを,メモリ以外の場所に一時退避することも可能実際のメモリ容量以上のページを確保することも可能
⇒仮想記憶21
![Page 22: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/22.jpg)
主記憶装置と補助記憶装置
準備:メモリのページを一時退避するための補助記憶装置を用意
(スワップ領域:ハードディスク等の高速装置を利用)
アドレス変換表を拡張(退避中か否か,退避場所に関する情報を持たせ
る)
22
アドレス変換表
メモリ(主記憶装置)
ディスク(補助記憶装置)
![Page 23: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/23.jpg)
ページアウト
主記憶上の未使用ページが少なくなってくると ...OS が,補助記憶装置に掃出すページを選択する掃出すページの内容を補助記憶装置へ転送掃出された跡地を未使用扱いに掃出されたページを指していたアドレス変換表を更新
23
ページアウトスワップアウト
![Page 24: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/24.jpg)
ページイン
ページアウトされていたページが参照されると ...割込み(ページフォルト,アドレス変換例外)が発生主記憶の未使用ページへ,補助記憶からデータ転送アドレス変換表を更新
24
ページインスワップイン
![Page 25: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/25.jpg)
ページアウトの戦略
ページイン:参照されたページを読み込むだけページアウト:どのページを掃出すか,選択の余地あり
参照される確率が低そうなページをページアウトしたい「メモリ参照の局所性」を利用
プログラム実行中のある時点で A 番地のメモリを参照⇒A 番地付近のメモリも参照される可能性が高い
メモリのページ毎に,「最近いつ参照されたか」を記録しておく「近々には使われなさそうなメモリページ」をページアウトする
25
![Page 26: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/26.jpg)
LRU 法
LRU 法 (Least Recently Used)「最近最も使われなかった」ページを掃き出す戦略
グローバル LRU 法:対象ページがどのプロセスに属するか無関係に,
とにかく最近使われていないものを掃き出す
ローカル LRU 法:優先度の低いプロセスを特定し,そのプロセスに
属するページを LRU で掃き出す
26
![Page 27: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/27.jpg)
仮想記憶
ページイン,ページアウトが可能であれば,プロセスの全てのページが,主記憶上にある必要はない
仮想記憶:プロセスに「見せる」アドレス空間を,実際のメモリの
アドレス空間とは分離して管理する仕組みプロセスに対し,実際のメモリサイズよりも大きな
メモリサイズを提供することが可能
ただし,頻繁にページイン・ページアウトを繰り返すようだと,実行効率は大幅に悪化する 27
![Page 28: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/28.jpg)
メモリ管理に関連するその他の概念
デマンドページング,プリページング実際に参照されたページのみページインする(デマンド–)ページ参照を予測し,事前にページインを行う(プリ–)
スラッシングメモリの割当要求が過剰で,プロセッサがページイン,
ページアウトにばかり時間をとられて仕事が進まない様子
近年の計算機 ...巨大なメモリを持つようになった⇒ スラッシング,ページングが発生する機会も少なくなった
28
![Page 29: 計算機システム概論・4回目](https://reader035.vdocuments.pub/reader035/viewer/2022062422/5681309c550346895d96843e/html5/thumbnails/29.jpg)
本日のまとめ
メモリ管理について未使用領域の管理と割当戦略ページング仮想記憶
次回の講義:ファイルシステムについて
課題(結果の提出不要):UNIXベースの OS で vmstat を実行し,メモリ使用状況や
ページイン・アウトの様子を観察せよ
29