4第四章存储器管理

上传人:豆浆 文档编号:10604760 上传时间:2017-08-13 格式:PPT 页数:125 大小:1.90MB
返回 下载 相关 举报
4第四章存储器管理_第1页
第1页 / 共125页
4第四章存储器管理_第2页
第2页 / 共125页
4第四章存储器管理_第3页
第3页 / 共125页
4第四章存储器管理_第4页
第4页 / 共125页
4第四章存储器管理_第5页
第5页 / 共125页
点击查看更多>>
资源描述

《4第四章存储器管理》由会员分享,可在线阅读,更多相关《4第四章存储器管理(125页珍藏版)》请在金锄头文库上搜索。

1、第四章 存储器管理,4.1 存储器的层次结构4.2 程序的装入和链接 4.3 连续分配方式 4.4 基本分页存储管理方式 4.5 基本分段存储管理方式 4.6 虚拟存储器的基本概念 4.7 请求分页存储管理方式 4.8 页面置换算法 4.9 请求分段存储管理方式,存储器是计算机系统的重要组成部分,操作系统中的存储管理是指对内存的管理,它是操作系统的重要功能之一。,充分利用内存,为多道程序并发执行提供存储基础尽可能方便用户使用自动装入用户程序用户程序中不必考虑硬件细节系统能够解决程序空间比实际内存空间大的问题,存储器管理的目的:,程序的长度在执行时可以动态伸缩内存存取速度快存储保护与安全共享与通

2、信及时了解有关资源的使用状况实现的性能和代价要合理,内存空间的管理、分配与回收内存共享-代码共享,数据共享通过代码共享节省内存空间,提高内存利用率通过数据共享实现进程通信存储保护防止地址越界防止操作越权扩充内存容量 用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来“扩充”内存的容量,使用户得到比实际内存容量大的多的内存空间,通过虚拟存储技术实现地址映射(重定位),存储器管理的功能:,存储系统设计三个问题: 容量、速度和成本容量:需求无止境速度:能匹配处理器的速度成本问题:成本和其它部件相比应在合适范围之内,解决方案:采用层次化的存储体系结构当沿着层次下降时每比特的价格将下降,容量将

3、增大速度将变慢,处理器的访问频率也将下降,4.1 存储器的层次结构,4.1.1 多级存储器结构,容量愈来愈大访问数据的速度愈来愈慢价格愈来愈便宜,提高存储系统效能关键点:程序存储访问局部性原理程序执行时,有很多的循环和子程序调用,一旦进 入这样的程序段,就会重复存取相同的指令集合对数据存取也有局部性,在较短的时间内,稳定地 保持在一个存储器的局部区域,处理器主要和存储器 的局部打交道,在经过一段时间以后,使用的代码和 数据集合会改变,设计多级存储的体系结构,原则:访问级别较低存储器比率小于级别较高存储 器比率例:假设两级存储器:第I级包含1KB,存取时间为0.1s第II级包含1MB,存取时间为

4、1s存取I级中的内容,直接存取存取II级,首先被转移到I级,然后再存取假设确定内容所在位置时间可以忽略若在I级存储器中发现存取对象的概率是95%,则平均访问时间为:结果非常接近I级存储的存取时间,存储保护设施,对主存中的信息加以严格的保护,使操作系统及其它程序不被破坏,是其正确运行的基本条件之一. 问题:多个程序同时在同一台机器上运行怎样才能互 不侵犯?,为了保证软件程序只影响程序的内部 硬件可提供如下功能:界地址寄存器(界限寄存器)存储键,1.界地址寄存器(界限寄存器),在CPU中设置一对界限寄存器来存放该用户作业在主存中的下限和上限地址每当CPU要访问主存,硬件自动将被访问的主存地址与界限

