虚拟内存可以用来管理物理内存,进程直接和虚拟内存进行打交道而不是物理内存,为什么这样设计?
什么是虚拟内存?
虚拟内存 = 物理内存 + 磁盘
使用页置换技术,地址转换技术,使得进程认为它拥有连续的可用内存,而实际上,它会被分割为多个物理内存碎片。
1. 虚拟内存的作用
- 利用磁盘起到的缓存的作用,提高进程访问磁盘的速度。
- 虚拟内存可以为进程提供独立的内存空间,并通过动态链接库共享内存。
- 虚拟内存可以控制进程对物理内存的访问,隔离权限,提高系统安全性,
缓存
虚拟内存是使用内存空间,同时将磁盘上访问频发的加载到内存,来增快访问速度,使得占用很小内存空间,看起来很大。
在其中使用的就是局部性原理,当操作系统访问未被缓存的页,就会发生缺页中断,操作系统需要将磁盘上未被缓存的虚拟页加载到物理内存中。
而另一个概念虚拟存储器,也是使用局部性原理,将程序部分载入内存,这样的情况下4G内存,可以运行比4G大的程序,看起来内存大了,实际是部分程序还在磁盘中。
内存管理
进程最终都需要访问到具体的物理地址,而不是虚拟内存提供的逻辑地址,其中会经过一层层转换,主要是通过MMU和TLB实现。
通过增加虚拟内存,避免了程序直接访问任意内存,修改了其他程序使用的数据导致程序崩溃,虚拟内存可以将不同进程使用的虚拟地址彼此隔离。
目前linux系统,采用四层页表结构页表结构,每个9位,最低12位作为偏移量。
总
虚拟内存可以结合磁盘和物理内存的优势为进程提供看起来速度足够快并且容量足够大的存储;
虚拟内存可以为进程提供独立的内存空间并引入多层的页表结构将虚拟内存翻译成物理内存,进程之间可以共享物理内存减少开销,也能简化程序的链接、装载以及内存分配过程;
虚拟内存可以控制进程对物理内存的访问,隔离不同进程的访问权限,提高系统的安全性;
网友评论