1、分段存储管理方式的引入

---- 引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:

1)方便编程

通常,用户把自己的作业按照逻辑关系划分为若干个段,每个段都是从0开始编址,并有自己的名字长度

因此,希望要访问的逻辑地址是由段名(段号)和段内偏移量(段内地址)决定的。

2)信息共享

在实现对程序和数据的共享时,是以信息的逻辑单位为基础的。比如共享某个例程和函数,分页系统中的“页”只是存放信息的物理单位(块),

并无完整的意义,不便于实现共享,然而段却是信息的逻辑单位

3)信息保护

信息保护同样是对信息的逻辑单位进行保护,因此,分段管理方式能更有效和方便的实现信息保护功能。

4)动态增长

在实际应用中,往往有些段,特别是数据段,在使用过程中会不断地增长,而事先又无法确切地知道数据段会增长到多大。前面的几种存储

管理方式都难以应付这种动态增长的情况,分段存储管理方式能较好的解决这一问题。

5)动态链接

动态链接是指在作业运行之前,并不把几个目标程序段链接起来。要运行时,先将主程序所对应的目标程序装入内存并启动运行,当运行过程

中又需要调用某段时,才将该段(目标程序)调入内存并进行链接。可见,动态链接也要求以段作为管理的单位。

2、分段和段表

---- 在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段 定义了一组逻辑信息。每个段都有自己的名字,通常可用一个段号

代替段名每个段都从0开始编址,并采用一段连续的地址空间。段的长度由相应的逻辑信息组的长度决定,因而各段长度不等。整个作业的

地址空间分成多个段,是二维的

---- 在动态分区(可变分区)分配方式中,系统为整个进程分配一个连续的内存空间。而在分段式存储管理系统中,则是为每个分段分配一个

连续的分区,而进程中的各个段可以离散地装入内存中不同的分区中。为使程序能正常运行,即能从物理内存中找出每个逻辑段所对应的位置,

应像分页系统那样,在系统中为每个进程建立一张段映射表,简称“段表”。

---- 每个段在表中占有一个表项,其中记录了该段在内存中的起始地址(“基址”)和段长(字节)。段表一般放在内存中。在配置了段表后,

执行中的进程可通过查找段表找到每个段所对应的内存区。可见,段表是用于实现从逻辑段物理内存区的映射。

3、地址变换机构

---- 为了实现从进程的逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址 段表长度TL。在进行地址变换时,

系统将逻辑地址中的段号S(0~TL-1)段表长度TL进行比较。--  若S>=TL,表示段号太大,是访问越界,于是产生越界中断信号;

----  若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置(段表的始址+段号x段表项的长度),从中读出该段在内存的

起始地址,然后再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号;若未越界,则将该段的基址段内地址d

相加,即可得到要访问的内存物理地址

---- 像分页系统一样,当段表放在内存中时,每当要访问一个数据,都需访问两次内存(第一次是得到物理地址,第二次是从地址中取数据),

从而极大地降低了计算机的速率。解决方法是再增设一个联想存储器(TLB),用于保存最近常用的段表项。一般情况下是段比页大,因而

段表项的数目比页表项的数目少,需要的TLB也相对较小,可以显著的减少存取数据的时间。

4、分页和分段的主要区别

---- 分页和分段系统都采用离散分配方式,且都要通过地址映射机构来实现地址变换。但在概念上两者完全不同,主要表现在3个方面:

-- 1)页是信息的物理单位,分页是为实现离散分配方式,消减外部碎片,提高内存的利用率。分页仅仅是由于系统管理的需要而不是用户的需要。

段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了更好的满足用户的需要。

-- 2)页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而在系统中只能有一种大小的页面;

段的长度不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时,根据信息的性质来划分。

-- 3)分页的作业地址空间是一维的,即单一的线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段的作业地址空间是二维的

程序员在标识一个地址时,既需给出段名,又需给出段内地址

5、信息共享

---- 段的共享:即允许若干个进程共享一个或多个分段。

---- 可重入代码(Reentrant Code)又称为“纯代码”(Pure Code),是一种允许多个进程同时访问的代码。为使各个进程所执行的代码完全相同,

绝对不允许可重入代码在执行中有任何改变。因此,可重入代码是一种不允许任何进程对它进行修改的代码

---- 但事实上,大多数代码在执行时都可能有些改变,例如,用于控制程序执行次数的变量以及指针、信号量及数组等。为此,在每个进程中,都必

须配以局部数据区,把在执行中可能改变的部分拷贝到该数据区,这样,程序在执行时,只需对该数据区(属于该进程私有)中的内容进行修改,并

