操作系统结构
虚拟内存管理——结构描述
李煜
摘要:本文。本文通过介绍虚拟内存的概念,主要数据结构,Linux虚拟内存重建和拷贝等过程进行了详细的介绍和总结概括。首先介绍了Linux虚拟内存主要的数据结构如虚拟内存区域vm_area_struct,虚拟内存管理mm_struct等。然后对Linux虚拟内存重建和拷贝的过程进行了详细的介绍。目地是为了让读者了解Linux虚拟内存的重建过程,虚拟内存的拷贝以及重要数据结构有一个初步的了解。
关键词:虚拟内存;Linux;数据结构
1 引言
我们知道程序代码和数据必须驻留在内存中才能得以运行,然而系统内存数量很有限,往往不能容纳一个完整程序的所有代码和数据,更何况在多任务系统中,可能需要同时打开子处理程序,画图程序,浏览器等很多任务,想让内存驻留所有这些程序显然不太可能。因此首先能想到的就是将程序分割成小份,只让当前系统运行它所有需要的那部分留在内存,其它部分都留在硬盘。当系统处理完当前任务片段后,再从外存中调入下一个待运行的任务片段。的确,老式系统就是这样处理大任务的,而且这个工作是由程序员自行完成。但是随着程序语言越来越高级,程序员对系统体系的依赖程度降低了,很少有程序员能非常清楚的驾驭系统体系,因此放手让程序员负责将程序片段化和按需调入轻则降低效率,重则使得机器崩溃。系统必须采取一种能按需分配而不需要程序员干预的新技术。
虚拟内存(之所以称为虚拟内存,是和系统中的逻辑内存和物理内存相对而言的,逻辑内存是站在进程角度看到的内存,因此是程序员关心的内容。而物理内存是站在处理器角度看到的内存,由操作系统负责管理。虚拟内存可以说是映射到这两种不同视角内存的一个技术手段。)技术就是一种由操作系统接管的按需动态内存分配的方法,它允许程序不知不觉中使用大于实际物理空间大小的存储空间(其实是将程序需要的存储空间以页的形式分散存储在物理内存和磁盘上),所以说虚拟内存彻底解放了程序员,从此程序员不用过分关心程序的大小和载入,可以自由编写程序了,繁琐的事情都交给操作系统去做吧。
2 虚拟内存的概念极其优缺点
虚拟内存的概念
在分页系统中,由于在程序地址空间和物理地址空间引入了页表,隔离了两个地址空间,一个程序可以在物理内存中不连续。操作系统负责在内外存之间交换页面,造成每个进程都认为自己是系统中唯一一个程序,独占系统全部地址空间的假象。虚拟地址是一块地址空间,它的特点主要是:(1)从0开始编址并且连续(2)不受系统物理内存大小限制(3)在功能上等价于物理内存,但实际上并不存在(4)虚拟地址空间是相互隔离的
虚拟内存的优缺点
在分页系统中,由Linux虚拟内存的优点主要有以下几个:(1)大地址空间:运行在I386平台的每个Linux进程,都可以使用4GB的地址空间。(2)进程保护:系统的每一个进程都有自己的虚拟地址空间,不同进程的虚拟空间所对应的物理地址是完全隔离的。(3)内存映射:利用内存映射可以将数据文件映射到虚拟地址空间,从而使得对文件的访问和对内存单元的访问一样。(4)虚存共享:多个进程的虚拟地址映射到同一个物理地址空间,则可以在不同的进程之间实现虚存共享。(5)多程序同时驻留内存:由于进程只有一部分驻留在内存,因此内存中可以驻留多个进程,提高cpu效率。(6)允许运行
虚拟内存结构描述 来自淘豆网m.daumloan.com转载请标明出处.