操作系统OperatingSystems操作系统课程组南京邮电大学WINDOWSUNIXLINUXOS2VxWorksMacOS教材:《操作系统教程》,人民邮电出版社,2009年出版第五章存储管理5.1存储管理中的概念5.2分区存储管理5.3页式存储管理5.4式存储管理5.5段页式存储管理5.6虚拟存储管理5.7Linux系统存储管理小结5.1存储管理中的概念5.1.1存储管理的目的和功能5.1.2存储分配的方式5.1.3重定位5.1.1存储管理的目的和功能1、存储管理的目的:2、存储管理的功能:OS为用户使用存储器提供方便充分发挥内存的利用率内存的分配与回收地址转换信息的共享与保护内存扩充5.1存储管理中的概念5.1.1存储管理的目的和功能5.1.2存储分配的方式5.1.3重定位5.1.2存储分配的方式1、静态分配:在生成可执行程序的过程中进行的缺点:使得存储管理变得很简单,但同时也缺少灵活性,不仅不能有效地利用内存空间,而且不支持动态数据和程序结构,不能满足作业动态地增长存储空间的需求。2、动态分配:可以根据需要动态地增加附加分配存储空间优点:这种分配机制支持不可预测的分配与释放存储区域的请求,表现出更大的灵活性。5.1存储管理中的概念5.1.1存储管理的目的和功能5.1.2存储分配的方式5.1.3重定位5.1.3重定位1、静态静态重定位:静态重定位是在程序装入后且在运行之前,一次将需要转换的逻辑地址转换为物理地址重定位原理缺点是:程序的存储空间只能是连续的一片区域,而且在重定位之后就不能移动,这不利于内存空间的有效使用;各个用户进程很难共享内存中的同一程序的副本。5.1.3重定位2、动态重定位:动态重定位是在程序执行期间每次访问内存之前进行重定位的。优点:(1)程序占用的内存空间动态可变,也不必连续存放在一起;(2)比较容易实现几个进程对同一程序副本的共享使用。缺点:需要附加的硬件支持,增加了机器成本,而且实现存储管理的软件算法比较复杂。5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.1固定分区1.分区划分2.内存分配3.地址转换5.2.1固定分区1.分区划分固定分区(fixedpartition)存储管理又称定长分区或静态分区模式,固定分区将内存空间划分为若干个固定大小的分区,可用下述两种方法。(1)分区大小相等使所有的内存分区都大小相等。缺点:当程序太小时,会造成内存空间的浪费;当程序太大时,可能因分区的大小尚不足以装入该程序,而使该程序无法运行。(2)分区大小不等为了克服分区大小相等分配方法的缺点,可在内存中划分出多个较小的分区、适量的中等分区及少量的大分区。对于小程序,可为之分配小分区;同样,当大、中程序到来时,就可以找到大的分区,将程序装人内存并运行。5.2.1固定分区2.内存分配为了能对内存分区划分和使用情况进行有效的管理,系统应建立一个分区说明表,以记录可以用于分配的分区号、分区大小、分区起始地址及状态等。为了管理系统中所有作业使用内存分区的情况,系统在作业表中应有说明作业占用内存分区的说明信息,包括作业号、作业大小、作业占用分区号等。5.2.1固定分区3.地址转换固定分区存储管理的地址转换可以采用静态定位方式,装入程序在进行地址转换时检查其绝对地址是否落在指定的分区中,若是,则可把程序装入,否则不能装入,且应归还所分得的存储区域。固定分区存储管理的地址转换也可以采用动态定位方式,如图。B下限寄存器逻辑地址CPU绝对地址操作系统区用户分区1用户分区2用户分区3B+L2上限寄存器B+L2越界中断用户分区4用户分区5用户分区65.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.2可变分区下面从两个方面分析可变分区:1.基本原理;2.地址转换;5.2.2可变分区1.基本原理可变分区(variablepartition)存储管理又称变长分区,是按作业的大小来划分分区,但划分的时间、大小、位置都是动态的。图5-6可变分区内存分配可以看出,内存中分区的数目和大小随作业的执行而不断改变。为了方便内存的分配和释放,内存分配表可由两张表格组成,一张是已分配区表,另一张是未分配区表,如表5-1和表5-2所示。5.2.2可变分区2.地址转换又称地址重定位、地址映射逻辑地址(相对地址,虚地址)物理地址(绝对地址,实地址)OS5.2.2可变分区2.地址转换当作业占有CPU运行后,操作系统可把该区的开始地址和长度送入基址寄存器和限长寄存器,启动作业执行时由硬件根据基址寄存器进行地址转换得到绝对地址,地址转换如图5-7所示。当逻辑地址小于限长值时,则逻辑地址加基址寄存器值就可获得绝对值地址;当逻辑地址大于限长值时,表示作业欲访问的地址超出了所在分区的区域,这时不允许访问,达到了保护的目的。5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.3分配和释放算法1.分配算法2.释放算法5.2.3分配和释放算法1.分配算法常见的内存分配算法有以下几种:①首次适应算法(firstfit)。②循环首次适应算法(nextfit)。③最佳适应算法(bestfit)。④最坏适应算法(worstfit)。OS5.2.3分配和释放算法③回收分区上、下邻接空闲分区。此时应将回收分区、上邻接分区及下邻接分区合并成一个连续的空闲区,合并分区的首地址为上邻接空闲区的首地址,大小为三者之和,且应把下邻接空闲区从未分配区表(或空闲分区链)中删去。④回收分区不与任何空闲分区邻接。此时应为回收分区单独建立一个新表项,将回收分区的起始地址及大小填入表项中,并将其加入到未分配区表(或空闲分区链)中。回收分区与已有空闲区的相邻情况有4种情况:①回收分区上邻接一个空闲分区。此时应将回收分区与上邻接分区合并成一个连续的空闲区。合并分区的首地址为上邻接空闲区的首地址,大小为二者之和。②回收分区下邻接一个空闲分区。此时应将回收分区与下邻接分区合并成一个连续的空闲区,合并分区的首地址为回收分区的首地址,大小为二者之和。2.释放算法5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.4分区移动技术移动技术的示例如下图所示5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.5覆盖与交换技术1.覆盖2.交换技术5.2.5覆盖与交换技术1.覆盖覆盖技术要求编程人员提供一个清楚的覆盖结构,即程序员要把一个程序划分成不同的程序段,并规定程序段的执行和覆盖顺序。操作系统根据程序员提供的覆盖结构,完成程序段之间的覆盖。引入覆盖技术的目的是使在较小的可用内存空间上运行较大的。程序成为可能,该技术常与分区存储管理技术配合使用5.2.5覆盖与交换技术1.覆盖如某进程的程序正文由A,B,C,D,E和F等6个程序段组成。它们之间的调用关系如图5-10(a)所示。程序段A只调用程序段B和C,程序段B调用D,程序段C调用E和F。因此,程序段B和C就无需同时在内存中,程序段E和F也无需同时在内存中。进程可按如图5-10(b)所示的方式分配程序段。进程正文段所需要的内存空间是:A+B+C+D+E+F=200(KB)。而采用了覆盖技术后,只需要100KB内存空间就行了。5.2.5覆盖与交换技术1.覆盖5.2.5覆盖与交换技术1.覆盖覆盖技术的优点是:①由于执行前装入的数据和程序变少,程序的装入加快;②不需操作系统额外的硬件支持,只需增加一些I/O操作。覆盖技术的缺点是:①编程人员必须设计和编写正确的覆盖结构,必须划分程序模块并确定程序模块间的覆盖关系,编程复杂度增加;②必须有重定位算法和链接程序支持覆盖驱动程序读入代码的过程;③覆盖技术是通过程序执行时间的延长来换取空间的节省。基于这些缺点,覆盖技术的使用并不是很广泛,但当缺乏对先进技术的硬件支持时,采用这种策略比较有效5.2.5覆盖与交换技术2.交换技术交换技术(Swapping),也称为对换或滚入/滚出(roll-in/roll-out),是指把内存中暂时不能运行的进程或暂时不用的程序和数据,换出到外存,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的程序和数据,换入内存运行。5.2.5覆盖与交换技术2.交换技术按交换单位的不同,可分为整体交换和部分交换。1.整体交换也称为进程交换,是指交换整个进程,这是为解决内存紧张问题提出的,也可进一步提高内存利用率。2.部分交换指交换以“页”或“段”为单位进行,可分别称为“页面交换”和“分段交换”,这是在虚存的请求分页和请求分段存储管理基础上提出的技术。5.2.5覆盖与交换技术2.交换技术与覆盖技术相比:1.交换技术不要求编程人员给出程序段之间的覆盖结构,它主要是在进程或作业之间进行,而覆盖技术则主要是在同一个进程或作业之间进行。2.交换技术的运用,可以在较小的存储空间中运行较多的作业或进程,覆盖技术的运用,可以在较小的存储空间中运行比其容量大的作业或进程。5.2.5覆盖与交换技术2.交换技术交换技术常与分区存储管理配合使用,其:优点:是可以增加并发运行的程序数目,并给用户提供了适当的响应时间缺点:上下文切换的开销非常大,没有考虑程序执行过程中地址访问的统计特性,而且在交换过程中需考虑程序换入时的重定位问题和交换中传送信息量多少的问题。5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.6分区的存储保护1.界限寄存器方式2.保护键方式5.2.6分区的存储保护1.界限寄存器方式界限寄存器方式可以采用上下界寄存器和基址、限长寄存器两种方式实现存储保护。界限寄存器保护法是一种常用的硬件保护法。在上下界存储保护技术中要求为每个进程设置一对上下界寄存器。上下界寄存器中装有被保护程序和数据段的起始地址和终止地址。在程序执行过程中,在对内存进行访问操作时首先进行访址合法性检查,即检查经过重定位后的内存地址是否在上下界寄存器所规定的范围之内,如在该范围内,则访问是合法的;否则是非法的,并产生访址越界中断。5.2.6分区的存储保护2.保护键方式保护键方式为每一个被保护存储块分配一个单独的保护键,它相当于一把锁。在程序状态字中则设置相应的保护键开关字段,它相当于一把钥匙,对不同的进程赋予不同的开关代码以和被保护的存储块中的保护键匹配。当作业运行时,检查钥匙和锁是否一致,如果二者不匹配表示不允许对存储区域访问,则系统发出保护性中断信号。保护键可设置成对读写同时保护的,或只对读、写进行单项保护的。5.2分区存储管理5.2.1固定分区5.2.2可变分区5.2.3分配和释放算法5.2.4分区移动技术5.2.5覆盖与交换技术5.2.6分区的存储保护5.2.7分区存储管理的主要优缺点5.2.7分区存储管理的主要优缺点分区存储管理的主要优点:①实现了多道程序设计,从而提高了系统资源的利用率;②分区管理要求的硬件支持少,管理算法简单,因而容易实现。分区存储管理的主要缺点:①内存利用率仍然不高,因为分区管