编辑: 丶蓶一 | 2019-07-05 |
TTW (a)为页表 (b)为对应的物理内存 ? 每页size=4K. ? 虚空间16页(64k) ? 系统物理内存4页(16K) ? 页表 ? 16个entry,每项对应逻辑 地址空间的一个页 ? Frame域表明了该逻辑页 存储在哪一个物理页框中 ? Frame域表明了该逻辑页 存储在哪一个物理页框中 虚页号 页内偏移 例:虚拟地址=0xxxH 装入的虚存页号 物理页框 ?如果访问虚存page A ? ?执行一条访存指令需访问几次存储器? ?0 ?1 ?2 ?3 本例,虚存的第0页: 逻辑地址0000H~0FFFH 存储在内存的1号页框中,物理地 址为1000H~1FFFH CPU的访存操作:Mapper ? pageframe ? Mapper:MMU+OS C 实线:MMU ? present = valid C 虚线:OS pagefault ? MMU发出缺页中断 访存流程图:(无TLB和Cache) 1.CPU给出虚地址 2.Mapper(查慢表) C 3. 如果Valid并合法,则访问 C 4. 如果Invalid,转OS异常 ? 精确异常 C 原进程进入中断态? C 原进程进入中断态? C 缺页or非法(abort) ? 5. 缺页:调Disk页C写回、替换? C 读入请求页:启动DMA? ? 切换执行新进程? C DMA中断:请求页已读入 C 修改页表项:页框号、控制位 C OS切换回原进程 ? 重启原进程产生缺页的指令 Steps in handling a page fault 页表: 外页表,内页表 ? 页表:逻辑上一张,通常分成两个表 C 虚页= 内存页= 磁盘块(扇区) ? Block/frame/page C disk map外页表:虚页磁盘扇区 ? 辅存中:全部页,按虚页号的顺序排列 ? 在程序装入时生成 ? 指示所有虚存页在Disk中的物理地址(M修改位) C Page Table内页表:虚页Frame ? 内存中:指示虚存中的哪些页在主存中 ? 程序(进程)初始化时 C 把外页表的内容复制到内页表物理页号字段中 ? 缺页异常处理程序:由Valid位/P位指示 C 使用disk map定位磁盘中的页: ? 从内页表的实页号字段中取出的正是辅存物理地址. ? 当该页调入主存后,其实页号字段被真正填入所在主存的实际页框号. PTBR:页表在哪儿? Virtual address from processor Offset Virtual page number Page table address Page table base register PAGE TABLE + Virtual address is interpreted as page number and offset. PTBR holds the address of the page table. PTBR + virtual page number provide the entry of the page Page frame in memory Offset Control bits Physical address in main memory Page frame Page table holds information about each page. This includes the starting address of the page in the main memory. the entry of the page in the page table. This entry has the starting location of the page. Single-Level Page Table:一级太大! Virtual Address ?0 ?11 ?12 ?31 ?value = y
32 bits ?value = x ?x ?22/111 page frame page frame page table page frame data ?y
220 entries
212 entries Size of page table =
220 *
32 bits =
4 Mbytes ?x
8 bits Size of page =
212 *
8 bits =
4 Kbytes 例:48-bit canonical form virtual addresses and
4 KB pages. On such a system, it would take 2^48 B / 2^12 B *
8 B = 2^39 B =
512 GB of storage just for the page table alone! Two?level Page Table Virtual Address ?0 ?11 ?12 ?31 ?21 ?22 page directory page ?value = z ?value = y ?y
210 entries ?value = x ?x ?z
210 entries
212 [email protected] ?23/111 page frame page frame page table page ........