目录
https://blog.csdn.net/weixin_45792450/article/details/109314765
局部性原理
虚拟存储技术的实现依赖于局部性原理,即进程往往会不均匀地高度局部性地访问内存。局部性原理表现在时间局部性和空间局部性。
时间局部性
如果程序中的某条指令一旦被执行,不久以后该指令很可能会被再次执行;如果某数据被访问过,不久以后该数据很可能会被再次访问。
产生时间局部性原理的典型原因,是由于程序中存在大量的循环操作或者重要函数模块的重复调用。
空间局部性原理
一旦访问了某个程序单元,不久以后其附近的存储单元很可能会被访问,即程序在一段时间访问的地址,可能集中在一定范围之内。
产生空间局部性原理的典型原因,是由于指令和数据在存放的时候,一般是在一定范围聚集或者顺序存放,加上程序执行时,指令一般顺序执行,访问的数据很多是顺序遍历。
虚拟存储技术
虚拟页式管理
虚拟内存的实现方式有三种方式:请求分页存储管理,请求分段存储管理,请求段页式存储管理。
请求分页存储管理又称虚拟页式管理,其建立在基本分页存储管理系统之上,增加了请求调页和页面置换功能。
请求分页管理在进程开始运行之前,不是装入全部页面,而是装入一部分初始需要的页面,之后再根据进程的需要,动态地装入其他页面,此为请求调页功能
当内存空间紧张时,根据特定算法将部分不太需要的页面调出内存,再将需要的页面置换进来,此为页面置换功能
虚拟页式管理需要的软硬件支持:一定容量的内存以及外存的计算机系统,页表机制,缺页中断机构,地址变换机构。
虚拟页式管理的请求调页
在虚拟分页管理中,由于页面不是一次性调入内存,所以需要在页表项中标记此种信息,为此需要增加四个字段:
- 状态位P:用于指示该页是否调入内存,供程序访问时参考
- 访问字段A:用于记录访问次数或多久未被访问,由页面置换算法决定和参考
- 修改位M:标识该页在调入内存后是否被修改
- 外存地址:用于指出该页的外存地址
如果进程在运行中发生缺页现象,需要进入缺页中断机构进行处理,请求操作系统将所缺页面调入内存。此时进程被阻塞,等待调页完成时的唤醒。
缺页中断与一般中断有两个明显区别:
- 缺页中断在指令执行期间产生和处理中断信号,而非一条指令执行完成后,属于内中断
- 一条指令执行期间,可能产生多次缺页中断