Linux内存管理-虚拟内存篇

2019-03-29  本文已影响0人  blentle欢子

介绍

分页技术

    MOV REG, 0

这句伪代码的意思是把地址0的数据送入寄存器中,REG是register的简称,
表示寄存器.但并不是真实的寄存器的名字,这里是伪代码.真实的寄存器如
AX,BX,CX,SS,SP等.

将虚拟地址0送到MMU,MMU看到虚拟地址0落在(0~4095)这个页面上,而这个页面
被映射到2(8K~12K)这个页框上,所以MMU把地址变成8192,并把地址8192送到总
线上.内存对MMU一无所知.它只看到一个对地址8192的读或写请求并执行它.
同理:

    MOV REG, 8192

被转换成

    MOV REG, 24576

页面8192被映射到第6个页框上即 1024 x 24 = 24576
上面的图中因为只有8个物理页框的内存,所以只有8个页面被映射到了物理内存
,正如图上有页框号的页面,其他的页面上都是叉号,表示没有被映射到物理内存
.在实际的硬件中,是用一个标志位("在/不在")来记录页面是否被映射到物理内
存.如0表示当前页没有被映射,1表示被映射.
再如,当程序访问了一个没有被映射的页面:

    MOV REG, 24576

MMU注意到该页面没有被映射,于是CPU通知操作系统,出现了上面提到的缺页错
误或缺页异常.操作系统找到一个很少使用的页框,且把它的内容写入磁盘.然
后把需要访问的这个页面的内容读到刚才的页框里,修改一下映射关系,然后重
新执行刚才的异常指令.这个过程就叫缺页中断处理.

上一篇下一篇

猜你喜欢

热点阅读