收藏 分销(赏)

第14讲 存储器管理之基本分段存储管理方式.doc

上传人:xrp****65 文档编号:6907803 上传时间:2024-12-23 格式:DOC 页数:7 大小:223KB 下载积分:10 金币
下载 相关 举报
第14讲 存储器管理之基本分段存储管理方式.doc_第1页
第1页 / 共7页
第14讲 存储器管理之基本分段存储管理方式.doc_第2页
第2页 / 共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 段表 u 概念:系统中为每个进程建立一张段映射表,就是段表。 u 段表内容:每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又叫“基址”)和段的长度。段表如下图 u 存储位置:可以存储于寄存器。但一般存放在内存。 u 作用:记录了段与内存位置的对应关系 u 注意:访问一个字节的数据/指令需访问内存2次(段表一次,内存一次),所以也出现内存访问速度降低的问题。 利用段表实现地址映射如下图 2.4 地址变换机构 地址变换过程:系统中设置段表寄存器,用于存放段表起始地址和段表长度TL。在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,则访问越界。否则,根据段表的起始地址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存中的起始地址。再检查段内地址D是否超过该段的段长SL。若超过则越界,否则将该段的基址和段内地址相加,即可得到要访问的内存物理地址。如下图 例1:某段表的内容如下:段号 段首址 段长度 0 120K 40K 1 760K 30K 2 480K 20K 3 370K 20K 一逻辑地址为(2154),它对应的物理地址为多少? 解:逻辑地址为: 段号 段内地址 由段表可知段号为2位,段内地址为16位,段允许的最大长度为 2^16=2^10*2^6=1024*64=65536。 所以逻辑地址2154的段号为0,查段表知其对应的物理地址为: 120K+2154 例2:在一个段式存储管理系统中,其段表为: 段号 内存起始地址 段长 0 210 500 1 2350 20 2 100 90 3 1350 590 4 1938 95 0 430 2 120 试求表中逻辑地址对应的物理地址是什么? 解:逻辑地址为: 段号 段内地址 由段表可知段号为3位,段内地址为10位。 逻辑地址 0 430 对应的物理地址为:210+430=640 逻辑地址 2 120 因为段内地址120>段长90,所为该段为非法段。 2.5 分页和分段的主要区别 3 信息共享与保存 3.1共享 :分页系统中虽然也能实现程序和数据的共享,但远不如分段系统方便。 分段系统的一个突出优点是易于实现段的共享,允许若干个进程共享一个或多个分段,且对段的保护十分简单易行。 分段系统中,实现共享只需要在每个进程的段表中为共享段设置一个段表项。如图 其中,p1,p2是进程 3.2 保护 保护方式:地址越界保护;存取控制保护 段表的改进,实际就是增加了存取控制字段如图 4 段页式存储管理方式 引言:段式优于页式,便于共享和保护,没有内碎片,外碎片可以通过内存“紧凑”来消除。 一看紧凑,就必然要进行重定位,需要硬件实现,因此麻烦。 页式优于段式,消除“外碎片”问题,没有外碎片,每个内碎片不超过页大小。 段页式:结合二者优点。每个进程包含若干段,每个段包含若干页 内碎片:是指页面内部没有被使用的存储区域,在页式存储方式中,会出现内碎片。 外碎片:是指没有得到分配权的存储区域,在段式存储方式中,会产生外碎片 总结: 固定分区:优点:易于实现,开销小。缺点:内碎片造成浪费 分区总数固定,限制了并发执行的程序数目。信息共享困难 动态分区:优点:无内碎片;内存利用率高于固定分区,可装入更多进程。缺点:有外碎片;分配、回收较固定分区复杂;信息共享困难。 静态页式:优点:没有外碎片,每个内碎片不超过页大小。一个程序不必连续存放。由于页的大小相等,内存的分配、回收简单。 缺点:程序要求全部装入内存,才能执行 静态段式:优点:没有内碎片,外碎片可以通过内存紧缩来消除。缺点:进程要求全部装入内存。 “内碎片”和“外碎片”是碎片的两种主要表现形式。消除“内碎片”需要将内存按程序需要的大小来分配;而消除“外碎片”则需要按固定大小来分配内存的方法。而将这两种方法结合,是能够更有效地解决碎片问题的——“段页式存储管理”就是这样的一种技术。它将内存分为大小相等的若干页面,避免了“外碎片”。同时,又将程序按内在的逻辑关系分成若干大小不一定相等的段,并将这些段再细分为若干页进行内存分配,这样不但使内碎片变得更小,提高了内存的利用率,还保留了段式存储管理便于动态链接的优点。可以说“段页式存储管理”非常好地解决了内存碎片问题。 1 基本原理 基本原理:是先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。再把每个段分成若干个页(页式)。其地址结构由段号、段内页号、及页内位移三部分所组成。 下图是作业地址空间和地址结构。该图显示一个作业有三个段。页面大小是4kB.分别是主程序段、子程序段、数据段。 0 4K 8K 12K 15K 16K 主程序段 0 4K 8K 子程序段 0 4K 8K 12K 10K 数据段 作业地址空间: 地址结构: 页内地址(W) 段内页号(P) 段号(S) 2 地址变换过程 2.1 地址变换过程 在段页式系统中,为了实现地址变换,增加一个段表寄存器,用来存放段表始址和段长。进行地址变换时,首先利用段号S和段长TL比较。若S<TL,表示没越界。于是利用段表起始地址和段号求出该段所对应的段表项在段表的位置,从中得到该段的页表地址,并利用逻辑地址中的段内页号P来获得对应页的页表项位置,从中读出该页所在的物理块号b,再利用块号b和页内地址来构成物理地址。如下图所示。 注意:在段页式系统中,为了获得一条指令或数据,需要访问三次内存: 第一次:访问内存中的段表,取得页表始址 第二次:访问内存中的页表,取得该页所在的物理块号,将块号与页内地址形成物理地址 第三次:访问第二次所得的地址,取出指令或数据 解决方法:增设高速缓冲寄存器-快表
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服