Frame valid Count Dirty 00 l00 a)为页表 o。。。0(b)为对应的物理内存 200代0「000 每页sie=4K。 虚空间16页(64k) 3000000 系统物理内存4页(16K)4111011 5000|000 页表 6000‖000 个 ∶备 地址空间的 每项对应逻辑7。00 页 职城表明了该漫辑页800009 A0000 装入的虚存页号 B000000物理页框 3FFF 3000H Page 4 本例,虚存的第0页 2 FFFH 00000 2000H U nuse d 逻辑地址0000FFFH 蠢赙布肉弃单1异棒中,物理地oo。0 FFFH 100oH Page 0 F00 000 OFFFH 0000H Page F 例:虚拟地址=0XXH (b) 页内偏移 如果访问虚存 page "A”? 执行一条访存指令需访问几次存储器 虚页号
(a)为页表 (b)为对应的物理内存 ⚫ 每页size=4K。 ⚫ 虚空间16页(64k) ⚫ 系统物理内存4页(16K) ⚫ 页表 ⚫ 16个entry,每项对应逻辑 地址空间的一个页 ⚫ Frame域表明了该逻辑页 存储在哪一个物理页框中 虚页号 页内偏移 例:虚拟地址=0xxxH 装入的虚存页号 物理页框 •如果访问虚存page “A”? •执行一条访存指令需访问几次存储器? •0 •1 •2 •3 本例,虚存的第0页: 逻辑地址0000H~0FFFH 存储在内存的1号页框中,物理地 址为1000H~1FFFH
CPU的访存操作:N③ VIRTUAL MEMORY MAIN MEMORY CPU prescnl MAPPER page frames ge frame +x 1 lot ccrt)/露 Mu ° pageframe logical pagett Mapper: MMu +os ⅴ IRTUAL ADDRESS 实线:MM present= valid 虚线: OS pagefault SECONDARY STORAGE MMU发出缺页中断
CPU的访存操作:Mapper • pageframe • Mapper:MMU+OS – 实线:MMU • present = valid – 虚线:OS pagefault • MMU发出缺页中断
访存流程图:(无TLB和 Cache)a 1CPU给出虚地址 VIRTUAL MEMORY MAIN MEMORY 2 Mapper(查慢表) CPU MAPPER /Presc page trane 3.如果Vad并合法,则访问 ot psrt) 4.如果nvad,转OS异常 精确异常 「ksa+x 原进程进入中断态? VIRTUAL ADDRESS 囗囗 缺页o「非法( abort) SECONDARY ·5缺页:调Disk页 TORAGE 写回、替换? BLOCKED 读入请求页:启动DMA? sign 》切换热行新进程? DMA中断:请求页已读入 dispatching activation termination 修改页表项:页框号、控制位 READY RUNNING OS切换回原进程 preemption ·重启原进程产生缺页的指令 ACTIVE
访存流程图:(无TLB和Cache) 1.CPU给出虚地址 2.Mapper(查慢表) – 3. 如果Valid并合法,则访问 – 4. 如果Invalid,转OS异常 • 精确异常 – 原进程进入中断态? – 缺页or非法(abort) • 5. 缺页:调Disk页 – 写回、替换? – 读入请求页:启动DMA? » 切换执行新进程? – DMA中断:请求页已读入 – 修改页表项:页框号、控制位 – OS切换回原进程 • 重启原进程产生缺页的指令
Steps in handling a page fault A在内存中有空闲物理页 查找在外存中的页面 面时,分配一物理页帧f, 转第E步; B依据页面置换算法选择 操作系统 将被替换的物理页帧f, 页表项引用 对应逻辑页q 异常 C如q被修改过,则把它写 load M 回外存; D修改q的页表项中驻留位 重新执页表 置为0; 行导致 空谢页顿 异常的 指令 E将需要访问的页p装入到 页表项修改 页面换入 物理页面f F修改p的页表项驻留位为1, 物理页帧号为f; 物理内存 G重新执行产生缺页的指令
Steps in handling a page fault
Page Iable Disk Map 页表:外页表,内页表 ·页表:逻辑上一张,通常分成两个表 虚页=内存页=磁盘块(扇区 P presence flag A ask address u used flag Block/frame/page modfied flar page frame disk map外页表:虚页<→>磁盘扇区 M|盘机号茌面号避头号扇区号 辅存中:全部页,按虚页号的顺序排列 在程序装入时生成 指示所有虚存页在Dk中的物理地址(M修改位) Page Table内页表:虚页<> Frame ·内存中:指示虚存中的哪些页在主存中 程序(进程)初始化时 456 8□91011□ 把外页表的内容复制到内页表物理页号字段中 12口1314口15口 ·缺页异常处理程序:由∨aid位P位指示 a口2口2口2口 使用 disk map定位磁盘中的页: 从内页表的实页号字段中取出的正是辅存物理地址。 当该页调入主存后,其实页号字段被真正填入所在主存的实际页框号
页表: 外页表,内页表 • 页表:逻辑上一张,通常分成两个表 – 虚页= 内存页= 磁盘块(扇区) • Block/frame/page – disk map外页表:虚页<->磁盘扇区 • 辅存中:全部页,按虚页号的顺序排列 • 在程序装入时生成 • 指示所有虚存页在Disk中的物理地址(M修改位) – Page Table内页表:虚页<->Frame • 内存中:指示虚存中的哪些页在主存中 • 程序(进程)初始化时 – 把外页表的内容复制到内页表物理页号字段中 • 缺页异常处理程序:由Valid位/P位指示 – 使用disk map定位磁盘中的页: • 从内页表的实页号字段中取出的正是辅存物理地址。 • 当该页调入主存后,其实页号字段被真正填入所在主存的实际页框号