操作系统原理7-存储管理.ppt

上传人:s****8 文档编号:67237734 上传时间:2022-12-24 格式:PPT 页数:93 大小:988.50KB
返回 下载 相关 举报
操作系统原理7-存储管理.ppt_第1页
第1页 / 共93页
操作系统原理7-存储管理.ppt_第2页
第2页 / 共93页
点击查看更多>>
资源描述

《操作系统原理7-存储管理.ppt》由会员分享,可在线阅读,更多相关《操作系统原理7-存储管理.ppt(93页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 1第七章 存储管理2第七章 存储管理7.1 概念存储器storage,memmory能接收数据和保存数据、而且能根据命令提供这些数据的装置。37.1 概念存储器分成两类:内存储器(简称内存、主存、物理存储器)处理机能直接访问的存储器。用来存放系统和用户的程序和数据,其特点是存取速度快,存储方式是以新换旧,断电信息丢失。外存储器(简称外存、辅助存储器)处理机不能直接访问的存储器。用来存放用户的各种信息,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在文件系统中介绍。47.1 概念1.内存的物理组织物理地址:把内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址

2、(物理地址、绝对地址、实地址),存储单元占8位,称作字节(byte)。物理地址空间:物理地址的集合称为物理地址空间(主存地址空间),它是一个一维的线性空间。57.1 概念2.程序的逻辑结构程序地址:用户编程序时所用的地址(或称逻辑地址、虚地址),基本单位可与内存的基本单位相同,也可以不相同。程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。67.2存储管理的功能1.存储管理功能地址映射地址映射 将程序地址空间中使用的逻辑地址变换成主存中的地址的过程(2)(2)主存分配主存分配 按照一定的算法把某一空闲的

3、主存区分配给作业或进程。(3)(3)存储保护保护 保证用户程序(或进程映象)在各自的存储区域内操作 ,互不干扰。(4)(4)提供虚拟存储技术 使用户程序的大小和结构不受主存容量和结构的限制,即使在用户程序比实际主存容量还要大的情况下,程序也能正确运行77.2存储管理的功能 7.2.1 地址映射一、什么是地址映射 地址映射 将程序地址空间中使用的逻辑地址变换成主存中的地址的过程称为地址映射。有时也称为地址重定位。87.2存储管理的功能 7.2.1 地址映射二、地址映射方式 地址映射的功能就是要建立虚实地址的对应关系,实现地址映射有三种方式:1.编程或编译时确定地址映射关系2.静态地址映射3.动态

4、地址映射97.2存储管理的功能 7.2.1 地址映射1.编程或编译时确定地址映射关系 编程时确定虚实地址的关系是指在用机器指令编程时,程序员直接按物理内存地址编程,这种程序在系统中是不能做任何移动的,否则就会出错。107.2存储管理的功能 7.2.1 地址映射2.静态地址映射 静态地址映射是在程序装入内存时完成从逻辑地址到物理地址的转换的。在一些早期的系统中都有一个装入程序(加载程序),它负责将用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址转换成物理地址。如左图所示。评价:优点是实现简单,不要硬件的支持。缺点是程序一旦装入内存,移动就比较困难。有时间上的浪费。在程序装入内存时要将所有

5、访问内存的地址转换成物理地址。117.2存储管理的功能 7.2.1 地址映射 2.静态地址映射127.2存储管理的功能 7.2.1 地址映射3.动态地址映射 动态地址映射是在程序执行时由系统硬件完成从逻辑地址到物理地址的转换的。系统中设置了重定位寄存器。137.2存储管理的功能 7.2.1 地址映射 3.动态地址映射动态地址映射是由硬件地执行时完成的,程序中不执行的程序就不做地址映射的工作,这样节省了CPU的时间。重定位寄存器的内容由操作系统用特权指令来设置,比较灵活。实现动态地址映射必须有硬件的支持,并有一定的执行时间延迟。现代计算机系统中都采用动态地址映射技术。147.2存储管理的功能 7

6、.2.1 地址映射 3.动态地址映射动态地址映射技术能满足以下目标:(1)具有给一个用户程序任意分配内存区的能力;(2)可实现虚拟存储;(3)具有重新分配的能力(4)对于一个用户程序,可以分配到多个不同的存储区157.2.3 程序的逻辑组织见7.1 2.程序的逻辑结构167.2.3 内存分配 在多道程序设计的环境中,内存分配的功能包括:制定分配策略、构造分配用的数据结构、响应系统的内存分配的请求和回收系统释放的内存区。内存管理策略有三种:1、放置策略 决定内存中放置信息的区域(或位置),即如何在若干个空闲区中选择一个或几个空闲区的原则;2、调入策略 决定信息装入内存的时机,有两种:在用户请求时

7、调入,称为请调;根据某种算法,确定系统将要使用的信息,并在执行前预先调入内存,称为预调;3、淘汰策略 当内存不足时,决定将某些信息调出内存的策略。177.2.4 提供虚存1、问题的提出1、问题的提出物理存储器的结构是个一维的线性空间,容量是有限的。用户程序结构:一维空间 一个用户程序就是一个程序,并且程序和数据是不分离的;二维空间 程序由主程序和若干个子程序(或函数)组成,并且程序 与数据是分离的;n维空间 即一个大型程序,由一个主模块和多个子模块组成,其中 ,各子模块又由主程序和子程序(或函数)组成。用户程序的大小,可能比内存容量小,也可能比内存容量大,有时候要大得多。187.2.4 提供虚

8、存1、问题的提出 如何将与物理内存结构不同,且大于物理内存容量的用户程序装入运行?这就是提出研究虚拟存储器的原因,或称为虚拟存储技术发展的原动力。197.2.4 提供虚存2.虚拟存储器概念虚拟存储器 为用户提供一种不受物理存储器结构和容量限制的存储器的技术称为虚拟存储器,或称虚拟存储技术。它是用户编程时所使用的一种用户思维中的存储器,它可以是任何结构(一维线性空间、二维空间、乃至n维空间),并没有容量的限制。现代计算机操作系统都采用了这种技术,使得用户编程序时不需要考虑物理内存的结构和容量,极大地方便了用户。虚拟存储器需要大容量的外存储器的支持,或称物资基础。207.2.5 存储保护在多道程序

9、设计的环境下,系统中有系统程序和多个用户程序同时存在,如何保证用户程序不破坏系统程序,用户程序之间不相互干扰?这就是存储保护所要解决的问题。常用的存储保护有两种。217.2.5 存储保护 1.上下界保护下界寄存器 存放程序装入内存后的开始地址(首址)上界寄存器 存放程序装入内存后的末地址判别式:下界寄存器 物理地址 上界寄存器227.2.5 存储保护 1.上下界保护例:有一程序装入内存的首地址是500,末地址是1500,访问内存的逻辑地址是500、345、1000。下界寄存器:500 上界寄存器:1500 逻辑地址装入内存的首地 物理地址 1、500500 1000 500 1000 1500

10、 2、345500 845 500 845 1500 3、1000500 1500 500 1500 1500237.2.5 存储保护 2.基址、限长寄存器保护例:有一程序装入内存的首地址是500,末地址是1500,访问内存的逻辑地址是500、345、1000。下界寄存器:500 上界寄存器:1500 1、500 500 1000 2、500 345 1000 3、500 1000 1000247.2.5 存储保护3.两种存储保护技术的区别 区别:1、寄存器的设置不同;2、判别式中用的判别条件不同上下界寄存器保护法用的是物理地址基址、限长寄存器保护法用的是程序的逻辑地址 对于合法的访问地址这两

11、者的效率是相同的,对不合法的访问地址来说,上下界存储保护浪费的CPU时间相对来说要多些。在7.4 页式存储管理中将介绍其存储保护机制。257.3 分区存储管理7.3.1 概述分区存储管理是满足多道程序设计的最简单的一种存储管理方法,它允许多个用户程序同时存在系统内存中,即共享内存空间。最早期的分区存储管理采用固定分区的方法,把内存空间分成若干个大小不等的区域,称为分区。每个用户程序(作业、进程)调入内存后,占用其中一个分区,程序运行完成后释放该分区。这种存储管理的方法的主要问题是内存使用效率极低,很快就被淘汰了。267.3 分区存储管理7.3.1 概述动态分区存储管理技术 系统生成后,操作系统

12、占用内存的一部分,一般在物理内存的开始处,比如,一个操作系统占20KB,装入系统后占用020KB的内存空间,剩下的部分作为一个空闲区,当一个用户程序(作业、进程)调入内存时,把这个空闲区的低地址部分的区域分配给它,如图所示。277.3 分区存储管理7.3.1 概述当有作业完成后释放所占用的存储区。在系统运行的过程中,系统中形成多个空闲的不连续的存储区,称主空闲。287.3 分区存储管理7.3.1 概述分区存储管理技术的实现:1、地址映射2、动态存储管理的机构(数据结构)3、分区的分配和回收4、三种基本的放置策略297.3 分区存储管理 7.3.2 用基地址寄存器实现动态地址映射在这种存储管理技

13、术中,系现设置一个专用寄存器,称为基地址寄存器,当一个进程(或程序、作业)被调度运行时,系统首先从PCB中取出该进程的首地址装入基地址寄存器中,在该进程运行的过程中实现动态地址映射。307.3 分区存储管理 7.3.3 分区分配机构分区存储管理使用的数据结构主要是空闲区表、空闲区队列两种。其形式如图所示。317.3 分区存储管理 7.3.4 分区的分配与回收 内存分配程序包括分配一个内存块(分区)和释放一个内存块(分区)两个函数,当进程需要一个大小为size的内存时,可以通过系统调用向系统申请。调用形式:request(size)返回:成功为分区的首地址,失败为0。进程释放一个分区时,调用:r

14、elease(释放区首地址)返回:无327.3 分区存储管理 7.3.4 分区的分配与回收一、分配算法 教材上的p156 的分配算法是以空闲内存队列的数据结构进行分配。介绍空闲区表数据结构的分配算法。注:1、分配算法中切割空闲区是从低地址开始的,例如,一个空闲区大小是100KB,首址是230KB,一申请者要求80KB,分配时将从230KB开始的80KB分配给申请者,剩下的部分仍作为一个空闲区,其首址是310KB,大小是20KB。2、门限值是切割空闲区后剩下的区域若小于门限值,就不切割该空闲区,统统分给申请者。337.3 分区存储管理 7.3.4 分区的分配与回收347.3 分区存储管理 7.3

15、.4 分区的分配与回收二、回收算法 当一个进程(或程序)释放某内存区时,要调用存储区释放算法release,它将首先检查释放区是否与空闲区表(队列)中的其它空闲区相邻,若相邻则合并成一个空闲区,否则,将释放为一个空闲区插入空闲区表(或队列)中的适当位置。空闲释放区与空闲区相邻有四种情况。试用C语言写出动态分区的回收算法。357.3 分区存储管理 7.3.4 分区的分配与回收A、将r合并到f1,f1.addr;f1.size+r.size=f.sizeB、将r合并到f2,r.addr;r.size+r.size=f2.sizeC、f1、r、f2 合并到f1,f1.addr;f1.size+r.s

16、ize+f2.size=f1.size 撤消f2空闲区D、r作为一个空闲区,并插入到空闲区表的适当位置。367.3 分区存储管理 7.3.5 几种放置策略 分区分配和回收是对空闲区表(或空闲区队列)数据结构进行操作,空闲区表的组织有两种方法:1、按空闲区大小的升序(降序)组织;2、按空闲区首址升序(降序)组织。根据空闲区表组织的方法的不同,有不同的放置策略,它们是最佳适应算法、首次适应算法和最坏适应算法三种。377.3 分区存储管理 7.3.5 几种放置策略一、首次适应算法 首次适应算法的表是按空闲区首址升序的(即空闲区表是按空闲区首址从小到大)方法组织的。387.3 分区存储管理 7.3.5

17、 几种放置策略 一、首次适应算法分配时从表首开始,以请求内存区的大小逐个与空闲区进行比较,找到第一个满足要求的空闲后,若空闲区大小与请求区的大小相等,则将该空闲区分配给请求者,并撤消该空闲区所在表目;若大于请求区,就将该空闲区的一部分分配给请求者,然后,修改空闲区的大小和首址。397.3 分区存储管理 7.3.5 几种放置策略 一、首次适应算法 切割空闲区有两种方法:从空闲区头开始 从空闲区尾开始空闲区大小50KB,首址156KB,申请34KB。407.3 分区存储管理 7.3.5 几种放置策略 一、首次适应算法 这种算法的实质是尽可能地利用低地址部分的空闲区,而尽量地保证高地址部分的大空闲区

18、,使其不被切削成小的区,其目的是保证在以有有大的作业的到来有足够大的空闲区来满足请求者。回收时,首先考察释放区是否与系统中的某个空闲区相邻,若相邻则合并成一个空闲区,否则,将释放区作为一个空闲区按首址升序的规则插入到空闲区表适当的位置。417.3 分区存储管理 7.3.5 几种放置策略二、最佳适应算法 最佳适应算法是将申请者放入与其大小最接近的空闲区中。切割后的空闲区最小,若系统中有与申请区大小相等的空闲区,这种算法肯定能将这种空闲区分配给申请者。(首次适应法则不一定)。427.3 分区存储管理 7.3.5 几种放置策略 二、最佳适应算法最佳适应算法的空闲区表按空闲区大小升序方法组织。分配时,

19、按申请的大小逐个与空闲区大小进行比较,找到一个满足要求的空闲区,就说明它是最适合的(即最佳的)。这种算法最大的缺点是分割后的空闲区将会很小,直至无法使用,而造成浪费。437.3 分区存储管理 7.3.5 几种放置策略三、最坏适应算法 为了克服最佳适应算法把空闲区切割得大小的缺点,人们提出了一种最坏适应算法,即每次分配时,总是将最大的空闲区切去一部分分配给请求者,其依据是当一个很大的空闲区被切割了一部分后可能仍是一个较大的空闲区。避免了空闲区越分越小的问题。447.3 分区存储管理 7.3.5 几种放置策略 三、最坏适应算法最坏适应算法的空闲区表是按空闲区大小降序的方法组织的(从大到小的顺序)。

20、分配时总是取表中的第一个表目,若不能满足申请者的要求,则表示系统中无满足要求的空闲区,分配失败;否则,将从该空闲区中分配给申请者,然后修改空闲区的大小,并将它插入到空闲区表的适当位置。457.3 分区存储管理 7.3.5 几种放置策略 这三种放置算法的优劣很难区分,要具体情况具体分析。例如:某时刻系统中有三个空闲区其大小和首址为:(35KB,100KB)、(12KB,156KB)、(28KB,200KB)有一作业系列:(JOB1,12KB)、(JOB2,30KB)、(JOB3,28KB)467.3 分区存储管理 7.3.5 几种放置策略477.4 页式存储管理7.4.1 页式系统应解决的问题一

21、、问题的提出分区存储管理的主要问题是碎片问题。在采用分区存储管理的系统中,会形成一些非常小的分区,最终这些非常小的分区不能被系统中的任何用户(程序)利用而浪费。造成这样问题的主要原因是用户程序装入内存时是整体装入的,为解决这个问题,提出了分页存储管理技术。487.4 页式存储管理7.4.1 页式系统应解决的问题二、分页的概念 程序地址空间分成大小相等的页面,同时把内存也分成与页面大小相等的块,当一个用户程序装入内存时,以页面为单位进行分配。页面的大小是为2n,通常为1KB,2KB,nKB等。497.4 页式存储管理7.4.1 页式系统应解决的问题页式存储管理要解决如下问题:1、页式存储管理系统

22、的地址映射;2、调入策略;3、淘汰策略;4、放置策略。507.4.2 页式地址变换一、页表 页表是页式存储管理的数据结构,它包括用户程序空间的页面与内存块的对应关系、页面的存储保护和存取控制方面的信息。页号 内存块号 存取控制 状态 其它在实际的系统中,为了节省存储空间,在页表中可以省去页号这个表目。517.4.2 页式地址变换527.4.2 页式地址变换二、虚地址结构(程序字)虚地址是用户程序中的逻辑地址,它包括页号和页内地址(页内位移)。区分页号和页内地址的依椐是页的大小,页内地址占虚地址的低位部分,页号占虚地址的高位部分。假定页面大小1024字节,虚地址共占用2个字节(16位)页号 页内

23、地址(位移量)P W 15 10 9 0537.4.2 页式地址变换 二、虚地址结构547.4.2 页式地址变换 三、页式地址映射557.4.2 页式地址变换 三、页式地址映射1.虚地址(逻辑地址、程序地址)以十六进制、八进制、二进制的形式给出将虚地址转换成二进制的数;按页的大小分离出页号和位移量(低位部分是位移量,高位部分是页号);根据题意产生页表;将位移量直接复制到内存地址寄存器的低位部分;以页号查页表,得到对应页装入内存的块号,并将块号转换成二进制数填入地址寄存器的高位部分,从而形成内存地址。567.4.2 页式地址变换 三、页式地址映射2.虚地址以十进制数给出 页号虚地址页大小 位移量

24、虚地址 mod 页大小根据题意产生页表;以页号查页表,得到对应页装入内存的块号内存地址块号页大小位移量577.4.2 页式地址变换 三、页式地址映射例1:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、A、5块,试将虚地址0AFEH,1ADDH转换成内存地址。虚地址0AFEH0000 1010 1111 1110P1 W010 1111 1110MR0100 1010 1111 1110 4AFEH587.4.2 页式地址变换 三、页式地址映射虚地址1ADDH0001 1010 1101 1101P3W010 1101 1101MR0010 1010 1

25、101 11012ADDH597.4.2 页式地址变换 三、页式地址映射例2:有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7、9、10、5块,试将虚地址7145,3412转换成内存地址。607.4.2 页式地址变换 三、页式地址映射虚地址 3412P3412 2048 1W 3412 mod 2048 1364MR=9*2048+1364=19796虚地址3412的内存地址是:19796617.4.2 页式地址变换 三、页式地址映射虚地址 7145P7145 2048 3W7145 mod 2048 1001MR=5*2048+1001=11241虚地址71

26、45的内存地址是:11241627.4.2 页式地址变换 四、采用相应技术加快页表的查询速度 在页式存储技术中,我们可看到每访问一次内存,就要做两次访问内存的工作,即,查页表时要作一次访问内存的工作,然后是访问程序要求访问的内存,这样,存取速度降低一倍,将会影响整个系统的使用效率。在早期的计算机系统中有的采用联想存储器的技术来加快查表的速度,有的采用寄存器做页表。637.4.2 页式地址变换 四、采用相应技术加快页表的查询速度 采用寄存器做页表的典型是早期的UNIX系统(PDP11系统计算机上)中,地址映射机构中就有两套页表机构,叫做页地址映射寄存器组,一套用于核心态,另一套用于用户态。每组有

27、8对寄存器,每对寄存器中有一个地址寄存器和一个说明寄存器,地址寄存器中存放相应页在内存的首地址,说明寄存器中存放对应页的大小,访问方式,存储保护等方面的信息。647.4.3 请调策略一、问题的提出在页式存储管理提高了内存的利用效率,但并不为用户提供虚存,换句话说,当一个用户程序的页数大于当前总空闲内存块数时,系统就不能将该程序装入运行。即用户程序将受到物理内存大小的限制。为了解决这个问题,人们提出请求分页存储管理技术。657.4.3 请调策略 二、请求分页概念 请求分页技术当一个用户程序要调入内存时,不是将该程序全部装入内存,而是只装入部分页到内存,就可启动程序运行,在运行的过程中,如果发现要

28、运行的程序或要访问数据不在内存,则向系统发出缺页中断请求,系统在处理这个中断时,将在外存相应的页调入内存,该程序继续运行。667.4.3 请调策略三、请求分页要解决的问题采用这种技术要解决以下问题:1、如何发现执行的程序或访问的数据不在内存;2、程序或数据什么时候调入内存,调入策略;3、当一些页调入内存时,内存没有空闲内存时,将淘汰哪些页,淘汰策略。677.4.3 请调策略四、数据结构为了实现请求分页技术,页表应增加相应的内容,反映该页是否在内存,在外存的位置,在内存的时间的长短等。中断位:0 表示该页在内存,1示该页不在内存引用位:0 表示最近没有进程访问 1示最近有进程访问修改位:0 该页

29、调入内存后没有修改 1页调入内存后修改过在请求分页技术中,页表中的页号是不能省略的,为什么?687.4.3 请调策略四、数据结构697.4.3 请调策略五.调入策略1、预调系统根据作业(进程)运行的情况,预测哪些页将要运行,在其运行之前先行调入内存,这样在程序运行的过程中就不会出现缺页中断。这样方法从表面上看起来很好,但系统无法预计系统中作业的运行情况,难以实现。2、请调进程在执行的过程中,发现要执行的程序或处理的数据不在内存,向系统提出调入相应程序的请求,系统响应用户的请求。707.4.4 淘汰策略一、置换算法当要索取一页面并送入到全满的内存中时,必须把已在内存中的某一页淘汰掉。用来选择淘汰

30、哪一页的规则叫做置算法。二、颠簸71一、最佳算法假定程序p共有n页,而系统分配给它的内存只有m块(1mn),并且以作业在执行的过程中页面置换的频率的高低来衡量算法的优劣。访问的页在内存,称访问成功,否则为失败。a=s+fa:访问的总次数 s:访问成功的次数 f:访问失败的次数7.4.5 几种置换算法727.4.5 几种置换算法缺页中断率f,=f/a 则有:f f(r,m,p)最佳算法是指对于任何m和p,r:调度算法有ff(r,m,p)最小。最佳算法:当要调入一新页而必须淘汰一旧页时,所淘汰的页是以后不再使用的,或者是以后相当长的时间内不会使用的。这种算法是不可能的。原因?737.4.5 几种置

31、换算法二、先进先出算法先进入内存的页,先退出内存。实质上是淘汰在内存驻留时间最长的页。其理由是:最早调入内存的页,不再被使用的可能性比近期调入内存的大。这种算法简单,实现容易。具体实现的方法留给大家747.4.5 几种置换算法三、最久未使用淘汰算法(lRU算法)这种算法的实质:当需要淘汰一页时,选择最长时间未使用的页。依据的理论是如果某页被访问,它可能马上还要被访问;相反,如果某页长时间未被访问,它可能最近也不可能被访问。算法的实现(软件):设置一个活动页面栈,当访问某页时,将此页号压入栈顶,然后,考察栈内是否有与此页面相同的页号,若有则抽出。淘汰一页时,总是从栈底抽出一个页号,它就是最久未使

32、用的。757.4.6 页式系统的存储保护页式系统的存储保护的方法类似于基址限长存储保护,当地址映射机构分离出页号和页内位移后。若0页号用户程序的总页数,则访问合法,否则访问越界。页式系统的存储保护还包括存取控制。在页表中增加存取控制位,表示该页的存取控制权限,如r表示可读,w表示可读可写,e表示可执行。当有一程序访问该页时,系统就按存取控制位设置的权限实施存取控制。767.5 段式系统一个用户程序往往由几个程序段(主程序、子程序和函数)所组成,当一个程序装入内存时,按段进行分配,每个段的大小是不相等的。程序地址的组成:S:W例:S1:XXXXS2:XXXXS3;XXXX777.5 段式系统78

33、7.5 段式系统段页式系统:在段式系统中,若段内分页,称为段页式系统。目前流行的UNIX系统采用这种存储管理的方式,一个进程的图象分为U区、共享正文区、用户栈区和数据区,各进程的各个区的大小是不相等的,只有U区的大小是相等的。这里的区类似于段。每个段又分成大小相等的页,内存的分配是以页为单位的。因此,在UNIX系统中存储管理(上下文,context)机构包括区表和页表,其结构参见7.6.4。797.6 UNIX系统存储管理7.1 概述 UNIX系统的早期版本采用分页存储管理,进程的存储映象可以在内存和交换区之间传递,称为对换;UNIX 第6、7版采用对换。在目前的一些UNIX系统中,采用请求分

34、页存储管理,也就是采用虚拟存储技术,称为请求调页。UNIX SYSTEM 采用请求调页(请求分页)。以后的UNIX系统的各种版本均采用了请求调页技术。807.6.2 对换空间的管理系统盘的结构:817.6.2 对换空间的管理对换存储管理的数据结构系统设置了两个相同的结构:coremap 内存空闲区表 swapmap 对换区空闲区表空闲区的分配采用最佳适应法。程序是:malloc(map,size)空闲区回收程序:mfree(map,size,aa)map:内存(或对换区);size:大小;aa:释放区首址空闲区首址空闲区大小123 50300 1500 0 827.6.3 对换进程 对换进程就

35、是0号进程,它一个永远处于核心态的进程。其任务是将进程的映象在内存和对换区之间传递。837.6.3 对换进程(一)进程换入 当内存空闲时,0号进程将对换区中处于就绪状态的进程的映象调入内存,直到内存满,或者是对换区中已经没有处于就绪状态的进程。调入就绪进程的依据是进程在对换区中驻留的时间,每次调人一个在对换区中驻留时间最在的进程映象进入内存。847.6.3 对换进程(二)进程换出当内存空间不足时,0号进程将内存中的某些进程换到对换区。不能换出的进程是核心态的进程(UNIX核心)、处于创建状态的进程、上锁的进程,在内存中驻留时间不足两分钞钟的就绪进程。换出的顺序是:处于睡眠状态的进程、暂停状态的

36、进程。若无以上这两类进程,就是处于就绪状态的进程。按就绪状态的进程在内存中驻留时间从长到短的顺序依次调入内存,直到内存中无进程可调出为止。857.6.4 请求调页数据结构进程映象的结构:在请求调页的系统中,进程映象的结构是U区、正文区、数据区、用户栈区。其中U区的大小是固定的,其它的各区的大小不是固定的。867.6.4 请求调页数据结构877.6.4 请求调页数据结构(一)进程区表在UNIX system 中,一个进程可以有正文区、数据区、用户栈区和U区。其中U区只有处于运行状态的进程才有,其它状态的进程没有U区。每个区又分成若干个页。所以,每个区有一个页表。887.6.4 请求调页数据结构(

37、二)页和页表将用户的程序空间分成大小相等的单位,称为页。并把内存空间也分成与之相等的块。页的大小为512字节。刚好与磁盘的物理块大小相等。页表的格式如下:897.6.4 请求调页数据结构块号:内存块号 年龄:该块在工作集中驻留的时间修改:表示该页调入内存后修改过,置1,否则为0;访问:该页调入内存后,被访问过;有效:为1表示该页在内存,否则不在内存;保护:该页的存储保护信息;对换设备:指明对换设备;磁盘块号:该页在对换设备上的磁盘物理块号。907.6.4 请求调页数据结构7.6.5 页地址映射917.6.4 请求调页数据结构7.6.6 页面错(缺页中断)在UNIX系统中产生页面错有两种情况:1

38、.进程企图访问虚存空间范围之外的页面,即段违例,在这种情况下,核心向违例的进程发送一个“段违例”的软中断。(这是一般操作系统中页面错的处理方法)。2.进程企图访问一个有效位为0的页(该页不在内存),这时将产生一个有效位错的中断(类似于一般OS中的缺页中断)。核心处理该中断时,将所而的页面调入内存。927.6.4 请求调页数据结构7.6.7 偷页进程(页面淘汰)当有进程需要调人一些页面时,又没有内存空间时,核心将按某种策略将系统中的一些页面调出内存,在一般的OS中称为页面淘汰,在UNIX中称为偷页。1.选择淘汰的页;2.选中了淘汰页后,执行淘汰,若修改位为1,表示该页调入内存后,已经修改,淘汰时,要将要淘汰的页面写到相应的磁盘块。若修改位为0,表示该页面调入内存后没有修改过,只是把该页置为空。93

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