【操作系统】虚拟化内存的一些机制:交换空间和存在位

        每个正在运行中的进程的地址空间(或者页)理论上都应该全部放在内存中,但如果我们的进程多到一定程度时(一般来说都是一百个往上),内存往往没有足够的容量可供每个进程都放进来,为了让尽量多的进程都能正常使用到物理内存,同时也需要保证内存的使用率/成本等达到最优,交换空间应需求而生。

一.交换空间

(1)作用

        交换空间是指在硬盘中开辟一块特定的空间,专门用于把当前没有用到的那部分地址空间存储起来。为什么要这样做?这样做可以避免多个进程同时放在内存中,影响内存的运行效率。一般建议交换空间大小约为物理内存的两倍左右。

(2)例子

        在这个例子中,可以看到一个四页的物理内存和一个八页的交换空间,三个进程(进程0、进程1 和进程2)主动共享物理内存。三个进程中都有一部分有效页在内存中,剩下的在硬盘的交换空间中。第四个进程(进程3)的所有页都被交换到硬盘上,因此很清楚它目前没有运行。有一块交换空间是空闲的。

        【操作系统】虚拟化内存的一些机制:交换空间和存在位_第1张图片

二.存在位

(1)内存引用

        在认识什么是存在位之前首先需要知道什么是内存引用。总的来说,内存引用是进程在发起虚拟内存引用时,硬件(或者软件)管理的TLB系统把虚拟地址通过地址转换到物理地址,再从内存中获取所需数据

(2)流程图

        根据内存引用,可以得出以下流程图:

                        【操作系统】虚拟化内存的一些机制:交换空间和存在位_第2张图片

(3)存在位

         在以上流程图中红框标注处,操作系统是怎么知道页不在物理内存在其他地方的呢?硬件(或操作系统,在软件管理TLB 时)判断是否在内存中的方法,是通过页表项中的一个位,即存在位(present bit),如果存在位设置为1,则表示该页存在于物理内存中,并且所有内容都如上所述进行。如果存在位设置为零,则页不在内存中,而在硬盘上。

你可能感兴趣的:(操作系统,交换空间,存在位,虚拟化内存,操作系统)