虚拟内存

2017-09-03  本文已影响0人  狗尾巴草败了

虚拟内存的基本思想:

因为物理内存的空间是有限的,进程所需的RAM数量总和远远超出了存储器所能支持的范围。为此引入了虚拟内存的思想。

每个程序拥有自己的地址空间,这个空间被分割成多个块,每一块称为一个页面。每一页有连续的地址范围。这些页被映射到物理内存,但并不是所有的页都必须在内存中才能运行程序。
当程序引用到一部分在物理内存中的地址空间时,由硬件立刻执行执行必要的映射。当程序引用到一部分不在物理内存的地址空间时,由操作系统负责将缺失的部分装入物理内存,并重新执行失败的指令。

在使用虚拟内存的情况下,虚拟地址不是被直接送到内存总线上,
而是送到内存管理单元 --MMUMMU把虚拟地址映射到物理内存地址。

虚拟地址空间按照固定大小划分成的单元称为页面, 在物理内存中对应的单元称为页框,32位Linux页面大小为4KB。RAM和磁盘之间的交换是以整个页面为单位进行的。

映射原理:

虚拟地址的单位是:页面
物理地址的单位是: 页框
页表存在MMU中,页表的作用就是把虚拟页面映射为物理页框。
虚拟地址被分成虚拟页号(高位部分)和偏移量(低位部门)两部分。
虚拟页号可以用作页表的索引,以找到该虚拟页面对应的页表项。由页表项可以找到页框号,然后替换掉页框号。形成送往内存的物理地址。
从数学角度来说,页表是一个函数,它的参数是虚拟页号,结果是物理页框号

页表中还有一个“在/不在”位:
当该标志位是1,表示该虚拟页面在内存中,当该标志位为0,表示该虚拟页面不在内存中,会导致缺页中断

虚拟内存的优点

  1. 进程与进程,进程与内核相互隔离

  2. 适当情况下,两个或更多的进程能共享内存

  3. 便于实现内存保护机制

  4. 驻留在内存中的仅是程序的一部分,所以程序的加载和运行都很快,而且一个进程所占用的内存能够超过RAM容量

  5. 由于每个进程使用的RAM减少了,RAM同时可以容纳的进程的数量就增多了,提高CPU的利用率

上一篇下一篇

猜你喜欢

热点阅读