操作系统 教学课件 ppt 作者 宗大华 宗涛 第三章

上传人:E**** 文档编号:89379532 上传时间:2019-05-24 格式:PPT 页数:149 大小:1.16MB
返回 下载 相关 举报
操作系统 教学课件 ppt 作者  宗大华 宗涛 第三章_第1页
第1页 / 共149页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第三章_第2页
第2页 / 共149页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第三章_第3页
第3页 / 共149页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第三章_第4页
第4页 / 共149页
操作系统 教学课件 ppt 作者  宗大华 宗涛 第三章_第5页
第5页 / 共149页
点击查看更多>>
资源描述

《操作系统 教学课件 ppt 作者 宗大华 宗涛 第三章》由会员分享,可在线阅读,更多相关《操作系统 教学课件 ppt 作者 宗大华 宗涛 第三章(149页珍藏版)》请在金锄头文库上搜索。

1、第3章 存储管理,计算机系统中的存储器可以分为两种:内存储器和辅助存储器。前者可被CPU直接访问,后者不能。辅助存储器与CPU之间只能够在输入输出控制系统的管理下,进行信息交换。 既然内存储器可被CPU直接访问,因此它是计算机系统中的一种极为重要的资源。在操作系统中,把管理内存储器的部分称为“存储管理”。能否合理地使用内存,会在很大程度上影响到整个计算机系统的性能。,退出,本章将要介绍两个重要概念。一个是“地址重定位”。在多道程序设计环境下,用户无法事先约定各自占用内存的哪个区域,也不知道自己的程序会放在内存的什么位置,但程序地址如果不反映其真实的存储位置,就不可能得到正确的执行。所以在存储管

2、理中,必须解决地址的重定位问题。二是“虚拟存储”。曾经有人说过:“存储器有多大,程序就会有多大”。因此,在计算机系统中,虽然内存的容量随着硬件的发展得到了很大的扩充,但仍然无法满足实际的需要,必须打破“程序只有全部在内存,才能得以运行”的限制。为此,通过“虚拟存储”这一技术手段,可以达到不用真正扩充内存而“扩充”内存的目的。,本章着重讲述四个方面的内容: (1)地址的静态重定位和动态重定位; (2)不同的存储管理方案; (3)存储共享和存储保护; (4)存储扩充和虚拟存储器。,3.1 固定分区存储管理 3.2 可变分区存储管理 3.3 分页式存储管理 3.4 虚拟存储与请求页式存储管理,3.1

3、 固定分区存储管理,3.1.1 地址重定位 举例说,假定用户程序A的相对地址空间为03KB(03071),在该程序中地址为3000的地方,有一条调用子程序(其入口地址为100)的指令:“call 100”,如图3-1(a)所示。,很清楚,用户程序指令中出现的都是相对地址,即都是相对于“0”的地址。若当前操作系统在内存储器占用020KB的存储区。这时,如果把程序A装入到内存储器中20KB往下的存储区域中,那么,它这时占据的是内存储器中20KB23KB的区域。这个区域就是它的绝对地址空间。现在它还不能正确运行,因为在执行到位于绝对地址23480(20KB+3000)处的“call 100”指令时,

4、它会到绝对地址100处去调用所需的子程序,但这个地址却在操作系统里面,如图3-1(b)所示。之所以出错是因为call后面所跟随的子程序入口地址现在应该是20580,而不应该保持原来的100。这表明,当把一个程序装入内存后,如果不将其指令中的地址进行调整,以反映当前所在的存储位置,那么执行时势必会引起混乱。,在操作系统中,把用户程序指令中的相对地址变换成为所在绝对地址空间中的绝对地址的过程,称为“地址重定位”。也就是说,把指令“call 100”中的100变换成20580,就是地址重定位,如图3-1(c)所示。地址重定位与用户程序占用的绝对地址空间的起始地址有关。在图3-1(c)中,由于是把程序

5、A装入到(20KB23KB)绝对地址空间里,因此call指令中相对地址100所对应的绝对地址是20KB+100=20580。如果把程序A装入到(22KB25KB)的绝对地址空间里,那么call指令中相对地址100所对应的绝对地址就应该是22KB+100=22628了。如图3-1(d)所示。,3.1.2 地址的静态重定位 如果在程序运行之前,就为用户程序实行了地址重定位的工作,那么称这种地址重定位为地址的“静态重定位”。一般地,静态重定位工作是由操作系统中的重定位装入程序来完成的。用户把自己的作业链接装配成一个相对于“0”编址的目标程序,它就是重定位装入程序的输入,即加工对象。重定位装入程序根据

