栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

存储器管理之分段存储管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

存储器管理之分段存储管理

引入

在分页存储系统中,作业的地址空间是一维线性的,这破坏了程序内部天然的逻辑结构。这样常常会把逻辑相关部分划到不同的页面,造成共享、保护的困难。加之,程序员常常用二维地址描述自己的程序,于是产生了分段的思想。如下图:

段表与地址转换

分段式存储管理的作业空间是以段为单位的,每个段将占据一个连续的存储区域,但各段之间不必连续。这样,一个作业的各个分段在主存的情况用一个段表来记录,它指出了主存中各个分段的起始地址和长度,如下图。

段表表目实际上起到了基址/限长寄存器的作用。由于每个作业都有自己的段表,地址转换应按各自的段表进行。类似于分页存储器那样,分段存储器也设置一个段表控制寄存器 ,用于存放当前占用CPU的作业的段表始址和长度。地址转换关系如下图所示。

多段式虚拟存储器

扩充段表(每个作业一个)

中断位:1表示该页在主存;0相反。
访问位:1表示该页最近被访问过;0相反。
改变位:1表示该页内容已被修改;0相反。

现行分段表(整个系统一个)

记录共享段的状态,包括:当前段是否在主存(由状态位指示),该段在主存的始址 ,共享的作业数,每个作业名,作业号以及在该作业中的段号、允许的存取方式等。

每个允许被共享的段,当其调入主存 时,均在此表上登记。当一共享作业退出 系统后,则应将共享本段作业数减1,并 将相应的表目改为“可用”。若共享作业数为0,则请求系统回收相应的存储空间。

现行调用表(整个系统一个)


实现各分段之间有效的、一致的动态连接。在动态连接过程中调入一 分段时,在表中登记段名、访问的入口点、段名及段内地址,系统为之分配一个段号。

缺段、中断段扩充处理流程

段的动态链接

段的动态链接是在一个程序运行开始时,只将主程序段装配好并调入主存。其它各段的装配是在主程序段运行过程中逐步进行的。每当需要调用一个新段时,再将这个新段装配好,并与主程序段连接。
实现动态连接要附加两个功能:间接编址和连接障碍指示。

直接编址和间接编址类 似于机器指令的直接地址和间接地址,如左 图所示,设100号单元存放数值800,而800号 单元中存放着数值1000,则:
直接编址:Load 100
表示将800(100号的内容)装入。
间接编址:Load * 100
表示将1000(800号的内容)装入。

间接字

包含直接地址的字称为间接字。其格式如下:

L为障碍指示位:
L=0,表示需要连接,发出连接中断信号转操作系统处理;
L=1,表示不要连接,仅作间接地址处理。

段的动态连接过程(以指令 Load 1,[X]|〈Y〉为例)

经编译后形式目标指令 Load * 1,1|100,当执行到指令时,系统将产生连接中断, 操作系统对连接中断的处理如下:


⑴从1段100单元取出间接字
⑵取出间接字中直接地址1段108单元
⑶按直接地址取出要连接段的符号名 [X]|〈Y〉,按定义给它分配段号
⑷(这里假定[X]=4,〈Y〉= 120), 查[X]段是否在主存,若不在则从辅 存把它调入主存,并登记段号,修改主存分配表。
⑸修改间接字,取消障碍指示(L=0) 且使直接地址为连接的分段地址,即 4段120单元
⑹重新启动被中断的指令执行。当指 令重新执行时,由于100单元已无障 碍指示,不再引起中断,且直接地址 就是连接段的地址2段120单元,于是 可以从2段120单元读出所需的数据 015571装入到1号寄存器。

段的共享

段式虚拟存储系统利用段的动态连接功能,很容易实现段的共享,由于不能预言各作业在什么情况下调用共用段且段号可在动态连接时分配,因而一个共享段对不同的调用表可以具有不同的段号。
例如,公共子程序COS,在作业1调用时具有段号2,而在作业2调用时可以是段号1。上图是一个共享[COS]段的例子。

我们可以设置一个“共享段表”来实现段的共享。如上图所示。

分段与分页的区别


欢迎大家加我微信交流讨论(请备注csdn上添加)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号