引入

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

段表与地址转换

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

段表表目实际上起到了基址/限长寄存器的作用。由于每个作业都有自己的段表,地址转换应按各自的段表进行。类似于分页存储器那样,分段存储器也设置一个段表控制寄存器 ,用于存放当前占用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上添加)

存储器管理之分段存储管理相关推荐

  1. 存储器管理之分区存储管理

    分区式管理是满足多道程序的最简单的存储管理方案.它的基本思想是将内存划分成若干个连续区域,称为分区.每个分区只能存储一个程序,且程序也只能在它所驻留的分区中运行. ⑴固定分区 操作系统预先把可分配的主 ...

  2. 存储器管理之分页存储管理

    引入 在动态分区的存储空间中,常常引入了"零头"问题.尽管采用"紧凑"技术可以解决这个问题,但要为移动大量信息花去不少的处理机时间,代价较高.分页存储管理系统的 ...

  3. 12 操作系统第三章 内存管理 非连续分配管理方式 基本分页存储管理 基本分段存储管理 段页式存储管理

    文章目录 1 基本分页存储管理 1.1 什么是分页存储 1.2 重要的数据结构--页表 1.3 基本地址变换机构 1.4 具有快表的地址变换机构 1.4.1 什么是快表(TLB) 1.4.2 引入快表 ...

  4. 操作系统——存储器管理(连续分配存储管理方式)

    文章目录 一.单一连续分配 二.固定分区分配 1. 划分分区的方法 2. 内存分配 三.动态分区分配 1. 动态分区分配中的数据结构 2. 动态分区分配算法 3. 分区分配操作 四.基于顺序搜索的动态 ...

  5. 操作系统学习笔记 第四章:存储器管理(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  6. 【408预推免复习】操作系统之存储器管理

    [408&预推免复习]操作系统之存储器管理 文章目录 1 基础部分 2 分页存储管理 3 分段存储管理 1 基础部分 物理地址空间(或物理空间.绝对空间):由内存一系列存储单元所限定的地址范围 ...

  7. 操作系统(4)存储器管理

    一.存储器的层次结构 对于通用计算机而言,存储层次至少应具有三级:最高层为 CPU 寄存器,中间为主存,最底层是辅存. 在较高档的计算机中,还可以根据具体的功能分工细划为寄存器.高速缓存.主存储器.磁 ...

  8. ======第四章存储器管理======

    目录 4.1 存储器的层次结构 4.1.1 多级存储器结构 4.1.2 主存储器与寄存器 4.1.3 高速缓存和磁盘缓存 4.2 程序的装入和链接 4.2.1 程序的装入 4.2.2 程序的链接 4. ...

  9. 操作系统:存储器管理(下)

    4,对换 要实现内存.外存之间的对换,系统中必须要有一台I/O速度较好的外存,且其容量也必须足够的大,能容纳正在分时运行的所有用户作业,目前最常用的是大容量磁盘存储器. 4.1,多道程序环境下的对换 ...

最新文章

  1. 基于机器学习梯度下降优化算法来寻找最佳的线性回归模型
  2. OpenStack Pike Minimal安装:三、镜像管理
  3. Solr嵌套子文档的弊端以及一种替代方式
  4. php人员排班程序,人员排班软件操作步骤
  5. HashMap(HashSet)的实现
  6. 常见空指针异常及其避免
  7. Python+Selenium练习篇之4-利用link text定位元素
  8. 如何高效做问卷调查?
  9. 连接远程服务器 远程服务器怎么连接
  10. SpringCloud升级之路2020.0.x版-42.SpringCloudGateway 现有的可供分析的请求日志以及缺陷
  11. 标准柯西分布_柯西分布没有数学期望
  12. 热门表情包+头像+壁纸自动采集多分类微信小程序源码下载支持多种流量主模式
  13. 《敦泰IC之FT6336的TP代码跟读笔记》
  14. 源码安装postgresql9.5.1
  15. 数据湖Iceberg | 实时数据仓库的发展、架构和趋势
  16. FFMPEG 抓取virtual-audio-capturer 数据
  17. 基于 AVOS Cloud 的 Android 应用程序快速开发简介
  18. Android app应用开发高级进阶系列专栏解读
  19. 2023年湖北助理工程师报考指南,伴德诚
  20. 晶闸管器件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 完美解决-RuntimeError: CUDA error: device-side assert triggered
  2. Mac Cornerstone 账号密码都对 Unable to connect to a repository at URL 'svn://XXXX@XX.XX.XX.XX'
  3. 键盘上26个字母的含义之快捷键
  4. Nature重磅:人工智能从0到1, 无师自通完爆阿法狗100-0 | 深度解析
  5. 办公室各种办公用品集锦
  6. 奇技:使用钉钉进行视频会议时,在本地显示演讲者视图播放PPT
  7. 编程读写CAD文件验证笔记
  8. 双旋风除尘器-铸造废气处理装置(基于螺旋式分级除尘)
  9. css实现的卡片式渐变色卡html页面前端源码
  10. linux 安装u盘软件,Universal USB Installer:帮你用U盘装Linux