07 虚存技术在计算机中的实现

虚拟页式内存管理:大部分虚拟存储器都采用虚拟页式存储管理技术,即在页式存储管理的基础上,增加请求调页和页面置换功能。

基本的设计思路

  • 当一个用户程序要调入内存中运行时,不是将该程序的所有页面都装入内存,而是只装入了部分页面,就可以启动程序运行;
  • 在程序运行的过程中,如果发现要运行的程序或者要访问的数据不在内存中,则向系统发出缺页中断请求,系统在处理这个中断时,将外存中相应的页面调入内存,使得该程序能够继续运行。

为了实现虚拟页式内存管理:在页表的中增加了几个数据位

  • 驻留位:表示该页是在内存还是外存。如果该位等于1,表示该页位于内存中,即该页表项是有效的,可以使用;如果该位等于0,表示该页当前还在外存中,如果访问该页表项,将导致缺页中断;
  • 保护位:表示允许对该页做何种类型的访问,如只读、可读写、可执行等;
  • 修改位:表明此页在内存中是否被修改(写)过,如果写过,该位会被置成1,反之为0。当系统回收该物理页面时,根据此位来决定是否把它的内容写回外存;如果被修改过,则在进行换入换出操作的时候,要将内存中的数据写回到硬盘中,保持内存和硬盘中存储的数据一致,如果该页面没有被修改过,则在进行换入换出操作的时候,不需要写回,只需要把该页面物理内存空间直接释放即可;
  • 访问位:如果该页面被访问过(包括读操作和写操作),则设置此位,最近被访问过,该位置为1,页面最近没有被访问过,则置为0。用于页面置换算法。

缺页中断的处理过程:

  • 1.如果在内存中有空闲的物理页面,则分配一物理页帧f,然后转第4步;否则转第2步;
  • 2.采用某种页面置换算法,选择一个将被替换的物理页帧f,它所对应的逻辑页为q.如果该页在内存期间被修改过,则需要把它写外存;
  • 3.将q所对应的页表项进行修改,把它的驻留位置为0;
  • 4.将需要访问的页p装入到物理页面f当中;
  • 5.修改p所对应的页表项的内容,把它的驻留位置为1;把物理页帧号置为f;
  • 6.重新运行被中断的命令;

在何处保存未被映射的页?

  • 能够简单地识别在二级存储器中的页;
  • 交换空间(磁盘或文件):特殊格式,用于存储未被映射的页面;

后备存存储(backing store)或二级存储器的组成:

  • 一个虚拟地址空间的页面可以被映射到一个文件(在二级存储器)中的某个位置
  • 代码段:映射到可执行的二进制文件
  • 动态加载的共享库程序段:映射到动态调用的库文件
  • 其他段(程序运行过程中,所产生的一些数据):可能被映射到交换文件(swap file)

虚拟内存的性能:为了便于理解分页的开销,使用有效存储器访问时间effective memory access time(EAT)来表征;

  • EAT = 访存时间 * 页表命中几率 + page fault 处理时间 * page fault几率
/*
一个EAT计算示例;
已知条件有:访存时间为  10ns
磁盘访问时间为:5 ms
参数p = page fault 几率
参数q = dirty page 几率   表示进行页面换出操作时要重新写回磁盘的几率

EAT = 10 * (1 - p) + 5000000 * p * (1+q)
如果p足够小,那么计算出来的时间就接近于访存时间,效率就会比较高,一般p可以做到很小,因为程序具有局部性原理,程序执行的过程总产生缺页的次数就会很少,p就会很小
*/

提示:为了更好的理解知识点,博主在微信公众号中将操作系统知识进行了重新排版和插入图片。感兴趣的朋友可以扫码进行关注。

在这里插入图片描述

发布了19 篇原创文章 · 获赞 1 · 访问量 716

猜你喜欢

转载自blog.csdn.net/weixin_45615071/article/details/105505764
07