Mercurial > hg > Papers > 2019 > tobaru-sigos
changeset 20:4955324fa739
Description Paging
author | tobaru |
---|---|
date | Wed, 29 May 2019 14:55:22 +0900 |
parents | 17ad42799e3c |
children | df06f7c00062 |
files | slide/sig-os2019.md |
diffstat | 1 files changed, 15 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/slide/sig-os2019.md Wed May 29 11:49:36 2019 +0900 +++ b/slide/sig-os2019.md Wed May 29 14:55:22 2019 +0900 @@ -76,11 +76,25 @@ - コンピュータ上では仮想メモリなしでは、仮想アドレスは直接メモリバスを置けない。 - バス(Bus)はメモリなどの信号を流す共通の信号回路 + ## MMU - 仮想メモリが使われる時、仮想アドレスは直接メモリバスへは行かず、MMU(メモリ管理ユニット)に行く。 -- <div align="center"><img src="./images/fig3_8.svg" style="center"></div> +## MMU の動きの例 +- プログラムがアドレス0にアクセスしようとした時 + - MOV REG, 0 +- MMU はこの仮想アドレスが Page0で失敗してないか確認し Page Frame2(8192~12287)にマッピングする +- アドレス0を8192に変換し、バスに出力する。 +- メモリはMMUについて何も知らず、アドレス8192を読み書きする要求だけを見る。 +- 従って、MMU は 0から4095までの仮想アドレスを物理アドレス8192から12287に効果的にマッピングする。 +- プログラムがマップされてないアドレスを参照しようとするとOSにCPUをトラップさせる(Page Fault) + + +## Page と Page Frame +- 仮想アドレス空間では Page と呼ばれる固定サイズ単位を扱う。 +- 物理メモリ内での対応する単位は Page Frames と呼ばれる。 +- Page と Page Frames は同じサイズを生成する。 ## Segmentation with Paging: The intel x86 @@ -135,7 +149,6 @@ - ## 図 <div align="center"><img src="./images/Conversion_of_a_selector_offset_pair_to_a_linear_address.svg" style="center"></div>