DJ4-5 基本分段存储管理方式

目录

4.5.1  分段式存储管理方式的引入

4.5.2  分段式存储管理的基本原理

一、分段

二、段表

三、地址变换机构

4.5.3  段的共享和保护

一、分页共享

二、分段共享

4.5.4  段页式存储管理

一、段页式存储管理的引入

二、段页式存储管理

三、地址变换机构

四、评价


4.5.1  分段式存储管理方式的引入

在程序员眼中,程序是由若干个段组成的,每个段有各自的特点和用途~

  • 定位指令的方法:<段号,段内偏移>,如:mov [es:bx],ax
  • 分段符合用户观点:用户可以单独考虑每个段——分治

模块化程序设计的分段结构:

  • 方便编程、分段共享、分段保护、动态链接、动态增长

4.5.2  分段式存储管理的基本原理

一、分段

作业的地址空间按逻辑信息的完整性被划分为若干个段:

  • 每个段都有段名或段号
  • 每个段都从 0 开始编址
  • 段内的地址空间是连续的

许多编译程序支持分段方式,自动根据源程序的情况产生若干个段。

在分段管理系统中,对所有地址空间的访问均要求有两个成分:

  • 段的名字
  • 段内地址

例如,可按下述方式进行调用:

CALL [X]|<Y>      ; 转移到子程序X中的入口点Y
LOAD 1, [A]|<D>   ; 将数组A的D单元的值读入寄存器1
STORE 1, [B]|<C>  ; 将寄存器1的内容存入分段B的C单元中

这些符号程序经汇编和装配后,指令和数据的单元地址均由两部分构成:

  • 表示段名的段号 S
  • 段内地址/位移量 W

因此,在分段系统中的地址结构有如下形式:

根据逻辑地址可知,该系统允许一个作业有 64K 个段,每个段最大段长为 64KB 。

分段管理:管理由若干分段组成的作业,且按分段来进行存储分配。

把分段地址结构变换成线性的地址结构,可采用动态重定位技术,即通过地址变换机构来实现。

二、段表

(1) 在分段式存储管理系统中,则是:

  • 为进程的每个分段分配一个连续的分区
  • 每个分段可以离散地装入内存中不同的分区中

类似于分页系统,需要在系统中为每个进程建立一张段映射表,简称 “段表”。

(2) 每个段在表中占有一个表项,其中记录了:

  • 该段在内存中的起始地址,又称为 “基址”
  • 该段的段的长度

(3) 通常将段表放在内存中,执行中的进程可通过查找段表找到每个段所对应的内存区。

(4) 作用:实现从逻辑段到物理内存区的映射。

三、地址变换机构

① 根据段表寄存器的内容找到该作业的段表地址;

② 利用有效地址中的段号 2 作为检索段表的索引,得到该段在主存的起始地址;

③ 将段的主存起始地址和位移量 W 相加,即得访问主存的物理地址。

 

4.5.3  段的共享和保护

分页系统实现程序段的共享较为困难,分段易于实现段的共享和段的保护。

可重入代码(Reentrant Code,纯代码)

是一种允许多个进程同时访问的代码(可共享),并且不允许任何进程对其进行修改。

例如、一个多用户系统可接纳 40 个用户,它们都执行一个文本编辑程序 ED,ED 代码共 160K,每个用户还有 40K 的数据区 DA 。

(1) 不采用信息共享时需占用的内存空间?

        (160K + 40K) * 40 = 8000K

(2) 采用信息共享(若 ED 可共享)后占用的内存空间?

        160K + 40K * 40 = 1760K

一、分页共享

  • 对于数据页面,只需将其安排在作业地址空间中的任何一页面上即可。
  • 对于代码页面,必须将其安排在所有共享它的作业地址空间中相同页号的页面中。

之所以有这种要求,是因为一个作业在运行前必须链接好。而链接后,一个例程的所占页号就确定了。如果其它作业要共享该例程,则必须使它具有相同的页号,才能正确运行。

二、分段共享

利用分段共享原理上述多用户系统的存储分配如下:(两个用户)

 

4.5.4  段页式存储管理

一、段页式存储管理的引入

分页管理内存管理效率高:

  • 没有外零头
  • 内零头小

分段管理符合模块化思想:

  • 每个分段都具备完整的功能
  • 方便代码共享、保护
  • 没有内零头,存在外零头

结合 => 段页式管理

二、段页式存储管理

原理:分段和分页相结合。

  • 先将用户程序划分成段,每段有段号
  • 再将每段划分成若干页,页具有连续的页号

内存划分:按页式存储管理方案。

内存分配:以页为单位进行离散分配。

逻辑地址结构:

  • 段号 S
  • 段内页号 P
  • 页内相对地址/位移量 W

三、地址变换机构

  1. 从段表寄存器中获得进程段表的起始地址
  2. 根据逻辑地址指定的段号检索段表,获得对应段的页表起始地址
  3. 根据逻辑地址指定的页号检索页表,获得对应页所在的物理块号
  4. 用物理块号加上逻辑地址指定的页内偏移量,形成物理地址

注:在段页式存储管理方式中,每访问一次数据,需访问三次内存。

  1. 第一次访问内存中的段表
  2. 第二次访问内存中的页表
  3. 第三次访问相应数据

解决方法:可以设置快表,表项应包括段号、页号、物理块号。

四、评价

综合了分段和分页技术的优点,既能有效地利用存储空间,又能方便用户进行程序设计。

但是,实现段页式存储管理系统需要增加硬件成本,系统的复杂度和管理开销也大大增加。

因此,段页式存储管理技术适合于大、中型计算机系统,不太适合小型、微型计算机系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《操作系统原理》课程设计任务书 学院名称: 计算机学院 专业: 计科、软件工程 年级: 2006 一、设计题目 模拟请求段式存储管理 --FIFO 二、主要内容 本课程设计要求 用高级语言编写和调试模拟请求段式存储管理程序, 掌握请 求段式存储管理以及其缺段处理方法 。 三、 具体要求 1、编程组织对内存管理 a) 段大小为最大长度 64K ; b) 每个进程最多调入内存容量为 4 段 c) 内存总容量 128K d) 地址码长度 24 位 e) 内存管理采用全局分配策略 2 、 根据用户输入进程信息(进程名、段数,段名,段长),自动模拟调入程序到内 存,可同时调入多个进程; 3 、 显示当前各进程内存状态 4 、 物理内存管理:建议采用空闲块表方案 5 、 根据用户输入进程信息(进程名、长度),自动模拟调入程序到内存,可同时调 入多个进程; 6 、 显示当前各进程内存状态 7 、 选定进程后,根据用户输入的指令(如“ 1|500 : MOV AX , 2|1234 ”),自动进 行虚拟地址到物理地址的转换(如该指令中地址不在内存自动调入,如内存不足 则自动进行切换),并显示虚拟地址以及转换后的物理地址(如:“ 1|500—1579 , 2|1234--5679 ”) 8 、 调入采用请求调段方式,置换策略采用先进先出( FIFO )置换算法。 四、主要技术路线提示 (1)要求利用结构化或面向对象的方法完成系统的设计; (2)要求在设计的过程中,建立清晰的层次关系; (3)在系统的设计中,尽量采用面向对象的机制。 ========================================第2页======================================== 课 程 设 计 (4)开发环境:Windows XP 或Windows 2000 (5)编程语言建议采用C++,也可以采用其他语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值