第四章存储管理4.1概述4.2段式存储管理4.3页式存储管理4.4段页式存储管理4.5虚拟存储4.6交换技术与覆盖技术重要资源“瓶颈”:关键、紧张帕金森定律4.1概述4.1.1存储体系存储器的层次结构:高速缓存Cache:少量的、非常快速、昂贵、易变的内存RAM:若干兆字节、中等速度、中等价格、易变的磁盘:数百兆或数千兆字节、低速、价廉、不易变的由操作系统协调这些存储器的使用重要性:直接存取要求内存速度尽量快到与CPU取指速度相匹配,大到能装下当前运行的程序与数据,否则CPU执行速度就会受到内存速度和容量的影响而得不到充分发挥。内存:是由存储单元(字节或字)组成的一维连续的地址空间,简称内存空间。用来存放当前正在运行程序的代码及数据,是程序中指令本身地址所指的、亦即程序计数器所指的存储器。内存可以分为:系统区:用于存放操作系统用户区:用于装入并存放用户程序和数据。4.1.2存储管理目的用户对内存的使用要求1充分利用内存,为多道程序并发执行提供存储基础。2尽可能方便用户使用自动装入用户程序用户程序中不必考虑硬件细节3系统能够解决程序空间比实际内存空间大的问题4程序在执行时可以动态伸缩5内存存取速度快6存储保护与安全7共享与通信8了解有关资源的使用状况9实现的性能和代价4.1.3存储管理的任务前提:引入多道程序设计技术满足用户要求1内存空间的管理、分配与回收记录内存的使用情况——设置相应的内存分配表(内存分配回收的依据)内存空间划分问题?静态或动态,等长或不等长内存空间的管理、分配与回收内存分配表位示图表示法:用一位(bit)表示一个空闲页面(0:空闲,1:占用)。内存空间的管理、分配与回收空闲页面表:包括首页面号和页面个数,连续若干的页面作为一组登记在表中空闲块表:空闲块首址和空闲块长度,没有记录的区域即为进程所占用空闲块链表:将所有的空闲块链成一个链表内存空间的管理、分配与回收确定分配算法实施内存分配回收内存分配回收方式:静态分配与动态分配内存空间的管理、分配与回收连续性;离散性驻留性;交换性一次性;多次性2存储共享内存共享:两个或多个进程共用内存中相同区域目的:节省内存空间,提高内存利用率实现进程通信(数据共享)共享内容:代码共享,要求代码为纯代码数据共享3存储保护与安全保护目的:为多个程序共享内存提供保障,使在内存中的各道程序,只能访问他自己的区域,避免各道程序间相互干扰,特别是当一道程序发生错误时,不致于影响其它程序的运行。通常由硬件完成保护功能,由软件辅助实现。(特权指令不能完成存储保护。)存储保护保护系统程序区不被用户侵犯(有意或无意的)不允许用户程序读写不属于自己地址空间的数据(系统区地址空间,其它用户程序的地址空间)保护过程----防止地址越界每个进程都有自己独立的进程空间,如果哪个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。保护过程----防止地址越界一般由硬件提供一对寄存器:基址寄存器:存放起始地址限长寄存器:存放长度(上界寄存器/下界寄存器)保护过程----防止操作越权对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权。即读写保护。4内存“扩充”通过虚拟存储技术实现用户在编制程序时,不应该受内存容量限制,所以要采用一定技术来扩充内存的容量,使用户得到比实际内存容量大的多的内存空间。内存“扩充”具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用。通过这种方法把内存扩充,使用户在编制程序时不受内存限制。5地址映射(地址重定位,地址变换)(1)逻辑地址(相对地址,虚地址)(2)物理地址(绝对地址,实地址)(3)地址映射(1)逻辑地址(相对地址,虚地址)用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为0,其余指令中的地址都相对于首地址而编址。不能用逻辑地址在内存中读取信息。(2)物理地址(绝对地址,实地址)内存中存储单元的地址,可直接寻址。(3)地址映射为了保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射。原因:当程序装入内存时,操作系统要为该程序分配一个合适的内存空间,由于程序的逻辑地址与分配到内存物理地址不一致,而CPU执行指令时,是按物理地址进行的,所以要进行地址转换。静态重定位当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换(一般在连接装配时由软件完成)。动态重定位在程序运行过程中要访问数据时再进行地址变换(即在逐条指令执行时完成地址映射。一般为了提高效率,此工作由硬件地址映射机制来完成。硬件支持,软硬件结合完成)。硬件上需要一对寄存器的支持。4.1.4各种存储管理方案单一用户(连续区)存储管理:单用户系统在一段时间内,只有一个进程在内存,故内存分配管理十分简单,内存利用率低。内存分为两个区域,一个供操作系统使用,一个供用户使用。分区存储管理方案固定分区预先把可分配的主存储器空间分割成若干个连续区域,称为一个分区。每个分区的大小可以相同也可以不同,如图所示。但分区大小固定不变,每个分区装一个且只能装一个作业。存储分配:如果有一个空闲区,则分配给进程。固定分区内存管理:设置内存分配表内存分配:内存回收:简单缺点:内存利用率不高可变分区内存的分配:内存不是预先划分好的,而是当作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配。若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待主存空间。内存的管理:设置内存空闲块表——记录了空闲区起始地址和长度。内存分配:动态分配内存的回收:当某一块归还后,前后空间合并,修改内存空闲块表。内存分配:三种分配算法首先适配算法:当接到内存申请时,查空闲块表,找到第一个不小于请求的空块,将其分割并分配。(特点:简单、快速分配)最佳适配算法:接到内存申请时,在空闲块表中找到一个不小于请求的最小空块进行分配。(特点:用最小空间满足要求)最坏适配算法:接到内存申请时,在空闲块表中找到一个不小于请求的最大空块进行分配。(特点:当分割后空闲块仍为较大空块)碎片问题:经过一段时间的分配回收后,内存中存在很多很小的空闲块。它们每一个都很小,不足以满足分配要求;但其总和满足分配要求。这些空闲块被称为碎片。造成存储资源的浪费碎片问题的解决:紧凑技术:通过在内存移动程序,将所有小的空闲区域合并为大的空闲区域。(紧缩技术,紧致技术,浮动技术,搬家技术)问题:开销大;移动时机讨论:优点:A便于动态申请内存B便于共享内存C便于动态链接缺点:碎片问题(外碎片)4.2段式存储管理4.2.1基本思想(工作原理)用户程序划分按程序自身的逻辑关系划分为若干个程序段,每个程序段都有一个段名,且有一个段号。段号从0开始,每一段也从0开始编址,段内地址是连续的。逻辑地址内存划分内存空间被动态的划分为若干个长度不相同的区域,这些区域被称为物理段,每个物理段由起始地址和长度确定。内存分配以段为单位分配内存,每一个段在内存中占据连续空间(内存随机分割,需要多少分配多少),但各段之间可以不连续存放。4.2.2管理段表:它记录了段号,段的首(地)址和长度之间的关系。每一个程序设一个段表空闲块管理:记录了空闲区起始地址和长度。内存的分配算法:首先适配;最佳适配;最坏适配4.2.3硬件支持一对寄存器段表始址寄存器:用于保存正在运行进程的段表的始址。段表长度寄存器:用于保存正在运行进程的段表的长度(例如上图的段表长度为3)。相联(联想)存储器介于内存与寄存器之间的存储机制,它又叫快表。用途:保存正在运行进程的段表的子集(部分表项)。特点:按内容并行查找。引入快表的作用:为了提高地址映射速度。快表项目:段号;段始址;段长度;标识(状态)位;访问位,淘汰位。快表淘汰问题?4.2.4段的共享4.2.5段的保护优点:便于动态申请内存管理和使用统一化便于共享便于动态链接缺点:产生碎片与可变分区存储管理方案区别4.3页式存储管理4.3.1基本思想(工作原理)用户程序划分把用户程序按逻辑页划分成大小相等的部分,称为页。从0开始编制页号,页内地址是相对于0编址。逻辑地址用户程序的划分是由系统自动完成的,对用户是透明的。一般,一页的大小为2的整数次幂,因此,地址的高位部分为页号,低位部分为页内地址。内存空间:按页的大小划分为大小相等的区域,称为内存块(又叫物理页面)。内存分配:以页为单位进行分配,并按作业的页数多少来分配。逻辑上相邻的页,物理上不一定相邻。4.3.2管理1.页表:系统为每个进程都建立了一个页表,页表给出逻辑地址号和具体内存块号相应的关系2.空块管理——总页表3.内存的分配与回收计算一个作业所需要的总块数。查总页表,看看是否还有N个空闲块。如果有相应空闲块,则页表长度为该为N,可填入PCB中。(申请页表区,把页表始址填入PCB)。分配N个空闲块,将块号和页号填入页表(页表号实际不用填)。修改总页表。4.3.3硬件支持1.一对寄存器:a页表始址寄存器b页表长度寄存器2.相联寄存器——快表1)页号2)页在内存的块号3)标识位4)淘汰位4.3.4优缺点优点:a解决了碎片问题b便于管理缺点:a不易实现共享b不便于动态连接4.4段页式存储管理4.4.1产生背景及基本思想背景:结合了二者优点克服了二者的缺点基本思想:用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;对系统讲,按页划分每一段)逻辑地址:内存划分:按页式存储管理方案内存分配:以页为单位进行分配4.4.2管理1段表:记录了每一段的页表始址和页表长度2页表:记录了逻辑页号与内存块号的对应关系。(每一段有一个,一个程序可能有多个页表)3空块管理:4分配:同页式管理4.4.3硬件支持段表始址寄存器段表长度寄存器相联存储器(快表)4.5虚拟存储连续性;离散性驻留性;交换性一次性;多次性以CPU时间和外存空间换取昂贵内存空间,这是操作系统中的资源转换技术4.5.1概述1问题的提出:a程序大于内存b程序暂时不执行或运行完是否还要占用内存。虚拟存储器的基本思想是:程序、数据、堆栈的大小可以超过内存的大小,操作系统把程序当前使用的部分保留在内存,而把其它部分保存在磁盘上,并在需要时在内存和磁盘之间动态交换。虚拟存储器支持多道程序设计技术。2程序局部性原理:在一段时间内一个程序的执行往往呈现出高度的局部性,表现在时间与空间两方面。时间局部性:一条指令被执行了,则在不久的将来它可能再被执行。空间局部性:若某一存储单元被使用,则在一定时间内,与该存储单元相邻的单元可能被使用。3虚拟存储技术虚存:把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就是虚存。实现思想:当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。4.5.2虚拟页式存储管理1基本工作原理在进程开始运行之前,不是装入全部页面,而是装入一个或零个页面,之后根据进程运行的需要,动态装入其它页面;当内存空间已满,而又需要装入新的页面时,则根据某种算法淘汰某个页面,以便装入新的页面。2页表表项页号、驻留位、内存块号、外存地址、访问位、修改位驻留位(中断位):表示该页是在内存还是在外存访问位:根据访问位来决定淘汰哪页(由不同的算法决定)修改位:查看此页是否在内存中被修改过3缺页中断在地址映射过程中,在页表中发现所要访问的页不在内存,则产生缺页中断。操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,将该页调入内存,使作业继续运行下去。如果内存中有空闲块,则分配一页,将新调入页装入内存,并修改页表中相应页表项目的驻留位及相应的内存块号。若此时内存中没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存。4页面淘汰算法先进先出页面淘汰算法(FIFO)选择在