-
ページングとはページ(page) という固定サイズのブロックを単位としてマッピングする
アドレス変換テーブルはページテーブルと呼ぶ
• プログラムやデータなどの領域の意味に関わらず に、固定長(例えば 4KiB)の領域割り付けを行う -
セグメンテーションとはプログラムやデータという論理的な意味を持つ、 可変長のセグメント(segment) というブロックで マッピングする
アドレス変換テーブルはセグメントテーブル -
ページングの長所短所長所
(1) 一定かつ固定長のページをマッピングに用いる
メモリやファイルの管理が簡単 外部フラグメンテーションが発生せず、使用効率が良い
(2) メインメモリより大きなメモリが必要なプロセスで も、ページを動的に入れ替えながら実行が可能
短所
(3) 論理的な意味によらず、機械的に分割し、不連続に 並べて管理するため、参照局所性を活用できない -
アドレス変換テーブル使いかた仮想アドレスVによって変換テーブルを引き、その内容であるじつアドレスRを得る
実記憶上に該当するアドレスがないこともある→実記憶にあるかのチェックもできる -
アドレス変換テーブルの情報ページ例外フラグ:そのページが実メモリ上にないか
参照フラグ(参照ビットR):そのページが参照されたか
更新フラグ(Cフラグ):そのページが書き換えられたか
保護情報(Pフラグ):各走行モードでの参照、更新、実行は可能か
アドレス情報:ページが実メモリ上にあるとき:実アドレス(ページ枠番号)
ページが実メモリ上にないとき: ディスクアドレス -
仮想記憶機構の動作を説明しな1. マシン命令がアクセスする対象のアドレス(= 仮想アドレ ス)を含むブロックが実記憶上に、ある? ない?
2. (a) ある:マッピングに従って、仮想アドレスから実アドレ スへ変換する(アドレス変換)
(b) ない:→ページフォールト/セグメントフォールト
(1) 実記憶上にある不要なブロックをファイル装置へ書き出 し、代わりに、アクセス対象の命令やデータを含むブ ロックを実記憶に読み込む(ブロック置換)
(2) 入れ替え後のマッピングに従って、仮想アドレスから実 アドレスへ変換する -
ページフォールトとはアクセスしようとした仮想アドレスに対応するブロック(ページ)が、実記憶に存在しない場合に発生する
ページフォールトは割り込みであり、割り込み処理としてブロック置換(ページ置換、スワップ)が起きる
実メモリから追い出されるブロックは、ブロック置換アルゴリズム(ページ置換アルゴリズム)で決定される -
スワップアウトとは ページの状態と書き出し処理実メモリの空き領域がなくなった場合、今後使われる可能性の低いページを実メモリから追い出す
ページの状態と書き出し処理(マッピング表より)
a. コード(テキスト)部( = 機械語)
- 変更はありえないため、実メモリの解放のみ
b. データ、ヒープ、スタック
- 参照のみ ... 実メモリの解放のみ
- 変更あり ... ページをファイル装置上に書き出す -
アドレス変換テーブルのデメリット2個 解決策テーブルのサイズが大きい
➡ データ構造を工夫してテーブルのサイズを小さくする。
- テーブルを2段構造にする/ハッシュで検索する
- 二次記憶装置のアドレス情報は二次記憶装置に置く、など。
アドレス変換テーブルは主記憶上に構成する(マッピングの変更ごとに動的な書き換えが必要なため)
➡ メモリの存在をメモリにアクセスして確認するのは遅い
解決策:アドレス変換を高速に行うための専用ハードウェア -
動的アドレス変換機構とは想アドレスに対応するブロックが実記憶上にあるかをチェック
仮想アドレスから実アドレスへのアドレス変換
プロセッサ内のメモリ管理ユニット(MMU: Memory Management Unit) が備える機能であることが一般的。
専用ハードウェア、アドレス変換バッファ (TLB: 連想レジスタ) で高速化
利用されたアドレスの情報を保持する、一種のキャッシュ
のような働きを提供する
連想メモリなどの特殊なハードウェアを使うことも多い -
CAMとはContent Addressable Memory: 連想メモリ
-
セグメンテーションの長所 3論理的な意味を持つセグメントで管理する
テキスト部、データ部、ヒープ部、スタック部などの特徴 を反映した管理が可能
セグメントの属性をアクセス制御に利用できる
プログラム間の動的なリンクや共用ライブラリの構成が容易になる
内部フラグメンテーションが発生しない -
セグメンテーションの短所セグメントは可変長領域
・メモリやファイルの領域管理、マッピングが複雑になる
・外部フラグメンテーションが発生しやすい。メインメモリ の利用効率を悪化させる
メインメモリに入らない、大きなセグメントを持つプログラムは実行できない
・大きなセグメントが利用可能になるまで、実行が遅延される可能性もある -
ページ化セグメンテーションとは1. 仮想アドレス空間をセグメント単位で分割
セグメントは可変長(ページ単位で) セグメントテーブルは1つだけ存在
2. 各セグメント内をページ単位に分割し、仮想セグメント 内のページを実ページにマッピングする
各セグメントごとにページテーブルが存在する 連続領域の「実セグメント」は存在しなくてもよい -
ページ化セグメンテーション 長所ページングとセグメンテーションの長所を持つ
・最初のマッピングはセグメント単位であり、セグメントの論理的意味を活用できる
・実メモリへのマッピングはページングで行うので、管理が容易で利用効率が良い
・ページテーブルを仮想メモリ上に置くことができる -
セグメンテーションの短所セグメントは可変長領域
メモリやファイルの領域管理、マッピングが複雑になる
外部フラグメンテーションが発生しやすい。メインメモリ の利用効率を悪化させる
メインメモリに入らない、大きなセグメントを持つプログラムは実行できない
大きなセグメントが利用可能になるまで、実行が遅延され る可能性もある -
ページかセグメンテーションを説明せよ 21. 仮想アドレス空間をセグメント単位で分割
セグメントは可変長(ページ単位で) セグメントテーブルは1つだけ存在
2. 各セグメント内をページ単位に分割し、仮想セグメント 内のページを実ページにマッピングする
各セグメントごとにページテーブルが存在する 連続領域の「実セグメント」は存在しなくてもよい -
ページ化セグメンテーションの長所(1) ページングとセグメンテーションの長所を持つ
最初のマッピングはセグメント単位であり、セグメントの 論理的意味を活用できる
実メモリへのマッピングはページングで行うので、管理が
容易で利用効率が良い
ページテーブルを仮想メモリ上に置くことができる -
ページかセグメンテーションの短所1個のセグメントテーブルとセグメントの個数分の ページテーブル(どちらも可変長)が必要
2段階のアドレス変換(テーブル検索)に時間がかかる
改良により、(1)の特徴が生かせるようになって -
複数プロセス間のメモリ共有同一プログラムのコード、共有可能なライブラリなどを共有することが多い
多重仮想メモリでは、他のプロセスの仮想アドレス空間には、基本的にアクセスできない
共有したいブロックの実アドレスを、複数のプロセスの仮想アドレスと対応させる
ページセグメンテーションでは、共有したいセグメン トのページテーブルを、複数のセグメントテーブルか ら指すような実装が考えられる
ファイルを読み込んで主記憶上に展開(マップ)し、 複数プロセスで共有することもできる
ログイン