- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统结构
虚拟内存管理——结构描述
李 煜
摘
关 键 词:虚拟内存;Linux;
1 引言
我们知道程序代码和数据必须驻留在内存中才能得以运行,然而系统内存数量很有限,往往不能容纳一个完整程序的所有代码和数据,更何况在多任务系统中,可能需要同时打开子处理程序,画图程序,浏览器等很多任务,想让内存驻留所有这些程序显然不太可能。因此首先能想到的就是将程序分割成小份,只让当前系统运行它所有需要的那部分留在内存,其它部分都留在硬盘。当系统处理完当前任务片段后,再从外存中调入下一个待运行的任务片段。的确,老式系统就是这样处理大任务的,而且这个工作是由程序员自行完成。但是随着程序语言越来越高级,程序员对系统体系的依赖程度降低了,很少有程序员能非常清楚的驾驭系统体系,因此放手让程序员负责将程序片段化和按需调入轻则降低效率,重则使得机器崩溃。系统必须采取一种能按需分配而不需要程序员干预的新技术。? 虚拟内存之所以称为虚拟内存,是和系统中的逻辑内存和物理内存相对而言的,逻辑内存是站在进程角度看到的内存,因此是程序员关心的内容。而物理内存是站在处理器角度看到的内存,由操作系统负责管理。虚拟内存可以说是映射到这两种不同视角内存的一个技术手段。技术就是一种由操作系统接管的按需动态内存分配的方法,它允许程序不知不觉中使用大于实际物理空间大小的存储空间(其实是将程序需要的存储空间以页的形式分散存储在物理内存和磁盘上),所以说虚拟内存彻底解放了程序员,从此程序员不用过分关心程序的大小和载入,可以自由编写程序了,繁琐的事情都交给操作系统去做吧。?
2 虚拟内存的概念极其优缺点
2.1 虚拟内存的概念
在分页系统中,由于在程序地址空间和物理地址空间引入了页表,隔离了两个地址空间,一个程序可以在物理内存中不连续。操作系统负责在内外存之间交换页面,造成每个进程都认为自己是系统中唯一一个程序,独占系统全部地址空间的假象。虚拟地址是一块地址空间,它的特点主要是:(1)从0开始编址并且连续(2)不受系统物理内存大小限制(3)在功能上等价于物理内存,但实际上并不存在(4)虚拟地址空间是相互隔离的
2.2 虚拟内存的优缺点
在分页系统中,由Linux虚拟内存的优点主要有以下几个:(1)大地址空间:运行在I386平台的每个Linux进程,都可以使用4GB的地址空间。(2)进程保护:系统的每一个进程都有自己的虚拟地址空间,不同进程的虚拟空间所对应的物理地址是完全隔离的。(3)内存映射:利用内存映射可以将数据文件映射到虚拟地址空间,从而使得对文件的访问和对内存单元的访问一样。(4)虚存共享:多个进程的虚拟地址映射到同一个物理地址空间,则可以在不同的进程之间实现虚存共享。(5)多程序同时驻留内存:由于进程只有一部分驻留在内存,因此内存中可以驻留多个进程,提高cpu效率。(6)允许运行重定位程序:程序可以放在物理内存的任意位置,并且在执行过程中也可以移动。(7)代价小:换入换出单个页面的代价比交换这个进程小。
但是,虚拟内存也是有代价的,虚拟内存管理需要建立很多的数据结构,它们要占额外的内存;虚拟地址到物理地址的转化增加了每条指令的执行时间;页面的换入换出也增加了磁盘的I/O操作。
3 虚拟内存管理结构
3.1 虚拟内存管理实现思路
在分页系统中,由Linux虚拟内存的优点主要有以下几个:(1)大地址空间:运行在I386平台的每个Linux进程,都可以使用4虚拟内个管理的基本思路是虚拟或者制造假象,它使得每个进程都认为系统中有足够大的内存并且内存中只有自己一个进程,实现的基本思路是如下,具体如图1所示:(1)将系统的物理地址和进程的虚拟地址分成固定大小的页,为每个进程重建一个页表,从而实现两个地址空间的隔离。(2)由虚拟内存管理器管理和维护进程的页表,建立虚拟内存页和物理页的对应关系,利用硬件实现地址的转换。(3)由内存管理器负责内外存之间的页面交换,将进程使用的虚拟页面换入物理内存,不用的换出内存,提高物理内存的使用率,造成几乎无限大小的虚拟内存的假象。
图1. Linux虚拟内存管理器的实现思路
3.2 页表的介绍
在分页系页表是虚拟内存管理中最基础的数据结构,在Intel的32位处理器中分为两级,分别称为页目录和页表。其特点主要有:(1)页目录和页表只能由虚拟内存管理,对进程是透明的。(2)虚拟页在内存时,页表项记录这对应关系,虚拟页不在内存时,虚拟项记录这页面在外存的位置。(3)页表项和页表都是动态重建和动态删除的。(4)虚拟页和物理页的映射关系不要求连续,也不要求有序,多个虚拟页可以对应一个物理页。
它的每一个元素称为一个页表项(PTE),在Intel系统上,页表项长度为32位,4个字节,包含以下信息:
有效标志:表示页表本项是否有效(2)映射关系:本页
文档评论(0)