资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
第十四讲第十四讲 存储器管理存储器管理之基本分段存储管理方式之基本分段存储管理方式分段存储管理方式也是一种离散分配方式,只是其分配的基本单位事段。1 分段存储管理方式的引入分段存储管理方式的引入为什么要引入分段?分段有哪些优点?我们现在了解一下。 1 方便编程: 因为实际编程中,用户作业通常按照逻辑关系分为几个段,每个段都是从 0 开始编址,并有名字和长度,访问的逻辑地址由段名和段内偏移量决定。此存储管理方式 就按逻辑上有联系的段来进行管理,方便编程。 2 信息共享: 从上面可以得知,段是信息的逻辑单位,也就是段具有实际的逻辑意义。这 和前一讲的“页”完全不同。因此要实现段的共享,就要求存储管理能与用户程序的分段 组织方式相适应。 3 信息保护: 信息保护同样是对信息的逻辑单位进行保护,因此分段管理方式能有效的实 现信息保护。 4 动态增长: 实际应用中,某些段(数据段)会不断增长,前面的存储管理方法均难以实 现。而分段却可以解决这个问题。 5 动态链接: 要求以段为单位。由此我们理解为什么要引入分段存储管理。2 分段系统的基本原理分段系统的基本原理2.1 空间划分(分段)空间划分(分段) 将用户作业的地址空间依照相应的逻辑信息组的长度来划分若干个段,各段的长度不 等。各段有段名(常用段号代替) ,段内首地址为 0。段地址结构如下图:一般我们常见的有代码段、数据段、共享段等等。 2.2 内存分配内存分配 在为作业分配内存时,也以段为单位,分配一段连续的物理地址空间;段间不必连续。如 下图 注意: 1、 整个作业的逻辑地址空间是二维的,其逻辑地址由段号和段内地址组成。页式管理是 把内存视为一维线性空间;而段式管理是把内存视为二维空间。怎么理解? 有的同学说分页也是二维的,页号一维,页内地址一维。总共是二维。其实不然 站在进程的角度而言,就会发现分页是一维的,而分段是二维的。 对一个进程来说,在分页式系统中,它的内容会保存在多页里,即进程的内容由一维页 序列保存,通过页表映射来进行寻址。请注意,页内地址对进程而言是没有意义的,在从逻 辑地址到页表访问到物理地址的映射都是由 OS 管理的。所以在分页系统中将页内地址作为 一个维度是没有实际意义的。 但是在分段式系统中,进程的内容会保存在多个相互独立的段里,段内的地址是单独编 址的,如代码段内偏移 154,数据段内偏移 209。 举例说明: 对分页系统而言,给出一个地址 2345,OS 会根据进程对应的页表算出它在第几页内,偏移是多少。而在 OS 外部,逻辑地址是一维的。 对于分段系统而言,访问一个地址,必须给出“段号段内偏移”,因此,逻辑地址就是二维的了。 所以说,分页是一维地址管理、分段是二维地址管理。2、 需要 CPU 的硬件支持(地址变换机构)2.3 段表段表 概念:系统中为每个进程建立一张段映射表,就是段表。 段表内容:每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又叫 “基址” )和段的长度。段表如下图 存储位置:可以存储于寄存器。但一般存放在内存。 作用:记录了段与内存位置的对应关系 注意:访问一个字节的数据/指令需访问内存 2 次(段表一次,内存一次),所以也出现内存 访问速度降低的问题。利用段表实现地址映射如下图2.4 地址变换机构地址变换机构 地址变换过程:系统中设置段表寄存器,用于存放段表起始地址和段表长度 TL。在进行地 址变换时,系统将逻辑地址中的段号与段表长度 TL 进行比较。若 STL,则访问越界。否 则,根据段表的起始地址和该段的段号,计算出该段对应段表项的位置,从中读出该段在 内存中的起始地址。再检查段内地址 D 是否超过该段的段长 SL。若超过则越界,否则将 该段的基址和段内地址相加,即可得到要访问的内存物理地址。如下图例 1:某段表的内容如下:段号 段首址 段长度 0 120K 40K 1 760K 30K 2 480K 20K 3 370K 20K一逻辑地址为(2154) ,它对应的物理地址为多少? 解:逻辑地址为:段号段号段内地址段内地址由段表可知段号为 2 位,段内地址为 16 位,段允许的最大长度为 216=210*26=1024*64=65536。所以逻辑地址 2154 的段号为 0,查段表知其对应的物理地址为: 120K+2154 例 2:在一个段式存储管理系统中,其段表为:段号 内存起始地址 段长0 210 5001 2350 202 100 903 1350 5904 1938 9504302120试求表中逻辑地址对应的物理地址是什么? 解:解:逻辑地址为:段号段号段内地址段内地址由段表可知段号为 3 位,段内地址为 10 位。 逻辑地址 0430对应的物理地址为:210+430=640 逻辑地址 2120因为段内地址 120段长 90,所为该段为非法段。 2.5 分页和分段的主要区别分页和分段的主要区别3 信息共享与保存信息共享与保存3.1 共享共享 :分页系统中虽然也能实现程序和数据的共享,但远不如分段系统方便。 分段系统的一个突出优点是易于实现段的共享,允许若干个进程共享一个或多个分段, 且对段的保护十分简单易行。 分段系统中,实现共享只需要在每个进程的段表中为共享段设置一个段表项。如图其中,p1,p2 是进程 3.2 保护保护 保护方式:地址越界保护;存取控制保护 段表的改进,实际就是增加了存取控制字段如图4 段页式存储管理方式段页式存储管理方式引言:段式优于页式,便于共享和保护,没有内碎片,外碎片可以通过内存“紧凑”来消 除。 一看紧凑,就必然要进行重定位,需要硬件实现,因此麻烦。页式优于段式,消除“外碎片”问题,没有外碎片,每个内碎片不超过页大小。 段页式:结合二者优点。每个进程包含若干段,每个段包含若干页内碎片:是指页面内部没有被使用的存储区域,在页式存储方式中,会出现内碎片。 外碎片:是指没有得到分配权的存储区域,在段式存储方式中,会产生外碎片 总结: 固定分区:优点:易于实现,开销小。缺点:内碎片造成浪费 分区总数固定,限制了并发执行 的程序数目。信息共享困难 动态分区:优点:无内碎片;内存利用率高于固定分区,可装入更多进程。缺点:有外碎片;分 配、回收较固定分区复杂;信息共享困难。 静态页式:优点:没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。由于页的 大小相等,内存的分配、回收简单。 缺点:程序要求全部装入内存,才能执行 静态段式:优点:没有内碎片,外碎片可以通过内存紧缩来消除。缺点:进程要求全部装入内存。 “内碎片”和“外碎片”是碎片的两种主要表现形式。消除“内碎片”需要将内存按程序需要的大 小来分配;而消除“外碎片”则需要按固定大小来分配内存的方法。而将这两种方法结合,是 能够更有效地解决碎片问题的“段页式存储管理”就是这样的一种技术。它将内存分为大 小相等的若干页面,避免了“外碎片”。同时,又将程序按内在的逻辑关系分成若干大小不一 定相等的段,并将这些段再细分为若干页进行内存分配,这样不但使内碎片变得更小,提高 了内存的利用率,还保留了段式存储管理便于动态链接的优点。可以说“段页式存储管理”非 常好地解决了内存碎片问题。 1 基本原理基本原理 基本原理:是先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予 一个段名。再把每个段分成若干个页(页式) 。其地址结构由段号、段内页号、及页内位移 三部分所组成。 下图是作业地址空间和地址结构。该图显示一个作业有三个段。页面大小是 4kB.分别是主 程序段、子程序段、数据段。04K8K12K 15K 16K主程序段主程序段 04K8K子程序段子程序段04K8K12K10K数据段数据段作业地址空间:作业地址空间:地址结构:地址结构:页内地址页内地址(W)段内页号段内页号(P)段号段号(S)2 地址变换过程地址变换过程 2.1 地址变换过程 在段页式系统中,为了实现地址变换,增加一个段表寄存器,用来存放段表始址和段长。 进行地址变换时,首先利用段号 S 和段长 TL 比较。若 STL,表示没越界。于是利用段表 起始地址和段号求出该段所对应的段表项在段表的位置,从中得到该段的页表地址,并利 用逻辑地址中的段内页号 P 来获得对应页的页表项位置,从中读出该页所在的物理块号 b,再利用块号 b 和页内地址来构成物理地址。如下图所示。 注意注意:在段页式系统中,为了获得一条指令或数据,需要访问三次内存: 第一次:访问内存中的段表,取得页表始址 第二次:访问内存中的页表,取得该页所在的物理块号,将块号与页内地址形成物理地址 第三次:访问第二次所得的地址,取出指令或数据 解决方法:增设高速缓冲寄存器-快表
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号