6、当前内存的分配情况,按照分配区域的起始地址逐一调整目标程序指令中的地址部分。于是,目标程序在经过重定位装入程序加工之后,不仅进入到分配给自己的绝对地址空间中,而且程序指令里的地址部分全部进行了修正,反映出了自己正确的存储位置,从而保证程序的正确运行。,3.1.3 单一连续分区存储管理 就早期计算机或个人微机而言,每次只有一个用户使用计算机,无从提及多道程序设计,因此,在这些机器上运行的操作系统,其存储管理都采用单一连续分区的分配策略。 单一连续分区分配策略的基本思想是总体上把内存储器分为两个分区。一个分区固定分配给操作系统使用;另一个分配给用户使用,称为“用户区”。如图3-2(a)所示。,可以

7、看出,采用单一连续分区存储管理方案的系统有如下特点: (1)系统总是把整个用户区分配给一个用户使用,比如图3-2(a)中的ab区域。 (2)实际上,内存用户区又被分为“使用区”和“空闲区”两部分。见图3-2(b),其中使用区为ac,空闲区为cb。使用区是用户作业程序真正占用的那个连续存储区域;空闲区是分配给了用户、但未被使用的区域。在操作系统中,把分配给了用户、但又未使用的区域称为“内部碎片”。内部碎片的存在是对内存资源的一种浪费。,(3)由于任何时刻内存储器的用户区中只有一个作业运行,因此这种系统只适用于单用户(或单道)的情况。 (4)进入内存的作业,独享系统中的所有资源,包括内存中的整个用

8、户区。 (5)由于整个用户区都分配给了一个用户使用,因此作业程序进入用户区后,没有移动的必要。采用这种存储分配策略时,将对用户程序实行静态重定位。,(6)实行静态重定位,并不能阻止用户有意无意地通过不恰当的指令闯入操作系统所占用的存储区域。如何阻止对操作系统的侵扰,这就是所谓的“存储保护”问题。在单一连续分区存储管理中,为了有效阻止用户程序指令中的地址闯入操作系统所占用的区域,在CPU中设置一个用于存储保护的专用寄存器“界限寄存器”,如图3-2(c)所示。在界限寄存器中,总是存放着内存用户区的起始地址(比如图3-2(c)中为a)。当CPU在管态下工作时,允许访问内存中的任何地址;当CPU在目态

9、下工作时,对内存储器的每一次访问,都要在硬件的控制下,与界限寄存器中的内容进行比较。一旦发现该访问的地址小于界限寄存器中的地址,就会产生“地址越界”中断,阻止这次访问的进行,从而将作业限制在规定的存储区域内运行,确保被保护区中的信息不受外来的破坏。,单一连续分区存储管理有如下缺点: (1)由于每次只能有一个作业进入内存,故它不适用于多道程序设计,整个系统的工作效率不高,资源利用率低下。 (2)只要作业比用户区小,那么在用户区里就会形成碎片,造成内存储器资源的浪费。如果用户作业很小,那么这种浪费是巨大的。,(3)若用户作业的相对地址空间比用户区大,那么该作业就无法运行。即大作业无法在小内存上运行

10、。 早期计算机在一定的条件下,可以采用所谓的“覆盖”技术,使得大作业在小内存上得以运行。举例说,有一个用户作业程序的调用结构如图3-3(a)所示。主程序MAIN需要存储量10KB。运行中,它要调用程序A或B,它们各需要存储量50KB和30KB。程序A在运行中要调用程序C,它需要的存储量是30KB。程序B在运行中要调用程序D或程序E,它们各需要存储量20KB或40KB。通过连接装配的处理,该作业将形成一个需要存储量180KB的相对地址空间,如图3-3(b)所示。这表明,只有系统分配给它180KB的绝对地址空间时,它才能够全部装入并运行。,其实不难看出,该程序中的子程序A和B不可能同时调用,即MA

11、IN调用程序A,就肯定不会调用程序B,反之亦然。同样地,子程序C、D和E也不可能同时出现,所以,除了主程序必须占用内存中的10KB外,A和B可以共用一个存储量为50KB的存储区,C、D和E可以共用一个存储量为40KB的存储区,如图3-3(c)所示。也就是说,只要分给该程序100KB的存储量,它就能够运行。由于A和B共用一个50KB的存储区,C、D和E共用一个40KB的存储区,我们就称50KB的存储区和40KB的存储区为覆盖区。因此,所谓“覆盖”,是早期为程序设计人员提供的一种扩充内存的技术,其中心思想是允许一个作业的若干个程序段使用同一个存储区,被共用的存储区被称为“覆盖区”。不过,这种技术并