不去改变共享的代码,这时的可共享代码即成为可重入码。

转自:http://blog.csdn.net/dongyanxia1000/article/details/51787275

操作系统基本分段存储管理方式相关推荐

  1. 【操作系统】分段存储管理方式

    分段存储管理方式的引入 分段存储管理方式的引入是为了满足用户的要求. 方便编程:通常一个作业是由多个程序段和数据段组成的,一般情况下,用户希望按逻辑关系对作业分段,并能根据名字来访问程序段和数据段. ...

  2. 操作系统:基本分段存储管理方式

    虚拟内存采用的是分页技术,也就是将地址空间划分成固定大小的页,每一页再与内存进行映射. 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特 ...

  3. 操作系统基本分页存储管理方式

    操作系统基本分页存储管理方式 连续分配内存方式会形成许多"碎片",通过紧凑的方式将碎片拼接成一块大的空间,但是拼接过程系统开销太大.如果允许将一个进程直接分散地装入到许多不相邻的分 ...

  4. 基本分段存储管理方式详解

    4.4 基本分段存储管理方式 一.分段存储管理方式的引入 二.分段系统的基本原理 三.信息共享 四.段页式存储管理方式 一.分段存储管理方式的引入 分页存储管理方式存在的问题: 段间离散,段内连续! ...

  5. 《操作系统》——分页存储管理方式逻辑地址到物理地址的转换

    一.连续分配方式缺点 连续分配方式的主要缺点是会形成许多碎片,尽管我们可以通过紧凑的方法将碎片拼接成可用的大块空间,但这样须付出很大的代价. 二.离散分配方式 离散分配方式思想:将进程直接分散地装入到 ...

  6. 分页和分段存储管理方式例题

    分页存储管理 1. 有一系统采用页式存储管理,有一作业大小是8KB,页大小为2KB,依次装入内存的第7.9.A.5块,试将虚地址0AFEH转换成内存地址.如果虚地址为3412D呢? (1)虚地址为0A ...

  7. 操作系统连续分配存储管理方式

    连续分配方式,是指为一个用户程序分配一个连续的内存空间. 连续分配方式的分类: l单一连续分配 l固定分区分配 l动态分区分配 l动态重定位分区分配 下面来看这几种分配方式 单一连续分配 最简单的一种 ...

  8. 操作系统------虚拟存储器 请求分页存储管理方式

    请求分页系统是建立在基本分页的基础上的,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能. 相应地,每次调入和换出的基本单位都是长度固定的页面,这使得请求分页系统在实现上要比请求分段系统简单 ...

  9. 三十三、基本分段存储管理方式

    一.知识总览 二.分段 三.地址变换 四.分段.分页管理的对比 分段比分页更容易实现信息的共享和保护 不能被修改的代码成为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的.可修改的代码是不 ...

最新文章

  1. python起步输入-Python编程起步——输入与输出
  2. extract-text-webpack-plugin 的使用及安装
  3. 使用cglib创建代理对象
  4. SAP License:值得一看的ERP问题
  5. 2021年品牌CDP与营销数字化转型报告:从自建数据资产到消费者深度运营
  6. 【SQL 提示 之二】index_ss Index Skip Hint
  7. win10系统崩溃怎么修复_新手怎么重装系统win10
  8. 【CCNA学习实录】二进制 十进制 十六进制 VLSM
  9. return、break、continue三者的区别
  10. 安卓相机如何设置对焦模式
  11. 冲击波病毒内幕点滴(4)
  12. 串口硬盘如何应用于并口硬盘计算机,并口硬盘和串口硬盘如何一起用
  13. ACM卡常数(各种玄学优化)
  14. 大数据面试题——用shell打印200以内的质数
  15. Python 计算两点之间的距离
  16. 关于工程总承包(EPC)项目最高限价的说明
  17. Knowledge graph, Freebase, Wikidata三大知识图谱
  18. 设计模式解密(17)- 备忘录模式
  19. window 删除文件报错显示被程序占用 强制删除被占用的文件
  20. 2022.12.13 英语背诵

热门文章

  1. Mathematica 的一些输入小技巧
  2. Win32汇编数组编程图解
  3. 8086汇编复习3 - 标志寄存器 - 使用emu8086
  4. VC++ 常用编程技巧总结
  5. java 调用win32 api 学习总结
  6. JAVA 总结(壹)
  7. 回炉重造-基础规则之类和对象
  8. Java JDBC数据库 之 DBUtil 封装类
  9. oracle 11g 大量废连接占满数据库连接问题处理
  10. 认识StringBuffer类