操作系统存储管理之分段存储
2017-04-23 14:57
375 查看
需求
从固定分区到动态分区,从分区方式到分页方式发展提高了主存空间利用率。而分段存储管理的引入,则满足用户(程序员)编程和使用上的要求,这些要求其它各种存储管理技术难以满足。
需求解析:
在分页存储管理中,经连结编辑处理得到了一维地址结构的可装配模块,这是从0开始编址的一个单一连续的逻辑地址空间,虽然操作系统可把程序划分成页面,但页面与源程序无逻辑关系,也就难以实现对源程序以模块为单位进行分配、共享和保护。而程序还存在一种分段结构:
一个程序由若干程序段(模块)组成,例如由一个主程序段、若干子程序段、数组段和工作区段所组成
每个段都从“0”开始编址,每个段都有模块名,且具有完整的逻辑意义。
段与段之间的地址不连续,而段内地址是连续的。用户程序中可用符号形式(指出段名和入口)调用某段的功能,程序在编译或汇编时给每个段再定义一个段号。
可见这是一个二维地址结构,分段方式的程序被装入物理地址空间后,仍应保持二维,这样才能满足用户模块化程序设计的需要。
具体分段图如下所示:
基本原理
段式存储管理是以段为单位进行存储分配,为此提供如下形式的两维逻辑地址:段号:段内地址
在分页式存储管理中,页的划分——即逻辑地址划分为页号和单元号是用户不可见的,连续的用户地址空间将根据页框架(块)的大小自动分页;而在分段式存储管理中,地址结构是用户可见的,即用户知道逻辑地址如何划分为段号和单元号,用户在程序设计时,每个段的最大长度受到地址结构的限制,进一步,每一个程序中允许的最多段数也可能受到限制.
例如,PDP-11/45的段址结构为:段号占3位,单元号占 13 位,也就是一个作业最多可分8段,每段的长度可达 8K 字节。
类似于页表及其作业表,段表及其作业表如下所示:
地址转换与存储保护
流程图如下所示:段表表目实际上起到了基址/限长寄存器的作用。作业执行时通过段表可将逻辑地址转换成绝对地址。由于每个作业都有自己的段表,地址转换应按各自的段表进行。类似于分页存储器那样,分段存储器也设置一个段表控制寄存器,用来存放当前占用处理器的作业的段表始址和长度。
在分段式存储管理中,由于每个作业可以有几个段组成,所以可以实现段的共享,以存放共享的程序和常数。所谓段的共享,事实上就是共享分区,为此计算机系统要提供多对基址/限长寄存器。于是,几道作业共享的例行程序就可放在一个公共的分区中,只要让各道的共享部分有相同的基址 /限长值就行了。
相关文章推荐
- 计算机操作系统存储管理(分段与分页)
- 操作系统——存储管理:分区、分页、分段、请求式分页和虚拟内存
- 操作系统——存储管理:分区、分页、分段、请求式分页和虚拟内存
- 【操作系统】虚拟存储器--请求分段存储管理方式
- [操作系统]复习二 分段分页存储管理
- 操作系统——存储管理:分区、分页、分段、请求式分页和虚拟内存
- 计算机操作系统存储管理(分段与分页)
- 操作系统存储管理之分段存储
- 【操作系统】分段存储管理方式
- 【操作系统面试专题】:分页和分段存储管理有何区别?
- 计算机操作系统存储管理(分段与分页)
- 操作系统-存储管理
- 操作系统学习--存储管理
- 操作系统基础知识--存储管理
- 3.1操作系统之存储管理
- Linux操作系统基础理论(4)-----Linux 存储管理的实现
- 【操作系统】可变分区存储管理,模拟实现
- 软件复习-操作系统---存储管理
- 操作系统之存储管理
- 【操作系统】内存管理-基本分段管理方式