欢迎来到天天文库
浏览记录
ID:17588796
大小:223.00 KB
页数:7页
时间:2018-09-03
《第14讲 存储器管理之基本分段存储管理方式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十四讲存储器管理之基本分段存储管理方式分段存储管理方式也是一种离散分配方式,只是其分配的基本单位事段。1分段存储管理方式的引入为什么要引入分段?分段有哪些优点?我们现在了解一下。1方便编程:因为实际编程中,用户作业通常按照逻辑关系分为几个段,每个段都是从0开始编址,并有名字和长度,访问的逻辑地址由段名和段内偏移量决定。此存储管理方式就按逻辑上有联系的段来进行管理,方便编程。2信息共享:从上面可以得知,段是信息的逻辑单位,也就是段具有实际的逻辑意义。这和前一讲的“页”完全不同。因此要实现段的共享,就要求存储管理能与用户程序的分段组织方式
2、相适应。3信息保护:信息保护同样是对信息的逻辑单位进行保护,因此分段管理方式能有效的实现信息保护。4动态增长:实际应用中,某些段(数据段)会不断增长,前面的存储管理方法均难以实现。而分段却可以解决这个问题。5动态链接:要求以段为单位。由此我们理解为什么要引入分段存储管理。2分段系统的基本原理2.1空间划分(分段)将用户作业的地址空间依照相应的逻辑信息组的长度来划分若干个段,各段的长度不等。各段有段名(常用段号代替),段内首地址为0。段地址结构如下图:一般我们常见的有代码段、数据段、共享段等等。2.2内存分配在为作业分配内存时,也以段为单
3、位,分配一段连续的物理地址空间;段间不必连续。如下图注意:1、整个作业的逻辑地址空间是二维的,其逻辑地址由段号和段内地址组成。页式管理是把内存视为一维线性空间;而段式管理是把内存视为二维空间。怎么理解?有的同学说分页也是二维的,页号一维,页内地址一维。总共是二维。其实不然站在进程的角度而言,就会发现分页是一维的,而分段是二维的。对一个进程来说,在分页式系统中,它的内容会保存在多页里,即进程的内容由一维页序列保存,通过页表映射来进行寻址。请注意,页内地址对进程而言是没有意义的,在从逻辑地址到页表访问到物理地址的映射都是由OS管理的。所以在
4、分页系统中将页内地址作为一个维度是没有实际意义的。但是在分段式系统中,进程的内容会保存在多个相互独立的段里,段内的地址是单独编址的,如代码段内偏移154,数据段内偏移209。举例说明:对分页系统而言,给出一个地址2345,OS会根据进程对应的页表算出它在第几页内,偏移是多少。而在OS外部,逻辑地址是一维的。对于分段系统而言,访问一个地址,必须给出“段号+段内偏移”,因此,逻辑地址就是二维的了。所以说,分页是一维地址管理、分段是二维地址管理。1、需要CPU的硬件支持(地址变换机构)2.3段表u概念:系统中为每个进程建立一张段映射表,就是段
5、表。u段表内容:每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(又叫“基址”)和段的长度。段表如下图u存储位置:可以存储于寄存器。但一般存放在内存。u作用:记录了段与内存位置的对应关系u注意:访问一个字节的数据/指令需访问内存2次(段表一次,内存一次),所以也出现内存访问速度降低的问题。利用段表实现地址映射如下图2.4地址变换机构地址变换过程:系统中设置段表寄存器,用于存放段表起始地址和段表长度TL。在进行地址变换时,系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,则访问越界。否则,根据段表的起始地址和该段的段号,
6、计算出该段对应段表项的位置,从中读出该段在内存中的起始地址。再检查段内地址D是否超过该段的段长SL。若超过则越界,否则将该段的基址和段内地址相加,即可得到要访问的内存物理地址。如下图例1:某段表的内容如下:段号段首址段长度0120K40K1760K30K2480K20K3370K20K一逻辑地址为(2154),它对应的物理地址为多少?解:逻辑地址为:段号段内地址由段表可知段号为2位,段内地址为16位,段允许的最大长度为2^16=2^10*2^6=1024*64=65536。所以逻辑地址2154的段号为0,查段表知其对应的物理地址为:12
7、0K+2154例2:在一个段式存储管理系统中,其段表为:段号内存起始地址段长0210500123502021009031350590419389504302120试求表中逻辑地址对应的物理地址是什么?解:逻辑地址为:段号段内地址由段表可知段号为3位,段内地址为10位。逻辑地址0430对应的物理地址为:210+430=640逻辑地址2120因为段内地址120>段长90,所为该段为非法段。2.5分页和分段的主要区别3信息共享与保存3.1共享:分页系统中虽然也能实现程序和数据的共享,但远不如分段系统方便。分段系统的一个突出优点是易于实现段的共
8、享,允许若干个进程共享一个或多个分段,且对段的保护十分简单易行。分段系统中,实现共享只需要在每个进程的段表中为共享段设置一个段表项。如图其中,p1,p2是进程3.2保护保护方式:地址越界保护;存取控制保护段
此文档下载收益归作者所有