win10 4g内存最佳虚拟内存 怎样设置虚拟内存( 二 )


如何实现虚拟内存技术如你所见,虚拟内存允许一个作业/进程多次调入内存,如果连续分配不方便实现,所以虚拟内存技术的实现是基于不连续的分配管理 。
传统的基本分页管理、基本段管理、基本段页面管理和虚拟内存技术分别称为请求分页管理(页面虚拟内存系统)、请求段管理(段虚拟内存系统)和请求段页面管理(段虚拟内存系统) 。
这些概念非常容易混淆,其实很容易区分 。记住这句话就OK了,摘自百度百科:
如果不具备请求页面调整和页面替换的功能,则称为基本分页管理(或纯分页管理) 。不具备支持虚拟内存实现的功能 。它要求每个作业(进程)在运行之前都要加载到内存中 。
请求分段存储管理是类似的 。它以分段存储管理为基础,但增加了请求段调整和段替换的功能 。
请求页面调整和页面替换的概念类似于请求段落调整和段落替换的概念 。这里以请求页面调整和页面替换为例进行说明 。
在程序执行过程中,当被访问的信息不在内存中时,操作系统负责将所需信息从外存(磁盘)转移到内存中,然后继续执行程序(操作系统应提供请求页面转移的功能,将内存中缺失的页面从磁盘转移到内存中);
如果没有足够的内存空,操作系统负责将内存中暂时不用的信息换出到磁盘(操作系统要提供页面替换的功能,将暂时不用的页面换出到磁盘) 。
具体来说,在基于页面的虚拟内存系统中,每当CPU要访问的页面不在内存中时,就会产生缺页中断,然后由操作系统的缺页中断处理程序来处理该中断 。此时,这个缺页的进程/作业将被阻塞,放入阻塞队列,在分页完成后将其唤醒,并放回就绪队列 。
如果内存中有空个空闲块,为这个进程分配一个空个空闲块,将缺失的页加载到这个块中,修改页表中对应的页表项 。
如果存储器中没有空空闲块,则页面替换算法选择要消除的页面 。如果在内存期间修改了页面,则应将页面写回外部内存,未修改的页面无需写回外部内存 。
可见这并不是一个简单的过程,基础分页管理中简单的页表已经不能胜任这样的工作 。
让我们先回顾一下基本分页管理的页表 。它只有两个字段:页码和块号:

请求分页管理的页表自然要复杂得多:
1)为了实现“请求页转移”的功能,操作系统需要知道每一页是否已经转移到内存中,如果没有,还需要知道该页在磁盘中的位置 。
2)内存不够空时,为了实现“换页”功能,操作系统需要一些指标来决定换出哪一页 。如果有些页面没有修改,就没有必要浪费时间写回磁盘;如果某些页面已经被修改,则需要覆盖磁盘中的旧数据 。因此,操作系统还需要记录每个页面是否被修改过 。
为此,将该名称添加到请求分页管理的页表中 。4个字段:
状态:页面是否已被转移到内存中 。
访问字段:可以记录页面最近被访问了多少次,也可以记录页面最后一次被访问的时间,可以作为页面替换算法换出页面的参考 。
修改为:页面被转移到内存后是否被修改过?
Memory:这个页面在内存中的存储地址 。

页面替换算法也是一个很重要的内容,在本文中应该是一起写的 。但想到“页面替换”的问题不仅存在于虚拟内存中,在计算机设计的其他领域也会发生(例如,大多数计算机会在一个或多个缓存中存储最近使用的32字节或64字节的内存块,当这些缓存满时,必须选择并丢弃一些块来存储最近使用的内存块) 。

推荐阅读