5、寄存器的内容进行比较,以判断是否越界如果未越界,则按此地址访问主存,否则将产生程序中断越界中断(存储保护中断),2.存储键,每个存储块有一个由二进位组成的存储保护键一用户作业被允许进入主存,OS分给它一个唯一的存储键号并将分配给该作业各存储块存储键也置成同样键号当OS挑选该作业运行时,OS将它的存储键号放入程序状态字PSW存储键(“钥匙”)域中每当CPU访问主存时,都将该主存块的存储键与PSW中的“钥匙”进行比较,0010,0,7,钥Key,11,只要键匹配,存取均可键不匹配,则不可存是否可取要看保护位,举例:, 存A,取A,均可以 (键Key匹配) 存B,取B,均不可以 (键不匹配,且取保护

6、) 存C,不可以 (键不匹配)取C,可以,因取保护位为0,即不保护取,程序状态字,4.1 程序的装入和链接,在多道程序环境下,要使程序运行,必须创建进程,而创建进程第一件事就是将程序和数据装入内存。 一个用户源程序要变为在内存中可执行的程序,通常要进行以下处理:(1)编译:由编译程序将用户源程序编译成若干个目标模块;(2)链接:由链接程序将目标模块和相应的库函数链接成装入模块;(3)装入:由装入程序将装入模块装入内存。,1. 绝对装入方式,如果在编译时,事先知用户程序在内存的驻留位置,则编译程序在编译时就产生绝对地址的目标代码。装入程序就直接把装入模块中的程序和数据装入到指定的位置,(不需进行

7、地址转换)。 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。 但在由程序员直接给出绝对地址时, 不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是宁可在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址。,4.2.1 程序的装入,1.名空间、地址空间和存储空间,在我们用汇编语言或高级语言编写程序时,总是通过符号名来访问某一单元。我们把程序中由符号名组成的空间称为名空间。源程序经过汇编或编译形成的程序,通常是以0为基址进行顺序编址,这样的地址表示形式称为相对地址,也叫做逻辑地址或虚地址,把该程序逻辑

8、地址组成的集合叫做程序的逻辑地址空间(简称地址空间)。存储器中每个具体存储单元都有不同的编号,每个编号就是一个物理地址,整个程序在内存中存储后所占用的物理地址的集合形成程序的物理地址空间(简称存储空间)。,2. 重定位(地址映射)装入方式,名空间、地址空间和存储空间的关系,2.地址映射,逻辑地址是一个“虚”的概念,处理机不能直接访问逻辑地址,而物理地址则是“实”的。因而,操作系统必须提供这样的功能,把程序执行时要访问的地址空间中的逻辑地址变换成内存空间中对应的物理地址。这种把虚地址变换成实地址的过程称作地址映射。若用A表示地址空间,用M表示内存空间,则地址映射可表示成:f:,(1)静态映射:当

9、用户程序被装入内存时,一次性实现逻 辑地址到物理地址的转换,以后不再转换。由重定位 装入程序完成,它把分配给目标程序的内存区的起始 地址B作为基地址,在把该程序装入指定内存区的同时, 将程序中的所有逻辑地址翻译成相对于基地址B的物理 地址,即(),优点:容易实现,无需硬件支持,地址重定位由专门设计的 程序来完成。在早期的操作系统中大多数都采用这种 方法。缺点:程序经地址重定位后就不能移动了,因而不能重新分 配内存,不利于内存的有效利用。,0: B=10000 100: LOAD 1,2500 10100: LOAD 1,12500 2500: 365 12500: 365 2600: 1260

10、0: 逻辑地址空间 物理地址空间,例如:LOAD 1,2500 这条指令是把相对地址为2500的存储单元的内容365装入1号累加器。而这时内容为365的存储单元的实际物理地址为12500(起始地址10000+相对地址2500),所以LOAD 1,2500 这条指令中的直接地址码要作相应的修改,即改为LOAD 1,12500。,(2)动态映射:指在程序执行过程中进行地址重定位,即在每次访问内存单元前才进行地址变换。动态重定位可使程序不加任何修改就装入内存,但是它需要硬件重定位寄存器的支持。对每一个有效地址都要加上重定位寄存器中的内容,以形成绝对地址。,优点:程序在内存中的搬移不会对程序的正确执行

