UNIX 6th code reading - virtual address
初めての方はこちらを参照 http://d.hatena.ne.jp/takahirox/20101024/1287923014
はじめに
今回は6章です。内容が重いので2回以上にわけます。
今回は本題に入る前の準備です。
仮想アドレス
本題に入る前に、仮想アドレスと物理アドレスの関係を把握しておくと理解が深まる。
- 参考
- Lions本の2章
- http://d.hatena.ne.jp/hon53/20101031/1288541508
- PDP11 Handbook Capter 6 : MEMORY MANAGEMENT
メモリはページという単位で管理される。ページについての詳細は上記リンク先などを参考。
仮想アドレスから物理アドレスへのマッピング
物理アドレスを直接用いることは基本的になく、仮想アドレスを用いてメモリにアクセスする。
仮想アドレスは物理アドレスにマッピングされる。それにより、物理メモリへのアクセスが実現される。
- メリット
(PDP11 Handbookより引用) Although the PDP-11 Family word length and operational logic is all 16-bit length, the UNIBUS and CPU addressing logic actually is 18-bit length.
なお、上位4K wordはUNIBUS I/O device register用に用いられる。
なので、仮想アドレスの最上位4K wordは物理アドレスの最上位4K wordにマッピングされる。
絵で見てわかる、マッピングの仕組み
Active Page Register(APR)と呼ばれる、2つ1組のレジスタを用いてマッピングを実現している。
APRはPage Address Registers(PAR)とPage Descriptor Registor(PDR)の2つから成る。
PARは各ページの物理アドレス上の基底アドレスに関する情報を保持し、
PDRは各ページのブロック数やアクセス可 or 不可などの情報を保持する。
このAPRを用いて、仮想アドレスを物理アドレスへとマッピングする。
APRは8組あり、仮想アドレスの上位3bit([15:13])で選択される。
APRはカーネルモード用とユーザーモード用の2セットが用意されている。
APRの切り替えはPS(Processor Status Word, 2章参照)の現モード(15, 14bit)で行われる。
これにより、カーネルモードとユーザーモードで使用する物理メモリの空間が分離される。
各レジスタのフィールドはPDP11 Handbookを参考。
終わりに
必要を感じたら、ページについてのメモも書きます。
次回は6章の本題に入ります。