概述
分页机制
虚拟内存——
计算机的内存容量有限,而某些进程运行所需的内存空间可能超过内存总容量,因而出现机器内存容纳不下该进程所有代码、数据和堆栈而只能容纳其中一部分的情况。
虚拟存储的基本思想:一个进程的代码、数据、堆栈的总容量可能超过可用物理内存的容量,操作系统负责把当前用到的那部分保存在内存中,其他部分保存在磁盘上;当需要用到不在内存的某一部分时,由操作系统将那部分调入内存,同时可能把已经在内存中但暂时不会用到的某一部分请出内存。这样占用256M内存空间的进程也能在只有64M内存的机器上运行了。
分页管理
虚拟地址空间划分成许多页(page),页包含了一段连续的虚拟地址空间。
物理内存空间也划分成多个页帧(page frame)
页和页帧大小一样,页可以映射到页帧上,映射可以撤销,所以内存和磁盘见的交换总是以页为单位。换页时把一个页帧中的内容写回磁盘,若该页内容在装入页帧后未被修改过,则写回操作是多余的,于是增加修改位来表明页帧中的内容是否被修改过。
- 页表
MMU完成地址映射和虚实地址的转换在页表的支持下完成。
虚拟地址被分为页号(高位部分)和页内偏移量(低位部分)。页号被用作页表的索引,找到页对应的页表项,根据该项中的存在位判断页是否已映射到页帧,若已映射则取出对应的页帧号,再根据页帧号和虚拟地址的页内偏移量得出物理地址。
页面置换
发生缺页时,操作系统必须在内存中选择一个页并将其一处内存。如果被选中的页的修改位已经置1,则该页将被写到磁盘上;若修改位为0,则磁盘上的副本已经是最新的了,不需要做写回操作,调入页直接覆盖该页即可。被选调出的页选那些不常使用的更合理。
页面置换算法:
最优算法——最优算法要选择一个页,使得从当前时刻起到下一次访问该页所经历的时间是最长的(理论上最好但却无法实现)
先进先出(FIFO)算法——在内存中的所有页组成一个队列,先进入内存的页总是在后进入的页前面。(运用简单,效果确定较难)
最近最少使用(LUR)算法——根据时间局部性原理,在刚执行过的几条指令中被频繁访问的页面可能在接下来的指令中继续访问;已经很久未被访问的页在接下来的一段时间里很可能也不会访问到。于是算法是:选择一个未被使用时间最长的页。
最后
以上就是故意冬日为你收集整理的Linux虚拟内存管理(一)分页机制的全部内容,希望文章能够帮你解决Linux虚拟内存管理(一)分页机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复