




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 第七章 存储管理 2 7.1 概念 存储器 storage, memory 能接收数据和保存数据、而且能根据命令提供这 些数据的装置。 3 7.1 概念 存储器分成两类: 内存储器(简称内存、主 存、物理存储器) 处理机能直接访问的存储 器。用来存放系统和用户 的程序和数据,其特点是 存取速度快,存储方式是 以新换旧,断电信息丢失 。 外存储器(简称外存、辅 助存储器) 处理机不能直接访问的存 储器。用来存放用户的各 种信息,存取速度相对内 存而言要慢得多,但它可 用来长期保存用户信息。 在文件系统中介绍。 4 7.1 概念 1. 内存的物理组织 物理地址: 把内存分成若干个大小相等的 存
2、储单元,每个单元给一个编号 ,这个编号称为内存地址(物理 地址、绝对地址、实地址), 存储单元占8位,称作字节(byte )。 物理地址空间: 物理地址的集合称为物理地址 空间(主存地址空间),它是一 个一维的线性空间。 5 7.1 概念 2.程序的逻辑结构 程序地址:用户编程序时所用的地址(或称逻辑地址 、虚地址 ), 基本单位可与内存的基本单位相同,也可以不相同。 程序地址空间(逻辑地址空间、虚地址空间):用户的程序地址的集 合称为逻辑地址空间,它的编址总是从0开始的,可以是一维线性空 间,也可以是多维空间。 6 7.2存储管理的功能 存储管理功能: (1) (1) 地址地址映射映射 将程
3、序地址空间中使用的逻辑地址变换 成主存中的地址的过程; (2) (2) 主存主存分配分配 按照一定的算法把某一空闲的主存区分 配给作业或进程; (3) (3) 存储存储保护保护 保证用户程序(或进程映象)在各自的存 储区域内操作,互不干扰; (4) (4) 提供虚拟存储技术提供虚拟存储技术( (扩充扩充) ) 使用户程序的大小和结构 不受主存容量和结构的限制,即使在用户程序比实 际主存容量还要大的情况下,程序也能正确运行。 7 7.2.1 提供虚存 1、问题的提出、问题的提出 物理存储器的结构是个一维的线性空间,容量是有限的。物理存储器的结构是个一维的线性空间,容量是有限的。 用户程序结构:用
4、户程序结构: 一维空间。一维空间。一个用户程序就是一个程序,并且程序和数据是不分离一个用户程序就是一个程序,并且程序和数据是不分离 的;的; 二维空间。二维空间。程序由主程序和若干个子程序(或函数)组成,并且程程序由主程序和若干个子程序(或函数)组成,并且程 序与数据是分离的;序与数据是分离的; n维空间。维空间。即一个大型程序,由一个主模块和多个子模块组成,其中即一个大型程序,由一个主模块和多个子模块组成,其中 ,各子模块又由主程序和子程序(或函数)组成。,各子模块又由主程序和子程序(或函数)组成。 用户程序的大小,可能比内存容量小,也可能比内存容量大,有时用户程序的大小,可能比内存容量小,
5、也可能比内存容量大,有时 候要大得多。候要大得多。 8 7.2.1 提供虚存 如何将与物理内存结构不同,且大于物理 内存容量的用户程序装入运行?这就是提出研 究虚拟存储器的原因,或称为虚拟存储技术发 展的原动力。 局部性原理:局部性原理:程序访问的指令和数据是相对 聚簇的,即一段时间内集中访问程序编码的一 部分。(使虚存管理成为可能) 9 7.2.1 提供虚存 2. 虚拟存储器概念 为用户提供一种不受物理存储器结构和容量限制的 存储器的技术称为虚拟存储器,或称虚拟存储技术。 它是用户编程时所使用的一种用户思维中的存储器 ,它可以是任何结构(一维线性空间、二维空间、乃 至n维空间),并没有容量的
6、限制。 现代计算机操作系统都采用了这种技术,使得用户 编程序时不需要考虑物理内存的结构和容量,极大地 方便了用户。 虚拟存储器需要大容量的外存储器的支持,或称物 质基础。 10 7.2存储管理的功能 7.2.2 地址映射 一、什么是地址映射 将程序地址空间中使用 的逻辑地址变换成主存中 的地址的过程称为地址映 射。有时也称为地址重定 位 。 11 7.2存储管理的功能 7.2.2 地址映射 二、地址映射方式 地址映射的功能就是要建立虚实地址的对应关系,实 现地址映射有三种方式: 编程或编译时确定地址映射关系 静态地址映射 动态地址映射 12 7.2存储管理的功能 7.2.2 地址映射 1. 编
7、程或编译时确定地址映射关系 编程时确定虚实地址的关系是指在用机器指令编程 时,程序员直接按物理内存地址编程,这种程序在系 统中是不能做任何移动的,否则就会出错。 13 7.2存储管理的功能 7.2.2 地址映射 2.静态地址映射 静态地址映射是在程序装入内存时完成从逻辑地址到 物理地址的转换的。 在一些早期的系统中都有一个装入程序(加载程序),它负责将 用户程序装入系统,并将用户程序中使用的访问内存的逻辑地址 转换成物理地址。如左图所示。 评价: 优点是实现简单,不要硬件的支持。 缺点是程序一旦装入内存,移动就比较困难。有时间上 的浪费。在程序装入内存时要将所有访问内存的地址转换成物 理地址。
8、 14 7.2存储管理的功能 7.2.2 地址映射 2.静态地址映射 15 7.2存储管理的功能 7.2.2 地址映射 3.动态地址映射 动态地址映射是在程序 执行时由系统硬件完成从 逻辑地址到物理地址的转 换的。 系统中设置了重定位寄 存器。 16 7.2存储管理的功能 7.2.2 地址映射 3.动态地址映射 动态地址映射是由硬件地执行时完成的,程序中不执行 的程序就不做地址映射的工作,这样节省了CPU的时 间 。 重定位寄存器的内容由操作系统用特权指令来设置,比 较灵活。 实现动态地址映射必须有硬件的支持,并有一定的执行 时间延迟。现代计算机系统中都采用动态地址映射技 术。 17 7.2存
9、储管理的功能 7.2.2 地址映射 3.动态地址映射 动态地址映射技术能满足以下目标: (1)具有给一个用户程序任意分配内存区的能力; (2)可实现虚拟存储; (3)具有重新分配的能力 (4)对于一个用户程序,可以分配到多个不同的存储区 18 7.2.3 程序的逻辑组织 一维地址结构(传统方式) 二维地址结构(代码段、数据段、栈 段、特别段+段内便宜地址) 19 7.2.4 内存分配 在多道程序设计的环境中,内存分配的功能包括:制定分 配策略、构造分配用的数据结构、响应系统的内存分配的请 求和回收系统释放的内存区。内存管理策略有三种: 1、放置策略 决定内存中放置信息的区域(或位置),即如何在
10、若干个空 闲区中选择一个或几个空闲区的原则; 2、调入策略 决定信息装入内存的时机,有两种:在用户请求时调入,称 为请调;根据某种算法,确定系统将要使用的信息,并在执 行前预先调入内存,称为预调 ; 3、淘汰策略 当内存不足时,决定将某些信息调出内存的策略 。 20 7.2.5 存储保护 在多道程序设计的环境下,系统中有系统程序和多 个用户程序同时存在,如何保证用户程序不破坏系统 程序,用户程序之间不相互干扰?这就是存储保护所 要解决的问题。 常用的存储保护有两种。 上、下界保护; 基址、限长寄存器保护; 21 7.2.5 存储保护 1.上下界保护 下界寄存器:存放程序装入内存后的开始地址(首
11、址) 上界寄存器:存放程序装入内存后的末地址 判别式:下界寄存器 物理地址 上界寄存器 22 7.2.5 存储保护 1.上下界保护 例:有一程序装入内存的首地址是500,末地址是1500, 访问内存的逻辑地址是500、345、1000。 下界寄存器:500 上界寄存器:1500 逻辑地址装入内存的首地 物理地址 1、500500 1000 500 1000 1500 2、345500 845 500 845 1500 3、1000500 1500 500 1500 1500 23 7.2.5 存储保护 2.基址、限长寄存器保护 例:有一程序装入内存的首地址是500,末地址是1500, 访问内存
12、的逻辑地址是500、345、1000。 基址寄存器:500 限长寄存器:1000 判别式:0 逻辑地址 限长寄存器 1、 500 1000 2、 345 1000 3、 1000 1000 24 考点: 在某系统中采用基址、限长寄存器的方法来保护存储信息,判断是否越 界的判别式为( )。 (华中科技大学 2005年) A.0=被访问的逻辑地址限长寄存器的内容 B.0=被访问的逻辑地址=限长寄存器的内容 C.0=被访问的物理地址限长寄存器的内容 D.0=被访问的物理地址=限长寄存器的内容 25 7.2.5 存储保护 3.两种存储保护技术的区别 区别: 1、寄存器的设置不同; 2、判别式中用的判别
13、条件不同 上下界寄存器保护法用的是物理地址; 基址、限长寄存器保护法用的是程序的逻辑地址; 对于合法的访问地址这两者的效率是相同的,对 不合法的访问地址来说,上下界存储保护浪费的CPU 时间相对来说要多些。 26 7.3 分区存储管理(partition) 7.3.1 概述 分区存储管理是满足多道程序设计的最简单的一种 存储管理方法,它允许多个用户程序同时存在系统内存 中,即共享内存空间。 静态静态(固定固定)分区的方法。分区的方法。 最早期的分区存储管理采用固定分区的方法,把内 存空间分成若干个大小不等的区域,称为分区。每个用 户程序(作业、进程)调入内存后,占用其中一个分区 ,程序运行完成
14、后释放该分区。这种存储管理的方法的 主要问题是内存使用效率极低,很快就被淘汰了。 27 7.3 分区存储管理 7.3.1 概述 动态分区存储管理技术动态分区存储管理技术 系统生成后,操作系统占用内存的一部分,一般在物理 内存的开始处,比如,一个操作系统占20KB,装入系统 后占用020KB的内存空间,剩下的部分作为一个空闲区 ,当一个用户程序(作业、进程)调入内存时,把这个空 闲区的低地址部分的区域分配给它,如图所示。 28 7.3 分区存储管理 7.3.1 概述 当有作业完成后释放所占用的存储区。 在系统运行的 过程中,系统中形成多个空闲的不连续的存储区。 29 7.3 分区存储管理 7.3
15、.1 概述 分区存储管理技术的实现: 地址映射 动态存储管理的机构(数据结构) 分区的分配和回收 三种基本的放置策略 30 7.3 分区存储管理 7.3.2 用基地址寄存器实现动态地址映射 在这种存储管理技术中,系现设置一个专用寄 存器,称为基地址寄存器,当一个进程(或程序 、作业)被调度运行时,系统首先从PCB中取出 该进程的首地址装入基地址寄存器中,在该进程 运行的过程中实现动态地址映射。 31 7.3 分区存储管理 7.3.3 分区分配机构 分区存储管理使用的数据结构主要是空闲区 表、空闲区队列两种。其形式如图所示。 分区描述器 32 7.3 分区存储管理 7.3.3 分区分配机构 等待
16、队列指针 空闲区队列指针 分配程序入口 资源信息块 pcb1pcb2pcbn . . . . . . pd1pd2pdn . 33 7.3 分区存储管理 7.3.4 分区的分配与回收 内存分配程序包括分配一个内存块(分区)和释放内存分配程序包括分配一个内存块(分区)和释放 一个内存块(分区)两个函数,当进程需要一个大小一个内存块(分区)两个函数,当进程需要一个大小 为为size的内存时,可以通过系统调用向系统申请。的内存时,可以通过系统调用向系统申请。 调用形式:调用形式:request(size) 返回:成功为分区的首地址,失败为返回:成功为分区的首地址,失败为0。 进程释放一个分区时,调用
17、:进程释放一个分区时,调用: release(释放区首地址)释放区首地址) 返回:无返回:无 34 7.3 分区存储管理 7.3.4 分区的分配与回收 一、分配算法 教材上的p167 的分配算法是以空闲内存队列的数据结 构进行分配。介绍空闲区表数据结构的分配算法。 注: 1、分配算法中切割空闲区是从低地址开始的,例如,一 个空闲区大小是100KB,首址是230KB,一申请者要 求80KB,分配时将从230KB开始的80KB分配给申请者 ,剩下的部分仍作为一个空闲区,其首址是310KB, 大小是20KB。 2、门限值是切割空闲区后剩下的区域若小于门限值,就 不切割该空闲区,统统分给申请者。 35
18、 7.3 分区存储管理 7.3.4 分区的分配与回收 36 7.3 分区存储管理 7.3.4 分区的分配与回收 二、回收算法 当一个进程(或程序)释放某内存区时,要调用存 储区释放算法release,它将首先检查释放区是否与空闲 区表(队列)中的其它空闲区相邻,若相邻则合并成 一个空闲区,否则,将释放为一个空闲区插入空闲区 表(或队列)中的适当位置。 空闲释放区与空闲区相邻有四种情况。 试用C语言写出动态分区的回收算法。 37 7.3 分区存储管理 7.3.4 分区的分配与回收 A、将r合并到f1:f1.addr不变; f1.size=f1.size+r.size B、将r合并到f2:f2.a
19、ddr=r.addr; f2.size =f2.size+r.size C、f1、r、f2 合并到f1, f1.addr: f1.size =f1.size+r.size+f2.size; 撤消f2空闲区; D、r作为一个空闲区,并插入到空闲区表的适当位置。 38 7.3 分区存储管理 7.3.5 几种放置策略 分区分配和回收是对空闲区表(或空闲区队列)数 据结构进行操作,空闲区表的组织有两种方法: 1、按空闲区大小的升序(降序)组织; 2、按空闲区首址升序(降序)组织。 根据空闲区表组织的方法的不同,有不同的放置策略 ,它们是: 最佳适应算法; 首次适应算法; 最坏适应算法; 39 7.3
20、分区存储管理 7.3.5 几种放置策略 一、首次适应算法 首次适应算法的表是按空闲区首址升序的(即空闲 区表是按空闲区首址从小到大)方法组织的。 40 7.3 分区存储管理 7.3.5 几种放置策略 一、首次适应算法 分配时从表首开始,以请求内存区的大小逐个与空 闲区进行比较,找到第一个满足要求的空闲后,若空 闲区大小与请求区的大小相等,则将该空闲区分配给 请求者,并撤消该空闲区所在表目;若大于请求区, 就将该空闲区的一部分分配给请求者,然后,修改空 闲区的大小和首址。 41 7.3 分区存储管理 7.3.5 几种放置策略 切割空闲区有两种方法: 从空闲区头开始 从空闲区尾开始 空闲区大小50
21、KB,首址156KB,申请34KB。 一、首次适应算法 42 7.3 分区存储管理 7.3.5 几种放置策略 这种算法的实质是尽可能地利用低地址部分的空闲区 ,而尽量地保证高地址部分的大空闲区,使其不被切 削成小的区,其目的是保证在以后有大的作业到来时 有足够大的空闲区来满足请求者。 回收时,首先考察释放区是否与系统中的某个空闲区 相邻,若相邻则合并成一个空闲区,否则,将释放区 作为一个空闲区按首址升序的规则插入到空闲区表适 当的位置。 一、首次适应算法 43 7.3 分区存储管理 7.3.5 几种放置策略 二、最佳适应算法 最佳适应算法是将申请者放入与其大小最接近的空闲 区中。切割后的空闲区
22、最小,若系统中有与申请区大 小相等的空闲区,这种算法肯定能将这种空闲区分配 给申请者。(首次适应法则不一定)。 44 7.3 分区存储管理 7.3.5 几种放置策略 最佳适应算法的空闲区表按空闲区大小升序方法组织。 分配时,按申请的大小逐个与空闲区大小进行比较,找到一 个满足要求的空闲区,就说明它是最适合的(即最佳的)。 这种算法最大的缺点是分割后的空闲区将会很小,直至无法 使用,而造成浪费。 二、最佳适应算法 45 7.3 分区存储管理 7.3.5 几种放置策略 三、最坏适应算法 为了克服最佳适应算法把空闲区切割得太小的缺点 ,人们提出了一种最坏适应算法,即每次分配时,总 是将最大的空闲区切
23、去一部分分配给请求者,其依据 是当一个很大的空闲区被切割了一部分后可能仍是一 个较大的空闲区。避免了空闲区越分越小的问题。 46 7.3 分区存储管理 7.3.5 几种放置策略 最坏适应算法的空闲区表是按空闲区大小降序的方法组织的(从大 到小的顺序)。 分配时总是取表中的第一个表目,若不能满足申请者的要求,则表 示系统中无满足要求的空闲区,分配失败;否则,将从该空闲区中 分配给申请者,然后修改空闲区的大小,并将它插入到空闲区表的 适当位置。 三、最坏适应算法 47 7.3 分区存储管理 7.3.5 几种放置策略 这三种放置算法的优劣很难区分,要具体情况具体分析。 例如:某时刻系统中有三个空闲区
24、其大小和首址为: (35KB,100KB)、(12KB,156KB)、(28KB,200KB) 有一作业系列: (JOB1,12KB)、(JOB2,30KB)、(JOB3,28KB) 48 7.3 分区存储管理 7.3.5 几种放置策略 49 优点: 简单,容易实现。 缺点: (1)固定分区面临严重的“外零头”问题,主存浪费严重 ; (2)动态分区面临“外零头”的拼接问题,系统开销过大 ; 7.3 分区存储管理 7.3.6 分区存储的优缺点 50 7.4 页式存储管理(page) 7.4.1 页式系统应解决的问题 一、问题的提出 分区存储管理的主要问题是碎片问题。 在采用分区存储管理的系统中,
25、会形成一些非常小 的分区,最终这些非常小的分区不能被系统中的任何 用户(程序)利用而浪费。 造成这样问题的主要原因是用户程序装入内存时是 整体装入的,为解决这个问题,提出了分页存储管理 技术。 51 7.4 页式存储管理 7.4.1 页式系统应解决的问题 二、分页的概念 程序地址空间分成大 小相等的页面,同时把 内存也分成与页面大小 相等的块,当一个用户 程序装入内存时,以页 面为单位进行分配。页 面的大小是为2n ,通常为 1KB,2KB,nKB等。 52 7.4 页式存储管理 7.4.1 页式系统应解决的问题 页式存储管理要解决如下问题: 1、页式存储管理系统的地址映射; 2、调入策略;
26、3、淘汰策略; 4、放置策略。 53 7.4 页式存储管理 7.4.2 页式地址变换 一、页表 页表是页式存储管理的数据结构,它包括用户程序空 间的页面与内存块的对应关系、页面的存储保护和存 取控制方面的信息。 页号 内存块号 存取控制 状态 其它 在实际的系统中,为了节省存储空间,在页表中可以省 去页号这个表目。 54 7.4 页式存储管理 7.4.2 页式地址变换 55 7.4 页式存储管理 7.4.2 页式地址变换 二、虚地址结构 虚地址是用户程序中的逻辑地址,它包括页号和页 内地址(页内位移)。 区分页号和页内地址的依椐是页的大小,页内地址 占虚地址的低位部分,页号占虚地址的高位部分。
27、 假定页面大小1024字节,虚地址共占用2个字节(16位) 页号 页内地址(位移量) P W 15 10 9 0 56 7.4 页式存储管理 7.4.2 页式地址变换 二、虚地址结构 57 7.4 页式存储管理 7.4.2 页式地址变换 三、页式地址映射 58 7.4 页式存储管理 7.4.2 页式地址变换 1. 虚地址(逻辑地址、程序地址)以十六进制、八进制 、二进制的形式给出 将虚地址转换成二进制的数; 按页的大小分离出页号和位移量; 根据题意产生页表; 将位移量直接复制到内存地址寄存器的低位部分; 以页号查页表,得到对应页装入内存的块号,并将块 号转换成二进制数填入地址寄存器的高位部分,
28、从而 形成内存地址。 三、页式地址映射 59 7.4 页式存储管理 7.4.2 页式地址变换 2.虚地址以十进制数给出 页号虚地址页大小; 位移量虚地址 mod 页大小; 根据题意产生页表; 以页号查页表,得到对应页装入内存的块号; 内存地址块号页大小位移量; 三、页式地址映射 60 7.4 页式存储管理 7.4.2 页式地址变换 例1:有一系统采用页式存储管理, 有一作业大小是8KB,页大小为2KB, 依次装入内存的第7、9、A、5块,试 将虚地址0AFEH,1ADDH转换成内存地 址。 虚地址0AFEH 0000 1010 1111 1110 P1 W010 1111 1110 MR010
29、0 1010 1111 1110 4AFEH 三、页式地址映射 61 7.4 页式存储管理 7.4.2 页式地址变换 (1)虚地址1ADDH 00011 01011011101 P00011 ,W01011011101 (2)查页表MR00101 00101 010110111012ADDH 三、页式地址映射 62 7.4 页式存储管理 7.4.2 页式地址变换 例2:有一系统采用页式存储管理,有一作业大小是8KB ,页大小为2KB,依次装入内存的第7、9、10、5块, 试将虚地址7145,3412转换成内存地址。 三、页式地址映射 63 7.4 页式存储管理 7.4.2 页式地址变换 (1)
30、虚地址 3412 P3412 20481 W3412 mod 20481364 (2)查表1页对应块号为9 MR=9*2048+1364=19796 虚地址3412的内存地址 是:19796 三、页式地址映射 64 7.4 页式存储管理 7.4.2 页式地址变换 虚地址 7145 P7145 2048 3 W7145 mod 2048 1001 MR=5*2048+1001=11241 虚地址7145的内存地址是: 11241 三、页式地址映射 65 7.4 页式存储管理 7.4.2 页式地址变换 在页式存储技术中,我们可看到每访问一次内存, 就要做两次访问内存的工作,即查页表时要作一次访 问
31、内存的工作,然后是访问程序要求访问的内存,这 样,存取速度降低一倍,将会影响整个系统的使用效 率。在早期的计算机系统中有的采用联想存储器的技 术来加快查表的速度,有的采用寄存器做页表。 四、采用相应技术加快页表的查询速度 66 7.4 页式存储管理 7.4.2 页式地址变换 采用寄存器做页表的典型是早期的UNIX系统(PDP 11系列计算机上)中,地址映射机构中就有两套页 表机构,叫做页地址映射寄存器组,一套用于核心态 ,另一套用于用户态。每组有8对寄存器,每对寄存器 中有一个地址寄存器和一个说明寄存器,地址寄存器 中存放相应页在内存的首地址,说明寄存器中存放对 应页的大小,访问方式,存储保护
32、等方面的信息。 四、采用相应技术加快页表的查询速度 67 7.4 页式存储管理 7.4.3 请调策略 一、请求分页概念一、请求分页概念 请求分页技术当一个用户程序要调入内存时,不 是将该程序全部装入内存,而是只装入部分页到内存 ,就可启动程序运行,在运行的过程中,如果发现要 运行的程序或要访问数据不在内存,则向系统发出缺 页中断请求,系统在处理这个中断时,将在外存相应 的页调入内存,该程序继续运行。 68 7.4 页式存储管理 7.4.3 请调策略 二、请求分页要解决的问题二、请求分页要解决的问题 采用这种技术要解决以下问题: 1、如何发现执行的程序或访问的数据不在内存; 2、程序或数据什么时
33、候调入内存,调入策略; 3、当一些页调入内存时,内存没有空闲内存时,将淘汰 哪些页,淘汰策略。 69 7.4 页式存储管理 7.4.3 请调策略 三、数据结构三、数据结构 为了实现请求分页技术,页表应增加相应的内容,反映该页是否 在内存,在外存的位置,在内存的时间的长短等。 中断位:中断位:0 表示该页在内存,1表示该页不在内存。 引用位:引用位:0 表示最近没有进程访问,1表示最近有进程访问。 修改位:修改位:0 该页调入内存后没有修改,1表示页调入内存后修改过。 70 7.4 页式存储管理 7.4.3 请调策略 三、数据结构三、数据结构 71 7.4 页式存储管理 7.4.3 请调策略 1
34、、预调 系统根据作业(进程)运行的情况,预测哪些页将 要运行,在其运行之前先行调入内存,这样在程序运 行的过程中就不会出现缺页中断。这样方法从表面上 看起来很好,但系统无法预计系统中作业的运行情况 ,难以实现。 2、请调 程在执行的过程中,发现要执行的程序或处理的 数据不在内存,向系统提出调入相应程序的请求,系 统响应用户的请求。 72 7.4 页式存储管理 7.4.4 淘汰策略 置换算法 假定程序p共有n页,而系统分配给它的内 存只有m块(1mn),当要索取一页面并送 入到全满的内存中时,必须把已在内存中的某 一页淘汰掉。用来选择淘汰哪一页的规则叫做 置换算法。 73 最佳置换算法最佳置换算
35、法OPTOPT 先进先出置换算法先进先出置换算法FIFOFIFO 最久未使用置换算法最久未使用置换算法LRULRU 7.4 页式存储管理 7.4.5 几种置换算法 74 7.4 页式存储管理 7.4.5 几种置换算法 一、最佳算法一、最佳算法OPT(optimal replacement algorithm)OPT(optimal replacement algorithm) 最佳算法:当要调入一新页而必须淘汰一旧页时,所淘 汰的页是以后不再使用的,或者是以后相当长的时间 内不会使用的。 这种算法是不可能的。 原因? 75 例:一个程序共有5个页面,分别为P1P5。对应进程固定占 用3块物理内
36、存,程序执行过程中依此用到的页面为: P1,P2,P1,P5,P4,P1,P3,P4,P2,P4。 P1P2P1P5P4P1P3P4P2P4 111111*3*3*33 2222*22222 5*444444 调入 调入 命中 调入替换 命中 替换 命中 命中 命中 OPT算法实际命中次数为5次。 7.4 页式存储管理 7.4.5 几种置换算法 76 7.4 页式存储管理 7.4.5 几种置换算法 二、先进先出算法二、先进先出算法FIFOFIFO 先进入内存的页,先退出内存。 实质上是淘汰在内存驻留时间最长的页。 其理由是:最早调入内存的页,不再被使用的可能性比近期 调入内存的大。 这种算法简
37、单,实现容易。 77 7.4 页式存储管理 7.4.5 几种置换算法 P1P2P1P5P4P1P3P4P2P4 1111*444*4*22 2222*1111*4 555*3333* 调入 调入 命中 调入替换 替换 替换 命中 替换 替换 FIFO算法实际命中次数为2次。 78 7.4 页式存储管理 7.4.5 几种置换算法 三、最久未使用淘汰算法三、最久未使用淘汰算法LRU(Least Rcently used algorithm)LRU(Least Rcently used algorithm) 这种算法的实质:当需要淘汰一页时,选择最长时 间未使用的页。 依据的理论是如果某页被访问,它
38、可能马上还要被 访问;相反,如果某页长时间未被访问,它可能最近 也不可能被访问。 NRU(Not Rcently used)-NRU(Not Rcently used)-最近不用最近不用 UNIX UNIX 页表访问位页表访问位 79 7.4 页式存储管理 7.4.5 几种置换算法 P1P2P1P5P4P1P3P4P2P4 11111*111*22 222*444*444 555*333*3* 调入 调入 命中 调入替换 命中 替换 命中 替换 命中 LRU算法实际命中次数为4次。 80 其他置换算法:其他置换算法: 随机算法随机算法RAND(random algorithm)RAND(ran
39、dom algorithm) 最不经常使用算法最不经常使用算法LFULFU(least frequently least frequently used algorithm)used algorithm) 7.4 页式存储管理 7.4.5 几种置换算法 颠簸(不恰当的置换算法造成的频繁的页面置换) 81 7.4 页式存储管理 7.4.5 几种置换算法 OPT算法(最佳置换算法)和其它算法之间的关系: 1、OPT 算法无疑是效率最高的,但由于其要求知道程序将来的 执行情况,所以几乎是不能实现的。 2、其它算法都是根据历史去推测将来。算法的效率取决于推测 的准确性。比如,在前面的例子中, OPT算
40、法实际命中次数为5次 FIFO算法实际命中次数为2次 LRU算法实际命中次数为4次 LRU算法的效率高于FIFO算法,普遍情况也是如此。 82 7.4 页式存储管理 7.4.6 页式系统的存储保护 页式系统的存储保护的方法类似于基址限长存储保 护,当地址映射机构分离出页号和页内位移后。 若0页号用户程序的总页数,则访问合法,否则 访问越界。 页式系统的存储保护还包括存取控制。 在页表中增加存取控制位,表示该页的存取控制权 限,如r表示可读,w表示可读可写,e表示可执行。 当有一程序访问该页时,系统就按存取控制位设置 的权限实施存取控制。 83 7.4 页式存储管理 7.4.7 页式系统的优缺点
41、 优点: (1)可提供大容量的多个虚存; (2)更有效地利用了物理主存; (3)多道程序运行的程度更高了; (4)更加方便了用户,特别大作业用户; 缺点: (1)采用动态地址变换机构,增加了计算机的成本,降低了处理机的 速度; (2)必须以部分存储空间来存放各种表格,且需要花费一部分处理机 时间来建立和管理这些表; (3)虽然分区间的零头问题消除了,但是出现了块内的零头问题。 (4)纯分页系统仍然需要全部装入主存。 (5)在请求页式系统中,为处理页面中断增加了系统开销。 84 7.5 段式系统(segment) 一个用户程序往往由几个程 序段(主程序、子程序和函数 )所组成,当一个程序装入内
42、存时,按段进行分配,每个段 的大小是不相等的。 程序地址的组成:S:W 例: S1 :XXXX S2 :XXXX S3 :XXXX 85 7.5 段式系统 保护位段号S段长L中断I引用位改变位RWEA段首址b 扩充段表 86 7.5 段式系统 优点: (1)便于程序模块化处理; (2)便于处理变化的数据结构; (3)便于动态链接动态链接; (4)便于共享分段共享分段; (5)便于实现多段式虚拟存储,“扩充”主存容量; 缺点: (1)和页式系统一样,处理机要为地址变换花费时间,给中表格需要 附加存储,使操作系统复杂化; (2)为了满足分段的动态增长和减少外零头,需要采用拼接手段; (3)在辅存中
43、管理不定长度的分段困难较多; (4)分段的最大尺寸受到主存可用空间的限制。 段式系统的优缺点 87 7.6段页式系统 段页式系统:在段式系统中,若段内分页,称为段页式系统。 88 7.6 UNIX系统存储管理 7.6.1 概述 UNIX系统的早期版本采用纯分页存储管理,进程的存 储映象可以在内存和交换区之间传递,称为对换。 在目前的一些UNIX系统中,采用请求分页存储管理, 也就是采用虚拟存储技术,称为请求调页。 UNIX SYSTEM 采用请求调页(请求分页)。以后 的UNIX系统的各种版本均采用了请求调页技术。逻辑地 址分区(segment,section),因此实际是典型的段页式存储管
44、理。 89 7.6.2 对换空间的管理 系统盘的结构: 7.6 UNIX系统存储管理 90 7.6.2 对换空间的管理 对换存储管理的数据结构 系统设置了两个相同的结构: coremap 内存空闲区表 swapmap 对换区空闲区表 空闲区的分配采用最佳适应法。 程序是:malloc(map,size) 空闲区回收程序: mfree(map,size,aa) map:内存(或对换区);size:大小 ; aa:释放区首址 空闲区首址空闲区大小 123 50 300 150 0 0 7.6 UNIX系统存储管理 91 7.6 UNIX系统存储管理 7.6.3 对换进程 对换进程就是0号进程, 它
45、一个永远处于核心态的 进程。其任务是将进程的 映象在内存和对换区之间 传递。 92 7.6 UNIX系统存储管理 7.6.3 对换进程 (一)进程换入 当内存空闲时,0号进程将对换区中处于就绪状态 的进程的映象调入内存,直到内存满,或者是对换区 中已经没有处于就绪状态的进程。 调入就绪进程的依据是进程在对换区中驻留的时 间,每次调入一个在对换区中驻留时间最长的进程映 象进入内存。 93 7.6 UNIX系统存储管理 7.6.3 对换进程 (二)进程换出 当内存空间不足时,0号进程将内存中的某些进程换 到对换区。 不能换出的进程是核心态的进程(UNIX核心)、处 于创建状态的进程、上锁的进程,在
46、内存中驻留时间 不足两分钞钟的就绪进程。 换出的顺序是:处于睡眠状态的进程、暂停状态的 进程。 若无以上这两类进程,就是处于就绪状态的进程。 按就绪状态的进程在内存中驻留时间从长到短的顺 序依次调出内存,直到内存中无进程可调出为止。 94 7.6 UNIX系统存储管理 7.6.4 请求调页数据结构 进程映象的结构: U区、正文区、数据区、用户栈区。 其中U区的大小是固定的,其它的各区的大小不是固定的。 Page103,105 95 7.6 UNIX系统存储管理 7.6.4 请求调页数据结构 96 7.6 UNIX系统存储管理 7.6.4 请求调页数据结构 (一)进程区表 在UNIX syste
47、m 中,一个进程可以有正文区、数据 区、用户栈区和U区。其中U区只有处于运行状态的进 程才有,其它状态的进程没有U区。每个区又分成若干 个页。所以,每个区有一个页表。 97 7.6 UNIX系统存储管理 7.6.4 请求调页数据结构 (二)页和页表 将用户的程序空间分成大小相等的单位,称为页。 并把内存空间也分成与之相等的块。页的大小为512字 节。刚好与磁盘的物理块大小相等。 页表的格式如下: 98 7.6 UNIX系统存储管理 7.6.4 请求调页数据结构 块号:内存块号 年龄:该块在工作集中驻留的时间 修改:表示该页调入内存后修改过,置1,否则为0; 访问:该页调入内存后,被访问过; 有
48、效:为1表示该页在内存,否则不在内存; 保护:该页的存储保护信息; 对换设备:指明对换设备; 磁盘块号:该页在对换设备上的磁盘物理块号。 进程频繁访问的页面集合 99 7.6 UNIX系统存储管理 7.6.5 页地址映射 pw 31 10 9 0 6843210=000000000000000100001011010100002 UNIX虚地址结构: 100 7.6 UNIX系统存储管理 7.6.6 页面错(缺页中断) 在在UNIX系统中产生页面错有两种情况:系统中产生页面错有两种情况: 1.进程企图访问虚存空间范围之外的页面,即段违例,在这 种情况下,核心向违例的进程发送一个“段违例”的软
49、中断。(这是一般操作系统中页面错的处理方法)。 2.进程企图访问一个有效位为0的页(该页不在内存),这 时将产生一个有效位错的中断(类似于一般OS中的缺页 中断)。核心处理该中断时,将所缺的页面调入内存。 101 7.6 UNIX系统存储管理 7.6.6 页面错(缺页中断) 偷页(页面淘汰)进程 当有进程需要调入一些页面时,又没有内存空间时, 核心将按某种策略将系统中的一些页面调出内存,在一 般的OS中称为页面淘汰,在UNIX中称为偷页。 1.选择淘汰的页; 2.选中了淘汰页后,执行淘汰,若修改位为1,表示该页调 入内存后已经修改,淘汰时,要将要淘汰的页面写到相 应的磁盘块。若修改位为0,表示
50、该页面调入内存后没 有修改过,只是把该页置为空。 102 典型习题: (1)存储器管理的主要功能有主存储器的分配和管理、地址映射、 ( )和( )。(电子科技大学 2005年) (2)在某系统中采用基址、限长寄存器的方法来保护存储信息,判断是 否越界的判别式为( )。 (华中科技大学 2005年) A.0=被访问的逻辑地址限长寄存器的内容 B.0=被访问的逻辑地址=限长寄存器的内容 C.0=被访问的物理地址限长寄存器的内容 D.0=被访问的物理地址=限长寄存器的内容 (3)一个虚拟存储器系统中,设主存的容量是16MB,辅存的容量是1GB, 而地址寄存器的位数为32位。在这样的系统中,虚存的最大容量是(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 等式性质说课课件
- 心理技能全套课件资源
- 心理学意识基础知识课件
- 抽成合同协议书范本
- 童诗白模拟电子技术课件
- 建设工程维修协议书范本
- 几方安全协议书范本
- 牛奶合作合同协议书范本
- 个人转让协议书范本大全
- 2025年娱乐、游览用船舶项目发展计划
- 2025年电子信息技术考试试题及答案解析
- GB/T 17642-2025土工合成材料非织造布复合土工膜
- 2025年中国瓷质艺术砖数据监测报告
- 《痕迹检验技术》课件
- 光纤通信-08-光波分复用课件
- CCF全国青少年信息学奥林匹克联赛NOIP 2024真题
- 宠物临床检查技术 课件 3临床六大基本检查方法
- 新高考背景下高中实验班拔尖创新人才培养的实践与探索
- 全国典型案例专利撰写指南
- 火电厂安全知识培训课件
- 预防住院患者非计划性拔管的集束化护理措施课件
评论
0/150
提交评论