- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OS2013NIT6 实存管理
Unit 6; 内存是程序得以运行的重要物质基础,内存管理是操作系统的核心管理功能之一。如何充分有效地利用有限的内存空间资源,并能安全运行多个较大的应用程序,一直是操作系统致力解决的问题。在长期的发展过程中,人们设计了多种方案,其中最成功的当属被绝大多数现代操作系统所采用的虚拟内存技术,它是现代操作系统的重要组成部分,为多进程并发系统提供了有力的支持。;内容;§1 基本概念;1.1 内存管理的目标; 2. 提高内存空间的有效利用率
有效就是不能浪费。内存是紧缺资源,要充分发挥内存空间的利用率,让尽可能多的程序能进入内存,以提高系统的并发性。内存共享是实现这一目标的基本技术,所谓内存共享是指让多个进程共用内存中的只读程序代码或只读数据。例如,有2个用户进程为编译各自的C源程序而同时分别创建了子进程P1和P2,操作系统在建立P1和P2时只需加载一个C编译器,而不是分别为P1和P2各加载一个C编译器,即P1和P2共享了同一个代码段。
另外,应避免出现这样的情况:有需要加载的程序进不了内存,但内存中却有闲置的空间,而且闲置空间的总量又不小于需加载程序的需求;第二种情况更复杂些,一 ; 些内存映象较大或很大的进程,在进程创建时就为其整个内存映象分配了内存空间,实际上它的不少甚至许多代码在当前一段时间内并不会被执行,却占了相当大的内存空间,而有些程序和数据此时又加载不了,这也是种浪费,而且往往是更大的浪费。
3. 进程地址空间保护
每个进程都在内存中占据着一定的物理地址空间,对于并发运行的各个进程,内存管理系统必须确保它们之间互不干扰,即一个进程不能随便访问另一个进程的地址空间。这是保证并发进程能够正确运行的基本前提之一。; 4. 程序地址独立
程序在执行前必须被加载到内存,执行时由CPU从内存中一条条读出指令执行。每条指令在执行时需要读取操作数和保存运算结果,而要读取操作数或保存运算结果,就需要给出操作数所在的内存单元地址或运算结果存放的内存单元地址,这个地址不能是物理内存地址,这是因为该程序在何种硬件配置的机器上运行并不能事先确定,编译器在编译程序时自然不可能对症下药地给出对应于某台机器的物理内存地址,因此,指令中的地址只能是程序地址空间中的逻辑地址(相对地址),即程序代码中的地址独立于任何计算机,也就是说程序代码中的地址与具体机器的物理内存地址无关。为了保证CPU执行程序指令时能; 正确访问内存单元,内存管理系统需要负责将指令中的逻辑地址转换为可由CPU直接寻址的物理地址,这一过程称为地址映射或地址翻译,也称重定位。
地址映射有两种方式:(1)静态地址映射,这在程序加载到内存时由内存管理系统一次性完成,即扫描整个程序,把各指令中出现的逻辑地址都转换成程序实际所占内存空间中对应的物理地址;(2)动态地址映射,这在程序执行过程中随机进行,每当执行一条访内指令时再自动地将逻辑地址转换成物理地址。;1.2 虚拟内存 ; 术是扩充主存,但这种扩充不是物理地增大主存容量,而是逻辑扩充,即使用软件方法将物理主存空间扩充成比实际主存容量大得多的虚拟内存空间。虚拟内存是现代操作系统中被广泛使用的主存扩充技术。
虚拟内存的中心思想是利用大容量且价廉的磁盘来扩充物理主存,即将磁盘空间看作是主存空间的一部分。用户程序存放在磁盘上就相当于存放在主存内,用户程序既可以完全存放在主存,也可以完全存放在磁盘上,当然也可以部分存放在主存,部分存放在磁盘。而程序执行时,指令中的地址到底是在主存还是在磁盘则由系统的内存管理模块负责判断,并到相应的地方进行读写操作。而上述这些对用户都是透明的。 ; 引入虚拟内存技术,内存管理的对象就不再仅是物理的内存架构,而是一个虚拟的内存架构,它不仅包括了主存和Cache,还包括了磁盘,从而像魔术师般的构建出了一个空间可像磁盘那样大,速度可像Cache那样高的内存系统。
虚拟内存是操作系统发展历史上的一个革命性突破(当然,它也是使操作系统变得更加复杂的一个主要因素)。因为有了虚拟内存,理论上人们编写的程序从此不再受大小的限制;再者,虚拟内存可确保公平的内存分配和提高内存空间的有效利用率这两个目标,可使系统的并发性发挥到极致。
Unix、Linux、Windows等所有现代操作系统几乎毫无例外地都采用了虚拟内存技术。 ;1.3 内存管理模式; §2 分区内存管理;2.1 分区内存管理基本原理; 2. 分区分配
为了实现可变分区管理需要设置一个分区说明表,用于记录内存分区的使用情况。
分区管理使用的分配算法主要有:
(1)最先适配法(FF:First Fit)
顺序扫描分区表,选择第一个能满足请求容量的空闲分区。
(2)最佳适配法(BF:
文档评论(0)