12、不能彻底解决大作业与小内存的矛盾。,为了让单一连续分区存储管理能具有“多道”的效果,在一定条件下,可以采用所谓的“对换”技术来实现。“对换”的中心思想是:将作业信息都存放在辅助存储器上,根据单一连续分区存储管理的分配策略,每次只让其中的一个进入内存投入运行。当运行中提出输入输出请求或分配给的时间片用完时,就把这个程序从内存储器“换出”到辅助存储器,把辅助存储器里的另一个作业“换入”内存储器运行,如图3-4所示。这样,从宏观上看,系统中同时就有几个作业处在运行之中。不过要注意,由于单一连续分区存储管理实行的是静态重定位,所以,“换出”的作业程序再被“换入”时,仍应该装到与它“换出”前相同的存储区

13、中去,以保证能够正确地继续运行。不难看出,“对换”是以辅助存储器作为内存的后援而得以实行的,没有它的支持,就谈不上“对换”。,3.1.4 固定分区存储管理 1对作业的组织 一般地,固定分区存储管理总是把内存用户区划分成几个大小不等的连续分区。由于分区尺寸在划分后保持不变,因此系统可以为每一个分区设置一个后备作业队列,形成多队列的管理方式,如图3-5(a)所示。在这种组织方式下,一个作业到达时,总是进入到“能容纳该作业的最小分区”的那个后备作业队列中去排队。比如图3-5(a)中,作业A、B、C排在第1分区的队列上,说明它们对内存的需求都不超过8KB;作业D排在第2分区的队列上,表明它对内存的需求

14、大于8KB小于32KB;作业E和F排在第4分区的队列上,表明它们对内存的需求大于64KB小于132KB。,把到达的作业根据上述原则排成若干个后备队列时,可能会产生有的分区队列忙碌、有的分区队列闲置的情形。比如图3-5(a)中,作业A、B、C都在等待着进入第1分区。按照原则,它们不能进入目前空闲的第3分区,虽然第3分区的大小完全能够容纳下它们。 作为一种改进,可以采用多个分区只设置一个后备作业队列的办法,如图3-5(b)所示。当某个分区空闲时,统一都到这一个队列里去挑选作业,装入运行。,2分区的分配与释放 在操作系统中,要确定选用某一种管理策略时,应该考虑多方面的因素,权衡利弊,绝对好的方案是少

15、见的。 为了具体管理内存中的各个分区,操作系统的做法是设置一张名为“分区分配表”的表格,用它记录各分区的信息以及当前的使用情况。表3-1即为一种分区配表。,分区分配表中至少应该有每个分区的起始地址和长度,并且有一个使用标志。当某分区的使用标志为“0”时,表示该分区当前是空闲的,可以分配;当某分区的使用标志不为“0”时,表示该分区已经分配给一个作业使用,该标志里存放的即是这个作业的名称。从表3-1可以看出,该系统共有4个分区。第1分区已经分配给作业1使用,第2分区分配给了作业6使用,第4分区分配给了作业2使用。当前只有第3分区是空闲的。,当需要把一个作业装入内存时,按照分区号扫视分区分配表,找到

16、使用标志为“0”的分区,随后把要装入内存的作业尺寸与该分区的长度进行比较。若能够容纳该作业,并符合所采取的分配策略,那么就把它分配给这个作业,同时修改分区分配表中该分区表目的使用标志为非0(即把该作业的名字填入),从而完成分区的分配工作;当一个作业运行结束时,只需根据作业名,在分区分配表里找到它所使用的表目,然后将该表目的使用标志改为“0”,从而完成该分区的释放工作。,3地址重定位与存储保护 在固定分区存储管理中,不仅要防止用户程序对操作系统形成的侵扰,也要防止用户程序与用户程序之间形成的侵扰。因此必须在CPU中设置一对专用的寄存器,用于存储保护,如图3-6所示。 在图3-6中,将两个专用寄存器分别起名为“低界限寄存器”和“高界限寄存器”。当进程调度程序调度某个作业进程运行时,就把该作业所在分区的低边界地址装入低界限寄存器,把高边界地址装入高界限寄存器。比如现在调度到分区1里的作业1运行,于是就把第1分区的低地址a装入到低界限寄存器中,把第1分区的高地址b

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

当前位置:首页 > 高等教育 > 大学课件

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