操作系统第4章内存管理

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1操作系统2计算机操作系统第一章操作系统概述第二章作业与界面管理(用户接口)第三章文件管理第四章内存管理第五章设备管理第六章进程管理3存储的层次结构第3章内存管理3.1内存介绍3.1.1内存管理1.存储的层次结构4高速缓存与内存速度的对比5内存空间的分配和回收3.内存管理的主要功能(1)内存空间的分配和回收操作系统中的内存管理能根据所记录的存储区状态作为内存分配的依据。当用户提出申请时,实施存储空间的分配管理,并能及时回收系统或用户释放的存储区,以供其它用户使用。为此,这种存储分配机制应能完成如下工作:记住存储区域的状态,哪些是已经分配的,哪些是未分配的。保存存储区域的状态的数据结构称为内存分配记录表。实施分配。在系统程序或用户提出申请时,按所需的量给予分配,并修改相应的内存分配记录表。接收系统或用户释放的存储区域,并相应地修改内存分配记录表。6地址转换(2)地址转换程序设计人员在进行程序设计中,访问信息时所用到的一系列地址单元的集合称为逻辑地址,而存储空间是内存中物理地址的集合。在多道程序环境下,程序不是事先约定存放位置,而是在执行过程中可以动态浮动,故程序的逻辑地址和物理地址是不一致的,因此需要内存管理机制提供地址映射转换功能,把程序地址空间中的逻辑地址转换为内存空间中对应的物理地址。7内存的共享和存储保护(3)内存的共享和存储保护由于内存区域为多个用户程序共同使用,所以存储共享有两方面的含义:多个用户程序共同使用内存空间,各个程序使用各自不同的存储区域;多个用户程序共同使用内存中的某些程序和数据区,这些共享程序和数据区称为共享区。因此内存管理必须研究如何保护各存储区中的信息不被破坏和偷窃,同时当多个程序共享一个存储区时,也要对共享区进行保护,确保信息的完整性和一致性。8内存空间的扩充(4)内存空间的扩充计算机在实际的应用中,常常出现内存容量大小无法满足大程序的要求。同时,内存容量受到实际存储单元的限制。因而,内存管理机制必须提供相应的技术,来达到内存单元逻辑上的扩充。现在采用的一般是覆盖技术、交换技术和虚拟存储技术。9程序名空间3.1.2相关概念1.程序名空间源程序中的各种符号名的集合所限定的空间称为程序名空间。如源程序中的数据和子程序通常是用符号名进行访问的,这些符号名与存储器地址无任何直接关系。在程序名空间中提到地址时,都是用符号来代替的,比如Basic中的行号或Goto语句后面的标识符。程序名空间中的地址概念只限于编辑器中,方便用户对程序的逻辑设计。如图3-3a所示,主程序和各个子程序都有各自不同的起始地址标识,变量也有自己的地址标识。10三种空间11地址空间与存储空间2.地址空间(AddressSpace)经编译后,源程序中的各种符号名转换成机器指令和数据组成的目标程序,且用实际地址码替换符号地址。把目标代码所限定的地址域叫该程序的地址空间。这些程序的地址都是从“0”开始的,程序中的其它地址都是相对于起始地址“0”来计算的。地址空间中的地址叫做相对地址(或逻辑地址,又叫虚地址)。3.存储空间(MemorySpace)存储空间是指物理存储器中全部物理存储单元的集合所限定的空间,也称为内存空间。每个存储单元都有它自己的编号地址。该地址被称为绝对地址,或物理地址,或实地址。存储空间的大小由系统的硬件配置决定的,即计算机中内存容量的大小。12直接存储分配方式4.存储分配的几种形式解决存储分配问题有三种方式:(1)直接存储分配方式编程人员在程序设计过程中,或汇编程序对源程序进行编译时,所用的是实际物理地址,以确保各程序所用的地址之间互不重叠。很显然,直接存储分配方式要求内存的可用空间已经确定,这对于单用户计算机系统来说是不成问题的。在多道程序设计发展初期,通常将存储空间划分成若干个固定的不同大小的分区,并对不同的作业指定不同的分区。对于程序设计人员或编译系统而言,内存的可用空间是已知的。这样,不仅用户感到不方便,而且内存的利用率也不高。13静态存储分配方式(2)静态存储分配方式采用静态存储分配方式时,用户在编写程序或由编译系统产生的目标程序中采用的地址空间为逻辑地址。当连接程序对它们进行装入、连接时,才确定它们在内存中的物理位置,从而产生可执行程序。这种分配方式要求用户在进行装入、连接时,系统必须分配其要求的全部内存空间,若内存空间不够,则不能装入该用户程序。同时,用户程序一旦装入到内存后,它将一直占据着分配给它的内存空间,直到程序结束时才释放该空间。其次,在整个运行过程中,用户程序所占据的内存空间是固定不变的,也不能动态地申请内存空间。显然,这种分配方式不仅不能实现用户对内存空间的动态扩展,而且也不能有效地实现内存资源的共享。14动态存储分配方式(3)动态存储分配方式动态存储分配方式是一种能有效使用内存的方法。用户程序在内存空间中的位置也是在装入时确定的,但是它不必一次性将整个程序装入到内存中,可根据执行的需要,一部分一部分地动态装入。同时,装入内存的程序不执行时,系统可以收回该程序所占据的内存空间。再者,用户程序装入内存后的位置,在运行期间可根据系统需要而发生改变。此外,用户程序在运行期间也可动态地申请内存空间以满足程序需求。动态存储分配通常可采用覆盖与交换技术实现。由此可见,动态存储分配方式在内存空间的分配和释放上,表现得十分灵活,现代的操作系统常采用这种存储分配方式。15内存共享及保护6.内存共享及保护在多道程序设计的环境下,系统中有系统程序和多个用户程序同时存在,用户程序间可以共享内存中的信息,但要保证用户程序不破坏系统程序,用户程序之间不相互干扰,这就是存储保护所要解决的问题。存储保护的目的有两个:保护系统程序区不被用户侵犯(有意或无意的)。如果一个菜鸟级的程序员,他的程序可以改变操作系统所在的内存区域内容,那这个系统还有谁敢用?不允许用户程序读写不属于自己内存空间的数据。正迎合了宋代陈元靓《事林广记·警世格言》的那句名言:“自家扫取门前雪,莫管他人屋上霜。”16上下界寄存器保护(1)界限保护上下界寄存器保护17基址、限长寄存器保护基址、限长寄存器保护【例】有一程序装入内存的首地址是500,末地址是1500,访问内存的逻辑地址是500、345、1200。基址寄存器:500限长寄存器:1000判别式:逻辑地址≤限长寄存器①500≤1000√②345≤1000√③1200≤1000×这里只判断地址的合法性,如果要计算物理地址,还需要加上基址寄存器的值。18单道系统的内存管理3.2单道系统的内存管理19单道系统的内存管理20固定分区管理3.3多道系统的分区管理3.3.1固定分区管理固定分区是指系统在初始化时,将内存空间划分为若干个固定大小的区域1.分区原则(1)分区大小可以不相等分区大小相等:适合于多个相同程序的并发执行,如图3-10a所示;分区大小不等:多个小分区、适量的中等分区、少量的大分区。根据程序的大小,分配当前空闲的、适当大小的分区。如图3-10b所示。(2)分区个数不变,大小不变21固定分区管理2.分区的管理22固定分区管理23分区的分配与回收3.分区的分配与回收24固定分区分配算法25分区原则3.3.2动态分区管理1.分区原则采用动态分区分配方式,在系统初启时,除了操作系统中常驻内存部分以外,只存在一个空闲分区。随后,分配程序将该区依次划分给调度程序选中的进程,并且分配的大小是根据用户进程对内存的需求而定,如图3-14所示。(1)根据作业的大小动态地划分分区,使分区的大小正好等于作业大小;(2)各分区的大小是不定的;(3)内存中分区的数目也是不定的。显然,这种分配方式不会产生“内碎片”现象,从而大大提高了内存的利用率,但随着频繁的调入调出,系统会产生大量的“外碎片”。26动态分区存储分配27分区说明表2.分区管理(1)分区说明表28带有表格信息的分区格式(2)空闲区链表29空闲区双向链表30位图(3)位图31分区的分配与回收3.分区的分配与回收通常,分区的回收有四种情况:(1)释放区与上下两个空闲区相邻在这种情况下,将三个空闲区合并为一个空闲区。新空闲区起始地址为上空闲区的起始地址,大小为三个空闲区之和。同时,修改可用分区表或空闲区链表或位图中的表项目。(2)释放区与上空闲区相邻在这种情况下,将释放区与上空闲区合并为一个空闲区,其起始地址为上空闲区的起始地址,大小为释放区和上空闲区之和。同时,修改可用分区表或空闲区链表或位图中的表项目。32分区的分配与回收(3)释放区与下空闲区相邻在这种情况下,将释放区与下空闲区合并为一个空闲区,其起始地址为释放区的起始地址,大小为释放区和下空闲区之和。同时,修改可用分区表或空闲区链表或位图中的表项目。(4)释放区与上下两个空闲区都不相邻33查找算法3.3.3查找算法不论是空闲区链表管理还是空闲区表格管理,链和表中的空闲区都可按一定规则排列,例如,按空闲区从大到小排或从小到大排,以方便空闲区的查找和回收。常用的动态分区管理的空闲区查找算法有四种:1.首次匹配(firstfit)2.下次匹配(nextfit)3.最佳匹配(bestfit)4.最坏匹配(worstfit)34首次匹配要求把主存中的可用分区按起始地址递增的次序排列。每次按递增次序向后找,一旦找到大于或等于所要求主存长度的分区,则结束搜索。从找到的分区中划出所要求内存长度分配给用户,并把剩余的部分进行合并(如果有相邻空白区存在时)。这样经常利用的是低地址空间。35首次匹配的空闲分区链表组织形式36下次匹配为了改善首次匹配的“经常利用的是低地址空间”,有的系统采用记住上一次分配区地址,每重新分配一次时,都在当前之后寻找,使用概率相同。即主存所有地址空间可能轮流使用到。37最佳匹配当用户作业申请一个空白区时,选择能满足要求的最小空白区分配,最佳匹配要求按空白区大小,从小到大次序组成空白区链表。找到第一个满足要求的空白区时停止查找.如果该空白区大于请求表中的请求长度,将减去请求长度后的剩余空白区部分留在可用链表中。38最佳匹配的空闲分区链表组织形式39最差匹配分配时选择能满足要求的最大空白区。最坏适应法要求按空白区大小,从大到小递减顺序组成空白区可用链表。当用户作业申请一个空白区时,选择能满足要求的最大空白区分配,先检查空白区链表的第一个空白可用区的大小是否大于或等于所要求的内存长度,若小于则该次分配失败。40最差匹配的空闲分区链表组织形式41移动技术2.移动技术42可重定位分区分配的优缺点3.可重定位分区分配的优缺点(1)优点可以消除碎片,能够分配更多的分区,有助于多道程序设计,提高内存的利用率。(2)缺点内存移动花费了大量CPU时间。43分区管理的优缺点分区管理的优缺点1.主要优点(1)实现了多道程序共享内存;(2)实现分区管理的系统设计相对简单,不需要更多的系统软硬件开销;(3)实现存储保护的手段也比较简单。44分区管理的优缺点2.主要缺点(1)内存利用不够充分。系统中总有一部分内存空间得不到利用,这部分被浪费的空间叫碎片。固定分区产生内碎片,可变分区产生外碎片。(2)没有实现内存的扩充问题。当进程的地址空间大于内存空间时,进程无法运行。也即进程的地址空间受实际内存空间的限制。(3)必须连续存放。进程在内存中总是分配一块连续的存储空间,无法很好地利用碎片,虽然可以通过移动技术来整理内存空间,但代价较高。(4)必须一次性将作业全部调入内存,若内存没有足够的空间,则等待。45实验二(1)提示可用任意语言编写,只要能实现功能即可,有操作提示、出错处理(输入数据错误、MBT表越界等)。运用可变式分区分配思想建立存储分块表MBT,使用首次匹配为新作业寻找可用空间。输入内存空间大小、MBT表长度,显示初始MBT表的状态,以后每分配一次空间或释放一次空间都要显示当前的MBT表。当选择“分配空间”操作,则需要输入新作业所需的空间;当选择“释放空间”操作,则需要输入想要释放的作业号。46MBT表的组成:块基址、块

1 / 91
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功