目录
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
三、地址变换机构
- 从段表寄存器中获得进程段表的起始地址
- 根据逻辑地址指定的段号检索段表,获得对应段的页表起始地址
- 根据逻辑地址指定的页号检索页表,获得对应页所在的物理块号
- 用物理块号加上逻辑地址指定的页内偏移量,形成物理地址
注:在段页式存储管理方式中,每访问一次数据,需访问三次内存。
- 第一次访问内存中的段表
- 第二次访问内存中的页表
- 第三次访问相应数据
解决方法:可以设置快表,表项应包括段号、页号、物理块号。
四、评价
综合了分段和分页技术的优点,既能有效地利用存储空间,又能方便用户进行程序设计。
但是,实现段页式存储管理系统需要增加硬件成本,系统的复杂度和管理开销也大大增加。
因此,段页式存储管理技术适合于大、中型计算机系统,不太适合小型、微型计算机系统。