版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2015年 操作系统 2012级1第5章 存储管理 本章学习目标及主要内容 5.0 存储器5.1 存储管理的功能5.2 分区存储管理 5.3 覆盖与交换技术 5.4 页式管理 5.5 段式管理5.6 段页式管理5.7 局部原理与抖动问题本章小结开 始2015年 操作系统 2012级2本章学习目标 本章首先介绍了存储管理的研究对象和目的,明确了存储管理的基本功能和有关的基本概念;然后从实存和虚存两个角度,分别介绍了常用的几种存储管理方案;最后对各种存储管理方案存在的问题,主要是碎片和抖动问题进行了总结。 下一页2015年 操作系统 2012级3本章的主要内容如下:(1)存储管理的目的和四大基本功
2、能。 (2)实存管理中讲述了固定分区存储管理、可变式分区存储管理、纯分页存储管理三种存储管理方案的实现原理(3)虚存管理以请求式分页存储管理为重点 (4)总结各种存储管理方案中存在的碎片和抖动问题及解决方法返回本章首页2015年 操作系统 2012级4一存储器1存储器 存储器主存 (内部存储器,磁芯存 储器)辅存 (外存)磁盘、磁鼓、 磁带、 软盘2015年 操作系统 2012级5 主存 系统区 (OS标准子程序) 用户区 (用户程序、数据)2015年 操作系统 2012级6图5.1 多级存储器体系示意图2主存储器的物理组织,多级存储器返回本章首页2015年 操作系统 2012级75.1 存储
3、管理的功能 5.1.1 内存的分配与回收 5.1.2 地址重定位5.1.3 存储保护 5.1.4 虚拟存储器 返回本章首页2015年 操作系统 2012级85.1.1 内存的分配与回收 内存分配按分配时机的不同,可分为两种方式。(1)静态存储分配:指内存分配是在作业运行之前各目标模块连接后,把整个作业一次性全部装入内存,并在作业的整个运行过程中,不允许作业再申请其他内存,或在内存中移动位置。也就是说,内存分配是在作业运行前一次性完成的。(2)动态存储分配:作业要求的基本内存空间是在目标模块装入内存时分配的,但在作业运行过程中,允许作业申请附加的内存空间,或是在内存中移动,即分配工作可以在作业运
4、行前及运行过程中逐步完成。返回本节2015年 操作系统 2012级95.1.2 地址重定位 1内存空间(或物理空间)2逻辑空间3地址重定位4 主存空间的共享5 主存空间的扩充下一页2015年 操作系统 2012级101内存空间(或物理空间)地址空间一个目标程序所限定的地址范围 内存是由若干个存储单元组成的,每个存储单元有一个编号,这种编号可唯一标识一个存储单元,称为内存地址(或物理地址)。下一页2015年 操作系统 2012级112逻辑空间源程序经过汇编或编译后,形成目标程序,每个目标程序都是以0为基址顺序进行编址的,原来用符号名访问的单元用具体的数据单元号取代。这样生成的目标程序占据一定的地
5、址空间,称为作业的逻辑地址空间,简称逻辑空间。在逻辑空间中每条指令的地址和指令中要访问的操作数地址统称为逻辑地址。下一页2015年 操作系统 2012级12逻辑地址(相对地址)程序用来访问信息 所用的一系列的地址单元。物理地址(绝对地址)主存中一系列存储 物理单元。 地址空间是逻辑地址的集合。存储空间是物理地址的集合。一个是虚的概念,一个是实的物体。下一页2015年 操作系统 2012级13图5.2 作业的名空间、逻辑地址空间和装入后的物理空间下一页2015年 操作系统 2012级14 当一个地址装入与其地址空间不一致的存储空间中,就得要地址变换。也就是说将虚地址映射为内存地址,把这种作法叫做
6、地址重定位 (1)静态地址重定位 在装入一个作业时,把作业中的指令地址全部转换位绝对地址(地址转换工作是在作业执行前集中一次完成的)在作业执行过程中就无须再进行地址转换工作。 3地址重定位2015年 操作系统 2012级15 2动态地址重定位:动态地址重地位是在程序执行过程中,在cpu访问内存之前,将要访问的程序或数据地址转换成内存地址. 动态重定位依靠硬件地址变换机构完成 Load A500 123455001000 Load A500 12345+虚拟空间 内存空间 VR BR.2015年 操作系统 2012级16 地址重定位机构需要一个或多个基地址寄存器BR和一
7、个或多个程序虚地址寄存器VR。指令或数据的内存地址MA与虚地址的关系为:MA=(BR)+(VR) 其中,(x)表示寄存器x中的内容2015年 操作系统 2012级17(b)采用动态重定位时内存空间及地址重定位示意图 (a)采用静态重定位后的内存空间 图5.3 静态地址重定位和动态地址重定位示意图2015年 操作系统 2012级18 4主存空间的共享 在多道程序设计的系统中,同时进入主存储器执行的作业可能要调用同的程序。例如,调用编译程序进行编译,把这个编译程序存放在某个区域中,各作业要调用时就访问这个区域,因此这个区域就是共享的。同样也可实现公共数据的公享。 5 主存空间的扩充 提供虚拟存储器
8、,使用户编制程序时不必考虑主存储器的实际容量,使计算机系统似乎有一个比实际主存储器容量大得多的主存空间。返回本节2015年 操作系统 2012级195.1.3 存储保护 (1)上、下界存储保护:上、下界保护是一种简单的存储保护技术。系统可为每个作业设置一对上、下界寄存器,分别用来存放当前运行作业在内存空间的上、下边界地址,用它们来限制用户程序的活动范围。 (2)基址限长存储保护:上、下界保护的一个变种是采用基址限长存储保护。 2015年 操作系统 2012级20图5.4 界限寄存器的两种存储保护方式返回本节2015年 操作系统 2012级21 什么是虚拟存储器? 虚拟存储器是一种存储管理技术,
9、用以完成用小的内存实现在大的虚拟空间中程序的运行工作。 为了给大作业用户提供方便,使它们摆脱对主存和辅存的分配和管理问题,由操作系统把多级存储器统一管理起来,实现自动覆盖。即一个大作业在执行时, 其一部分地址空间在主存,另一部分在辅存,当访问的信息不在主存时,就从外存中自动调入主存.因此,从效果来看,这样的系统,好象用户提供了存储容量比实际主存大得多的存储器,人们称这个为虚拟存储器。之所以称它为虚拟存储器,因为这样的存储器实际上并不存在而只是系统增加自动覆盖功能,给用户造成的一种幻觉,仿佛它有一个很大的主存供它使用。这是虚拟存储器的最初概念。5.1.4 虚拟存储器 2015年 操作系统 201
10、2级22 这种想法的核心,实质上也就是把作业的地址空间和实际主存的存储空间似为两个不同的概念.一个计算机系统算题人员提供了一个多大的地址空间,它就所在这个地址空间编制程序,而完全用不着考虑实际主存的大小.换句话说, 虚拟存储器就是一个地址空间.一个虚存储器的最大容量是由计算机的地址结构确定的.若CPU给出的有效地址长度为18位,可以寻址范围为:0-256k;若地址的长度为为20位,则寻址范围为:1024k. 实际虚拟存储器其一是要相当容量的辅存,足以存放所有并列作业的地址空间.其二是要有一定的主存,因为处理机上运行的作业,必须有一定的信息在主存中.其三是地址变换机构.返回本节2015年 操作系
11、统 2012级235.2 分区存储管理5.2.1 分区管理基本原理5.2.2 分区的分配与回收5.2.3 相关讨论返回本章首页2015年 操作系统 2012级245.2.1 分区管理基本原理 1.固定分区法固定分区把主存分成若干个固定大小的存储区。区号分区长度起始地址状态18K20K已分配232K28K已分配364K60K已分配4132K124K已分配OS20K28K60K124K256K进程A(6K)进程B(25K)进程C(36K)2015年 操作系统 2012级252.动态分区法因为固定分区主存利用率不高,使用起来不灵活,所以出现了可变分区的管理技术。动态分区原则:存储空间的划分是在装作业
12、时进行的。从可用的自由存储空间内,划出一个大小正好等于作业大小的存储区,并分配给这一作业。 进程 A(8K)进程 D(124K)进程 B(16K)进程 C(64K)OS进程A进程B进程C进程DOS进程A进程B进程COS进程A进程BOS进程A2015年 操作系统 2012级26OSA(8K)24K空闲区B(16K)C完成(64K)空闲区D(124K)OSA(8K)8K空闲区B(16K)E(50K)D(124K)14K空闲区F(16K)OSA(8K)8K空闲区空闲区16KE(50K)D(124K)空闲合并124+14=138K进程E(50K)进程F(16K)进入内存进程B(16K)进程D(124K
13、)完成内存分配变化过程2015年 操作系统 2012级27 5.2.2分区的分配与回收1.固定分区时的分配与回收 当用户要程序装入执行时,通过请求表提出内存分配要求和所要求的内存空间大小.到可用空间表中查找,若剩大于等于所请求的空间,就分配,若小于,不要它进入主存。2.动态分区时的分配与回收 对于请求表中要求内存长度,分配程序从可用表和自有链中找出合适的空闲区。 分配空间区之后,更新可用表或自由链。 进程或作业释放内存资源时,和相邻的空间区进行链合并,更新可用表或自由链。2015年 操作系统 2012级28要求Xk大小分区取分区说明表第一项状态位置正在使用取下一表项无法分配该分区空闲?分区长度
14、Xk?表结束?返回分区号否否否是是是固定分区分配算法2015年 操作系统 2012级293. 分配算法 最先适应法:按照某种次序依次检查各个空闲区,把第一个 找到能容纳申请要求的内存区分配给申请者.闲区按地址顺序从小到大登记。(P118.图5.11) 最佳适应算法:按照某一从大到小次序依次检查所有的空间 区,把能容纳申请要求的一个最接近尺寸且大于或等于作业大小的分区给申请的作业。 2015年 操作系统 2012级30最坏适应算法 把空闲区按其大小递减的顺序组成空闲区可用表或自由链,当用户作业或进程申请一个空闲区时,先检查空闲区可用表或自由链的第一个空闲可用区的大小是否大于或等于所要求的内存长度
15、,若可用表或自由链的第一个项所有空闲区长度小于申请的内存长度,则失败,否则从空闲区可用表或自由链分配相应的空间给用户,然后修改和调整空闲区可用表或自有链。2015年 操作系统 2012级31从该空闲区中截取所需大小,修改调整可用表从空闲区表第一表目顺序查找从可用表中移去该表目,调整可用表取下一表项无法分配该 空闲区长度SIZE?该 空闲区长度=SIZE?表目查完?返回分配起始地址否否否是是是最先适应算法2015年 操作系统 2012级32从搜索速度上看:最先适应算法具有最佳性能。从释放速度来看:最先适应算法也是最佳的。从空间利用率来看:最佳适应法找到的空闲区是最佳的,也就是说,用最佳适应法找到
16、的空闲区或者是正好等于用户请求的大小或者是能满足用户要求的最小空闲区。最坏适应算法正是基于不留下碎片空闲区这一出发点的。它选择最大的空闲区来满足用户要求,以期分配后的剩余部分仍能进行再分配。 4. 分配算法的比较2015年 操作系统 2012级331关于虚存的实现利用分区式管理,也同样存在有每个用户可以自由编程的虚拟空间。但分区式管理方式无法实现那种用户进程所需内存容量只受内存和外存容量之和限制的虚拟存储器。事实上,如果不采用内存扩充技术,每个用户进程所需内存容量是受到分区大小限制的。2关于内存扩充由于分区式管理时各用户进程或作业所要求的内存容量受到分区大小的限制,如果不采用内存扩充技术,将会
17、极大地限制分区式管理技术的使用。在分区式管理中,可以使用覆盖或交换技术来扩充内存。5.2.3 相关讨论2015年 操作系统 2012级343关于地址变换和内存保护由于动态分区时分区大小不固定,而且有时因为空闲区的拼接而移动内存中的程序和数据,因此,使用静态地址重定位的方法来完成动态分区时的地址变换是不妥当的。在进行动态地址重定位时每个分区需要一对硬件寄存器的支持,即基址寄存器和限长寄存器,分别用来存放作业或进程在内存分区的起始地址和长度。5.2.3 相关讨论2015年 操作系统 2012级354分区存储管理的优缺点优点:(1)实现了多个作业或进程对内存的共享,有助于多道程序设计,从而提高了系统
18、的资源利用率。(2)该方法要求的硬件支持少,管理算法简单,因而实现容易。缺点:(1)内存利用率仍然不高。和单一连续分配算法一样,存储器中可能含有从未用过的信息。而且,还存在着严重的碎小空闲区(碎片)不能利用的问题,这更进一步影响了内存的利用率。(2)作业或进程的大小受分区大小控制,除非配合采用覆盖和交换技术。(3)难以实现各分区间的信息共享。5.2.3 相关讨论2015年 操作系统 2012级365.3 覆盖与交换技术 5.3.1 覆盖技术 5.3.2 交换技术返回本章首页2015年 操作系统 2012级375.3.1 覆盖技术(1/3) 引入:其目标是在较小的可用内存中运行较大的程序。常用于
19、多道程序系统,与分区存储管理配合使用。原理:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间。将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。2015年 操作系统 2012级385.3.1 覆盖技术 (2/3)2015年 操作系统 2012级39缺点:编程时必须划分程序模块和确定程序模块之间的覆盖关系,增加编程复杂度。从外存装入覆盖文件,以时间延长来换取空间节省。实现:函数库(操作系统对覆盖不得知),或操作系统支持5.3.
20、1 覆盖技术(3/3) 返回本节2015年 操作系统 2012级405.3.2 交换技术(1/2) 引入:多个程序并发执行,可以将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读入保存在外存中而目前到达就绪状态的程序。原理:暂停执行内存中的进程,将整个进程的地址空间保存到外存的交换区中(换出swap out),而将外存中由阻塞变为就绪的进程的地址空间读入到内存中,并将该进程送到就绪队列(换入swap in)。2015年 操作系统 2012级41优点:增加并发运行的程序数目,并且给用户提供适当的响应时间;编写程序时不影响程序结构;缺点:对换入和换出的控制增加处理机开销;程序整
21、个地址空间都进行传送,没有考虑执行过程中地址访问的统计特性。考虑的问题:程序换入时的重定位;减少交换中传送的信息量,特别是对大程序。 5.3.2 交换技术(2/2) 返回本节2015年 操作系统 2012级425.4.1页式管理的基本原理分页存储管理是解决存储零头的一种方法。动态重定位是解决存储器零头问题的一种途径,但要移动大量信息花去不少处理机时间,代价比较高,这是因为这种分配要求把作业必须安置在一连续存储区内的缘故,而分页存储管理正是要避开这种连续性要求。5.4 页式管理2015年 操作系统 2012级431. 分页技术的作法 页把每个作业(进程)虚拟地址空间划分成若干大小相等的片. 页面
22、把主存空间划分成与页相同的片.2. 分页式存储器的逻辑地址 页号和页内地址 地址结构确定了主存储器的分页大小,也决定了页面大小.页号页内地址2015年 操作系统 2012级44 页 号页内地址 5 102532(页)2101024(每页1024字节) 在分配存储空间时,种是以页面为单位来分配. 例如,一个作业的地址空间有M页,那么只需要分配给他M个页面的存储空间,每一页分别装入一个存储页面即可.并不需要这些页面是连续的.以上这些问题需要一个地址映射.2015年 操作系统 2012级455.4.2 静态页面管理1.内存页面分配与回收 (1)页表:由页号和页面号组成, 指出逻辑地址中页号与主存中块
23、号 (页面号)的对应关系 页号作业地址空间的页序号 页面号内存空间的页面序号 页 号页面号页 表2015年 操作系统 2012级46进程号请求页面表页表地址页表长度状态 1 20 1024 20已分 2 34 1044 34已分 3 18 1078 18 已分 4 21 . .未分(2)请求表请求表用来确定作业或进程的虚拟空间的各页在内存中的实际关系.系统必须知道每个作业或进程页表起始地址和长度,以进行内存分配和地址变换.2015年 操作系统 2012级47 (3)存储页面表 一个系统只有一张存储页面表.它指出内存各页面是否被分配,以及未分配页面的总数. 19 18 3 2 1 0 若内存被分
24、配为1024个页面,内存单元长20比特.1024/20=52个单元.描述了1024个页面是否分配.2015年 操作系统 2012级48页面号起始地址 3k 4k. os 空闲表3k2015年 操作系统 2012级492. 分配算法 (P126 5.18)2015年 操作系统 2012级503.地址变换(映射) 物理地址(绝对地址) 虚拟地址(有效逻辑地址)页面号页内地址页号页内地址页表长度页表始址控制寄存器2015年 操作系统 2012级51页表长度页表始址 3 1k2452虚拟地址页号页面号 0 2 1 3 2 8 8452 OS物理地址 86441024*8+452=86442015年 操
25、作系统 2012级525.4.3 动态页式管理 动态页式管理是在分页存储管理基础上发展起来的,指导思想:在作业运行之前,不限定把作业的整个地址空间全部装入主存,而只要求当前需要的一部分装入主存即可。这样,对作业地址空间,当其作业的大小超过主存可用空间时,用户无需考虑覆盖结构,页式存储管理就是实现单段式虚拟存储器的一个具体方案。这个方案可以为每个用户提供一个虚拟存储器。其虚拟空间比主存的空间大。这对编制大型程序来说,带来了很多方便。2015年 操作系统 2012级53 具有这种存储功能的存储系统,一般称它为虚拟存储系统,一个虚拟存储系统可以运行多个虚拟存储器。一个作业的地址空间就存于一个虚拟存储
26、器中。 由于在一个作业投入运行前,并没有把它的整个地址空间装入主存,因此,在作业运行过程中,必然会碰到要访问的虚页不在主存中。怎么发现和如何处理这种这种情况?这是实现请求分页存储管理所要解决的二个基本问题。 虚拟存储器是系统为了满足用户对存储器容量的巨大需求而采取用软件技术虚设的一个很大的存储空间,使用户编制程序不必考虑主存储器的容量。2015年 操作系统 2012级54 动态页式管理分为请求页式管理和预调入式管理。 由于请求也是只让进程或作业的部分程序和数据驻留在内存中,因此,在执行过程中,不可避免地会在内存中虚页以及怎样处理这种情况,是请求页式管理必须解决的两个基本问题。2015年 操作系
27、统 2012级555.4.4请求页式管理中的置换算法 (页式淘汰算法)1.先进先出(FIFO)算法 FIFO:总是淘汰最先进入主存储器的那一页。 FIFO算法容易实现,但是它所依据的理由不是普遍成立的。哪些在内存中驻留很久的页,往往是被经常访问的页,结果这些常用的页都被淘汰调,而可能又需要立即调回内存。 采用FIFO算法还会产生一种奇怪现象,直观上,分配给的作业的实页越多,进程执行时发生的缺页中断率就越小,但对FIFO算法这个结论并不是绝对的在某些情况下,当分配的页面多反而导致更多的缺页中断,这种现象称为FIFO异常现象或称Belady现象。 创建进程时只往内存装入了第0页。2015年 操作系
28、统 2012级56当需要淘汰某一页时,选择在最近一段时间里最久没有被使用过的页淘汰。这种算法,只要在存储分块表(或页表)中设一个“引用位”,当存储分块表中的某一页被访问时,该位由硬件自动置1,并由页面管理软件周期性把所有引用位置0。这样,在一个时间周期T内,某些被访问过的页面其引用位为1,而未被访问过的页面其引用位为0。因此,可根据引用位的状态来判别各页面最近的使用情况。当需要置换一页面时,选择其引用位为0的页,如图所示的算法 。下一页2.最近最久未使用页面置换算法(LRU)2015年 操作系统 2012级57图 LRU近似算法 下一页2015年 操作系统 2012级58A.近似算法(LFU)
29、:当需要淘汰时,应淘汰被访问次数最少的页。一种简单的方法式为每一页设置一个计数器,每当访问一页时,就把该页对应的计数器加一,隔一个周期T,把左右计数器清0,当发生缺页中断时,选择技术值最小的页,可把它淘汰,同时把所有计数器清0。2.最近最久未使用页面置换算法(LRU)2015年 操作系统 2012级59B.最近没有使用页面淘汰算法NUR 需要淘汰某一页时,从那些最近一个时期内未被访问的页中任选一页淘汰。 实现方法:在页内增设一个访问位,当这一页被访问时,硬件把它置成“1”,而没有被访问过的页,访问位为“0”。因此产生缺页中断时,可从那些访问位为0的页中选一页进行淘汰。2015年 操作系统 20
30、12级603最优算法(OPT算法)最理想的页面置换算法是:从内存中移出以后不再使用的页面;如无这样的页面,则选择以后最长时间内不需要访问的页。这就是最优算法的思想。这种算法本身不是一种实际的方法,因为页面访问的顺序是很难预知的。但是,可把它作为一种评价标准,比较其他实用方法的优劣,所以,最优算法只具有理论上的意义。下一页2015年 操作系统 2012级61一种是地址越界保护,另一种是通过页表控制对内存信息的操作方式提供保护.。地址越界保护可由地址变换机构中的控制寄存器的值页表长度和所要访问的虚地址相比较完成。存取控制保护的实现则是在页表增加相应的保护位即可。5.4.5 存储保护 2015年 操
31、作系统 2012级62思考:面对大的页表,地址的映射怎样才能比较快地实现? (1)使用快表:即利用前面我们已介绍的高速缓冲存储器来存放经常使用的页表表目,以提高页表的查询速度。(2)使用高速缓冲存储器:在微处理器和主存之间设置32kb或64kb的高速缓冲存储器,大部分的指令和数据取自高速缓存(命中率为98%),所以存取数据和指令速度相当高,达到与处理器速度完全相匹配。2015年 操作系统 2012级63【例1】主存块数m=3,置换算法采用FIFO算法,缺页中断次数及缺页率如图5.23所示。在图5.23中,P行表示页面走向,M行表示在主存中的页面号,其中带有+的表示新调入页面,在M行的各列按调入
32、的顺序排列,带有圆圈的数字表示下一时刻将被淘汰页面,F行表示是否引起缺页中断,带号的表示引起缺页中断。从图5.23可以看出,缺页中断页数为9次,缺页率f=9/12=75%。2015年 操作系统 2012级64图5.23 FIFO算法性能分析(m=3)2015年 操作系统 2012级65【例2】设m=4,仍采用FIFO算法,缺页中断次数及缺页率如图5.24所示。可以算出,在分配给该作业的内存块数增加到4时,缺页中断由图5.23的9次反而增加到了10次,缺页率由75%增加到10/12=83%,这就是FIFO算法的一种异常现象。随着分配的主存块数的增加,缺页中断次数不但没有降低,反而增加了。这与该算
33、法定全不考虑程序的动态特征有关。2015年 操作系统 2012级66图5.24 FIFO算法性能分析(m=4)2015年 操作系统 2012级67【例3】设m=3,采用LRU算法,缺页中断次数及缺页率如图5.25所示。图5.25 LRU算法性能分析(m=3)2015年 操作系统 2012级68【例4】设m=4,其余同例3,则缺页中断次数及缺页率如图5.26所示。 图5.26 LRU算法性能分析(m=4)2015年 操作系统 2012级69优点:(1)由于它不要求作业或进程的程序段和数据在内存中连续存放,从而有效地解决了碎片问题。(2)动态页式管理提供了内存和外存统一管理的虚存实现方式,使用户可
34、以利用的存储空间大大增加。这既提高了主存的利用率,又有利于组织多道程序执行。总结:页式管理的优缺点2015年 操作系统 2012级70缺点:(1)要求有相应的硬件支持。例如地址变换机构,缺页中断的产生和选择淘汰页面等都要求有相应的硬件支持。这增加了机器成本。(2)增加了系统开销,例如缺页中断处理。(3)请求调页的算法如选择不当,有可能产生抖动现象。 (4)虽然消除了碎片,但每个作业或进程的最后一页内总有一部分空间得不到利用,如果页面较大,则这一部分的损失仍然较大。 总结:页式管理的优缺点返回本章目录2015年 操作系统 2012级71进程地址空间是一维的静态链接问题的提出:页式管理与分区管理的
35、缺陷有没有一种针对程序设计,灵活的存储管理技术呢?2015年 操作系统 2012级72把程序按内容或过程(函数)关系分成有标识的段,每段对应一个二维线性虚拟空间(二维虚拟存储器),以段为单位分配内存(虚拟地址),然后把虚拟地址转换成实际的物理内存地址.问题的解决思路2015年 操作系统 2012级731.作业的逻辑地址空间:分段情况下要求每个作业的地址空间按照程序的自然逻辑关系分成若干段,每个段有自己的段名。子程序数组主程序子程序数组主程序作业A02K00.5k 030002005.5 段式管理2015年 操作系统 2012级742. 段式存储管理的地址结构段号段内地址a: 虚地址段号始址长度
36、存取方式内外访问位b:段表段表每个作业一个,这个段表实施段保护,提供虚存。存取方式读/写、只读、执行。作业名Job1段表始址0段表长度2作业表2015年 操作系统 2012级753.段地址变换 2015年 操作系统 2012级763.段地址变换 2015年 操作系统 2012级77 4.段的共享与保护 在多道程序系统中,尤其在分时系统中,数据共享是很重要的,在分段系统中,共享进程应能访问被共享的段,所以共享的方式使这些共享用户的逻辑空间中的段指向相同的段号,在共享中必须小心处理的一个问题是共享段的保护问题。2015年 操作系统 2012级78段号标志始址. 0执行 218 1读/写 365 2
37、只读 542 共享 主存 共享 数据段号标志始址. 0 执行 218 1只读 542 2读/写 103段的共享2015年 操作系统 2012级79思考:共享段表有什么用途?共享段表的用途主要有如下两个:(1)用来寻找共享段:根据进程首次访问某段的名称在共享段表中查找,可以得知该段是否已在内存;(2)确保一个共享段只有一组描述信息:共享段的地址、长度等信息在共享段表中仅记录一次,防止在多个进程段表中重复登记所带来的维护困难。共享段表用来实现段的共享和保护,该表中记录所有共享段。多个进程共享同一段时,这些进程段表中的相应表目指向共享段表中的同一个表目。课后思考题:举例说明段长动态增长的实际意义?2
38、015年 操作系统 2012级80分段,是信息的逻辑单位,由源程序的逻辑结构所决定,用户可见,段长由用户确定,段起始地址可以从任何主存地址开始分页,是信息的物理单位,与源程序的逻辑结构无关,用户不可见,页长由系统确定,页面只能以页大小的整倍数地址开始页式管理与段式管理的比较2015年 操作系统 2012级81需要更多的硬件支持,增加了机器成本碎片问题段的动态增长增加了系统的开销段的长度受可用内存大小的限制段式管理的缺点返回本章首页2015年 操作系统 2012级825.6.1 段页式管理的基本思想分段结构具有逻辑上清晰的优点,但它的一个致命弱点是每个段必须占据主存储器的连续区域,于是,要装入一
39、个分段时可能要移动已在主存储器中的信息,为了克服这个缺点,可兼用分段和分页的方法,构成段页式存储管理。每个作业仍按逻辑分段,但对每一段不是按单一的连续整体存放到存储器中,而是把每个段再分成若干个页面,每一段不必占据连续的主存空间,可把它按页存放在不连续的主存块中。5.6 段页式管理2015年 操作系统 2012级835.6.2 段页式管理的实现原理1虚地址的构成 一个进程中所包含的具有独立逻辑功能的程序和数据仍被划分为段,并有各自的段号S。把段划成若干个页,和页式系统一样。段号页号页内地址2015年 操作系统 2012级842 段表和页表在段页式系统中,每个分段又被分成若干个固定大小的页面,那
40、么每个段又必须建立一张页表把段中的虚页变换成内存中的实际页面。显然,与页式管理时相同,页表中也要有相应的实现缺页中断处理和页面保护等功能表项。每个段有一个页表,段表中应有专项指出该段所对应页表的页表始址和页表长度。 (P139图5.33) 2015年 操作系统 2012级852 段表和页表 2015年 操作系统 2012级863.动态地址变换过程 关键问题仍是如何将二维虚地址映射成一维实地址,实现动态地址变换。 段页式系统必须为每个作业建立一张段表,段表表目中的地址部分指出该段的页表在主存的始址。 为每个段建立一张页表,每个表目指示该页所在主存的页面号。 每个作业有一个段表地址寄存器,指示它的
41、段表所在位置和段表长度。 设置快速联想寄存器,存放当前最常用的段号S,页号P和对应的内存页面与其它控制用栏目。 2015年 操作系统 2012级87 查找方法:如果所访问的段或页在快速联想寄存器中,则系统不再访问内存中的段表、页表。把快速联想寄存器中的值与页内相对地址D拼接起来得到内存地址。若快速联想寄存器中没有,才去通过段表、页表进行内存地址查找。2015年 操作系统 2012级88段表地址寄存器段表长度 起始地址s p d 物理地址 页面s p p P+dp虚拟地址联想存储器段页式地址变换段表S段的页表2015年 操作系统 2012级891、现代计算机操作系统(WINDOWS NT)采用采
42、用了两级页表结构,具有两级页表的页式存储管理与段页式存储管理有何差别?思考:具有两级页表的页式存储管理的地址空间依然是一维的,页的划分对于进程来说是透明的。而段页式存储管理的地址空间是二维的,段的划分用户能感觉到。2、在虚拟段页式存储管理中,考虑段的共享与段长度的动态变化,连接中断如何处理?答:由段名查本进程的段名段号对照表及共享段表,经判断可分为如下三种情形:(1) 所有进程都未连接过(共享段表、段名-段号对照表均无): 查文件目录找到该段; 为该段建立页表,将该段由文件全部读入swap空间,部分读入内存,填写页表;为该段分配段号,填写段名-段号对照表;如该段可共享,填写共享段表,共享记数置
43、1;填写段表;根据段号及段内地址形成无障碍指示位的一般间接地址。(2) 其它进程连接过但本进程未连接过(共享段表有,段名-段号对照表无): 为该段分配段号;填写段名-段号对照表,填写段表(指向共享段表),共享段表中共享记数加1;根据段号及段内地址形成无障碍指示位的一般间接地址。(3) 本进程已连接过(共享段表无,段名-段号对照表有): 根据段号及段内地址形成无障碍指示位的一般间接地址。这里,段内地址由两部分构成,即逻辑页号和页内地址。2015年 操作系统 2012级90在 x86 架构中,内存被划分成 3 种类型的地址: 逻辑地址 (logical address) 是存储位置的地址,它可能直
44、接对应于一个物理位置,也可能不直接对应于一个物理位置。逻辑地址通常在请求控制器中的信息时使用。 线性地址 (linear address) (或称为 平面地址空间)是从 0 开始进行寻址的内存。之后的每个字节都可顺序使用下一数字来引用(0、1、2、3 等),直到内存末尾为止。这就是大部分非 Intel CPU 的寻址方式。Intel 架构使用了分段的地址空间,其中内存被划分成 64KB 的段,有一个段寄存器总是指向当前正在寻址的段的基址。这种架构中的 32 位模式被视为平面地址空间,不过它也使用了段。 物理地址 (physical address) 是使用物理地址总线中的位表示的地址。物理地址
45、可能与逻辑地址不同,内存管理单元可以将逻辑地址转换成物理地址。 CPU 使用两种单元将逻辑地址转换成物理地址。第一种称为分段单元 (segmented unit),另外一种称为分页单元 (paging unit)。 5.6.3 实现 -x86 内存架构 (补充内容) 2015年 操作系统 2012级91基本思想是将内存分段管理。从本质上来说,每个段就是自己的地址空间。段由两个元素构成: 基址 (base address) 包含某个物理内存位置的地址 长度值 (length value) 指定该段的长度 分段地址还包括两个组件 段选择器 (segment selector) 和段内偏移量 (of
46、fset into the segment)。段选择器指定了要使用的段(即基址和长度值),而段内偏移量组件则指定了实际内存位置相对于基址的偏移量。实际内存位置的物理地址就是这个基址值与偏移量之和。如果偏移量超过了段的长度,系统就会生成一个保护违例错误。 因此,分段单元可以表示成 - 段: 偏移量 模型 ,也可表示成 - 段标识符: 偏移量,每个段都是一个 16 位的字段,称为段标识符 (segment identifier) 或段选择器 (segment selector)。x86 硬件包括几个可编程的寄存器,称为 段寄存器 (segment register),段选择器保存于其中。这些寄存器
47、为 cs(代码段)、ds(数据段)和 ss(堆栈段)。每个段标识符都代表一个使用 64 位(8 个字节)的段描述符 (segment descriptor) 表示的段。这些段描述符可以存储在一个 GDT(全局描述符表,global descriptor table)中,也可以存储在一个 LDT(本地描述符表,local descriptor table)中。 5.6.3 实现 -段控制单元模型概述 (补充内容) 2015年 操作系统 2012级925.6.3 实现 -段控制单元模型概述(补充内容) 段描述符和段寄存器的相互关系 Represented by 64 64 CS register
48、DS register SS register 2015年 操作系统 2012级93每次将段选择器加载到段寄存器中时,对应的段描述符都会从内存加载到相匹配的不可编程 CPU 寄存器中。每个段描述符长 8 个字节,表示内存中的一个段。这些都存储到 LDT 或 GDT 中。段描述符条目中包含一个指针和一个 20 位的值(Limit 字段),前者指向由 Base 字段表示的相关段中的第一个字节,后者表示内存中段的大小。 其他某些字段还包含一些特殊属性,例如优先级和段的类型(cs 或 ds)。段的类型是由一个 4 位的 Type 字段表示的。 在将逻辑地址转换成线性地址时不引用 GDT 或 LDT。这
49、样可以加快内存地址的转换速度。 段选择器包含以下内容: 一个 13 位的索引,用来标识 GDT 或 LDT 中包含的对应段描述符条目 TI (Table Indicator) 标志指定段描述符是在 GDT 中还是在 LDT 中,如果该值是 0,段描述符就在 GDT 中;如果该值是 1,段描述符就在 LDT 中。 RPL (request privilege level) 定义了在将对应的段选择器加载到段寄存器中时 CPU 的当前特权级别。 GDT 或 LDT 中的相对地址计算:由于一个段描述符的大小是 8 个字节,段选择器的高 13 位乘以 8。例如,如果 GDT 存储在地址 0 x00020
50、000 处,而段选择器的 Index 域是 2,那么对应的段描述符的地址就等于 (2*8) + 0 x00020000。GDT 中可以存储的段描述符的总数等于 (213 - 1),即 8191。 5.6.3 实现 -段控制单元模型概述(补充内容) 2015年 操作系统 2012级945.6.3 实现 -从逻辑地址获得线性地址(补充内容) Segment selector Offset 4GB Base LimitBase LimitSegment DescriptorLinear address spaceSegment1Segment22015年 操作系统 2012级955.6.3 实现 -分页模型 (补充内容) 页表将页转换成页框PageFrame1 PageFrame2 PageFrame3PageFrame4 PageFrame5 Page1 Page2Page3Page4 Page5 MappingLinear addressPhysical addressPage table2015年 操作系统 2012级96模型将内存划分分配给每个 CPU 的空间,每个空间都称为一个节点;每个节点都被划分成一些 区域。区域(表示内存中的范围)可以进一步划分为以下类型: ZONE_DMA(0-16 MB):包含 ISA/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度高端住宅小区物业保安劳务服务合同范本
- 2025年度购房贷款个人信息保护合同
- 2025年度游乐园项目场地使用权及设施维护合作协议
- 2025年度水田承包与农业品牌建设合作协议
- 二零二五年度白蚁防治服务合同-城市绿化带白蚁防治
- 二零二五年度游艇俱乐部船舶租赁代理合同
- 二零二五年度餐饮企业员工劳动合同法律服务与保障
- 2025年度互联网签订方协议详细流程与网络安全责任追究协议
- 二零二五年度二手电脑及配件交易合同
- 二零二五年度绿色能源股份转让合同
- 2024年人教版小学三年级信息技术(下册)期末试卷附答案
- TB 10012-2019 铁路工程地质勘察规范
- 新苏教版三年级下册科学全册知识点(背诵用)
- 乡镇风控维稳应急预案演练
- 脑梗死合并癫痫病人的护理查房
- 苏教版四年级上册脱式计算300题及答案
- 犯罪现场保护培训课件
- 扣款通知单 采购部
- 电除颤操作流程图
- 湖北教育出版社三年级下册信息技术教案
- 设计基础全套教学课件
评论
0/150
提交评论