虚拟页有三个状态:为分配;未缓存;缓存。那系统怎么判断虚拟页是否在主存中?判断后,
还要确定这个虚拟页在主存中那个位置?如果虚拟页没有命中,系统还要判断该虚拟页在磁盘那个位置,然后进行替换?
要完成这些,需要借助页表功能。页表就是由PTE(page talbe entry)组成的数组。PTE一般由
一个有效位,读写使能位,监控位和几个字节组成,有效位表示该虚拟页当前是否缓存。如果有效,那么PTE中的地址地段就指向缓存(主存)中物理页
的起始地址。这点很重要,记住是物理页的起始地址,不是某个字节地址或则页内偏移地址。
所谓缺页就是DRAM缓存不命中。缺页触发一个异常,内核会调用一个程序来把磁盘上的虚拟页拷到
主存中,同时修改PTE相应的内容。注意,这一过程会把某些PTE换出,也叫牺牲页。再内核完成
这些动作后,再发起读就肯定命中了
还要确定这个虚拟页在主存中那个位置?如果虚拟页没有命中,系统还要判断该虚拟页在磁盘那个位置,然后进行替换?
要完成这些,需要借助页表功能。页表就是由PTE(page talbe entry)组成的数组。PTE一般由
一个有效位,读写使能位,监控位和几个字节组成,有效位表示该虚拟页当前是否缓存。如果有效,那么PTE中的地址地段就指向缓存(主存)中物理页
的起始地址。这点很重要,记住是物理页的起始地址,不是某个字节地址或则页内偏移地址。
所谓缺页就是DRAM缓存不命中。缺页触发一个异常,内核会调用一个程序来把磁盘上的虚拟页拷到
主存中,同时修改PTE相应的内容。注意,这一过程会把某些PTE换出,也叫牺牲页。再内核完成
这些动作后,再发起读就肯定命中了