11、造成影响, 使内存得以被充分利用。缺点:需要附加的硬件支持,实现存储管理的软件算法比较 复杂。,4.2.2 程序的链接,一种事先链接方式,即在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块(执行文件),以后不再拆开。实现静态链接应解决:1)相对地址的修改2)变换外部调用符号存在问题:1)不便于对目标模块 的修改和更新。2)无法实现对目标模 块的共享。,1. 静态链接方式,指将一组目标模块在装入内存时,边装入边链接的方式。具有便于修改和更新、便于实现对目标模块的共享。存在问题: 由于程序运行所有可能用的目标模块在装入时均全部链接在一起,所以将会把一些不会运行的目标模块也

12、链接进去。如程序中的错误处理模块。,2. 装入时动态链接方式,在程序运行中需要某些目标模块时,才对它们进行链接的方式。具有高效且节省内存空间的优点。,3. 运行时动态链接方式,单一用户(连续)分配是一种简单的存储分配方案,主要用于单用户单任务操作系统。它的实现方案如下: (1) 内存分配:整个内存划分为系统区和用户区。系统区 是操作系统专用区,不允许用户程序直接访问,一道 用户程序独占用户区.,4.3.1 单一用户存储管理方案,注意: 我们所涉及的内存分配 与回收一般都指用户区 的分配与回收。,进程,1,OS,系统区,用户区,4.3 连续分配方式,(3) 内存保护:通过基址寄存器保证用户程序不

13、会从系统区 开始;另外系统需要一个界限寄存器,里边存储程序逻 辑地址范围,若需要进行映射的逻辑地址超过了界限寄 存器中的值,则产生一个越界中断信号。,(2) 地址映射:物理地址=用户区基地址+逻辑地址。,单一连续分配方案的优点是方法简单,易于实现;缺点是它仅适用于单道程序,因而不能使处理机和内存得到充分利用。,例:,一个容量为256KB的内存,操作系统占用32KB,剩下224KB全部分配给用户作业,如果一个作业仅需64KB,那么就有160KB的存储空间被浪费。,0KB32KB96KB256KB-1,分配给用户的空间,4.3.2 固定分区分配,作业装入之前,内存就被划分成若干个分区。划分工作可以

14、由系统管理员完成或由操作系统实现。一旦划分完成,在系统运行期间不再重新划分,即分区的个数不可变,分区的大小不可变,且每个分区装一个且只能装一个作业。可将内存的用户区域划分成大小相等或不等的分区。分区大小相等:只适合于多个相同程序的并发执行(处理多个类型相同的对象)。分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。系统有一张分区说明表,每个表目说明一个分区的大小、起始地址和是否已分配的使用标志。,固定分区示例,例:在某系统中,采用固定分区分配管理方式,内存分区(单位字节)情况如图所示,现有大小为1K、9K、33K、121K的多个作业要求进入

15、内存,试画出它们进入内存后的空间分配情况,并说明主存浪费多大?,分区说明表,(2)分区说明表,(3)主存浪费空间=(8-1)+(32-9)+(120-33)+(331-121) =7+23+87+210=327(k),解:根据分区说明表,将4个分区依次分配给4个作业,同时修改分区说明表,其内存分配和分区说明表如下所示:,4.3.3 动态(可变)分区分配,作业装入内存时,从可用的内存中划出一块连续的区域分配给它,且分区大小正好等于该作业的大小。可变式分区中分区的大小和分区的个数都是可变的,而且是根据作业的大小和多少动态地划分。在分配时,首先找到一个足够大的空闲分区,即这个空闲区的大小比作业要求的要大,系统则将这个空闲分区分成两部分:一部分成为已分配的分区,剩余的部分仍作为空闲区。在回收撤除作业所占领的分区时,要检查回收的分区是否与前后空闲的分区相领接,若是,则加以合并,使之成为一个连续的大空间。常用的数据结构有内存分配表(由已分配区表和空闲区表组成)和空闲分区链两种。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号