第四章 存储器 管理 (3)
第四章 存储器管理
4.9 请求分段存储管理方式
4.10 段页式存储管理方式第四章 存储器管理
4.9 请求分段存储管理
(虚拟段式存储管理 )
一,请求分段 使用的表
扩充段表 ( 每个作业一个 )
现行分段表 ( 整个系统一个 )
现行调用表 ( 整个系统一个 )
1.扩充段表段号 段长 段始址 存取控制 中断位访问位 改变位 扩充位 辅存地址
中断位:表示该页在不主存
访问位:表示该页最近是否被访问过
改变位:表示该页内容是否被修改
扩充位(固定长 /可扩充 )
2.现行分段表记录共享段的状态,包括:当前段是否在主存,该段在主存的始址,共享的作业数,每个作业名,作业号以及在该作业中的段号,允许的存取方式等 。 每个允许被共享的段,当其调入主存时,均在此表上登记 。 当一共享作业退出系统后,则应将共享本段作业数减1并将相应的表目改为,可用,。 若共享作业数为0,则请求系统回收相应的存储空间 。
现行分段表
3.现行调用表
实现各分段之间有效的,一致的动态连接 。
在动态连接过程中调入一分段时,在表中登记段名,访问的入口点,段名及段内地址,系统为之分配一个段号 。
段名 段好 状态 访问过的入口点
1 B 1 Y/120
2 X 1 C/80
… … … …
1.越界中断处理进程在执行过程中,有时需要扩大分段,如数据段。由于要访问的地址超出原有的段长,所以发越界中断。操作系统处理中断时,首先判断该段的“扩充位”,如可扩充,则增加段的长度;否则按出错处理二,越界中断处理检查内存中是否有足够的空闲空间
①若有,则装入该段,修改有关数据结构,中断返回
②若没有,检查内存中空闲区的总和是否满足要求,是则应采用紧缩技术,转 ① ;否则,淘汰一(些)段,
转①
2,缺段中断处理为何要进行段的动态链接:
大型程序由若干程序段,若干数据段组成
进程的某些程序段在进程运行期间可能根本不用
互斥执行的程序段没有必要同时驻留内存
有些程序段执行一次后不再用到
静态链接花费时间,浪费空间三,段的动态连接段的动态连接在一个程序运行开始时,只将主程序段装配好并调入主存 。 其它各段的装配是在主程序段运行过程中逐步进行的 。 每当需要调用一个新段时,再将这个新段装配好,并与主程序段连接 。
页式存储管理:难以完成动态链接,
其逻辑地址是一维的
1,链接间接字和链接中断机器指令:直接寻址,间接寻址
LOAD 100
LOAD 100
600
600
800
直接寻址间接寻址
100
100
数据间接字数据采用间接寻址时,间接地址指示的单元的内容称为间接字,在间接字中,
包含了直接地址,还包含了附加的状态位。格式为:
L 直接地址
L:链接标志位
L=0:该段已经建立了链接
L=1:该段尚未链接链接间接字和链接中断处理机在执行间接指令时,其硬件能自动对链接字中连接标志位进行判断。
当 L=1时,硬件自动发链接中断,并停止执行该间接指令,转去执行链接中断处理程序。处理完后( L已被中断处理程序改为 0),再重新执行该间接指令;
若 L=0,则根据间接字中的直接地址去取数据
2.间接字的处理
3,段的动态连接过程
以指令 Load 1,[X]|〈 Y〉 为例 ( 编译前 )
经编译后形式目标指令 Load * 1,1|100,
当执行到指令时,系统将产生连接中断,
操作系统对连接中断的处理如下:
段的动态连接(续 )
4,链接中断处理
根据链接间接字找出要访问段的符号名和段内地址
分配段号,检查该段是否在内存,
若不在,则从外存调入,并登记段表,修改内存分配表
修改间接字:修改连接标志位为 0,
修改直接地址
重新启动被中断的指令执行
5.缺段中断段扩充处理流程四,共享段段式虚拟存储系统利用段的动态连接功能,很容易实现段的共享,由于不能预言各作业在什么情况下调用共用段且段号可在动态连接时分配,因而一个共享段对不同的调用表可以具有不同的段号 。 例如,公共子程序COS,在作业1调用时具有段号2,而在作业2调用时可以是段号1 。 下图是一个共享
[ COS ] 段的例子 。
共享[COS]段共享段表
我们可以设置一个,共享段表,来实现段的共享 。 如下图所示:
五,分段与分页的区别分页系统 分段系统单一地址空间 二维地址空间页是物理单位 段是逻辑单位页的大小固定 段的大小可变对用户透明 对用户可见单段式虚拟 多段式虚拟第四章 存储器管理
4.10 段页存储管理段页式存储管理
1.产生背景:
结合了段式与页式二者优点克服了二者的缺点
2,基本思想用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;
对系统讲,按页划分每一段)
逻辑地址:
内存划分:按页式存储管理方案内存分配:以页为单位进行分配段号段内地址页号 页内地址
3,管 理
1.段表:记录了每一段的页表始址和页表长度
2.页表:记录了逻辑页号与内存块号的对应关系(每一段有一个,
一个程序可能有多个页表)
3.空块管理:同页式管理
4.分配:同页式管理
4,地址空间一个程序首先被划分成若干程序段,
每一段给予不同的分段标识符然后,对每一分段又分成若干个固定大小的页面 。 如下图 (a)所示,系统中的一个作业的地址空间结构页面尺寸为4K字节,该作业有三个分段,第一段为 15K字节,占 4页,
最后一页只有 1K未用;其它段同理 。 未足一页大小的补为一页 。
作业的 地址空间和 地址结构
1.作业地址空间,如图( a)所示
2,地址结构如图( b)所示
5.地址映射
6,地址变换地址变换(续)
从控制寄存器读取段表始址,找到段表;
段号+段表始址 得到段描述子地址;
从段描述子读取页表始址,找到页表;
页号+页表始址 得到页描述子地址;
从页描述子读取物理块号;
物理块号+页内位移量 得到物理地址 。
上述的地址变换至少要访问主存三次,
这将使执行程序的速度大大降低 。 为了解决上述问题,可以采取前边讲过的
,快表,技术 。
7.段页式存储管理算法
8.中断处理模块的主要功能
链接障碍中断 。 实现动态链接 。 其主要工作是:
给用符号命名的分段分配一个段号;在相应段表及现行调用表中,为其设置表目;利用段号改造链接间接字 。
缺段中断 。 在系统的现行分段表中建立一个表目 ( 若曾调入过,则只需改变状态 ) ;为调进的段建立一个页表,并在其段表的相应表目中登记此页表的起始地址 。
缺页中断 。 在主存中找出空闲的存储块 。 如没有,则调用置换算法,移去主存中的一页,然后调进所需页面;最后修改相应的页表表目 。
第四章 存储器管理
4.9 请求分段存储管理方式
4.10 段页式存储管理方式第四章 存储器管理
4.9 请求分段存储管理
(虚拟段式存储管理 )
一,请求分段 使用的表
扩充段表 ( 每个作业一个 )
现行分段表 ( 整个系统一个 )
现行调用表 ( 整个系统一个 )
1.扩充段表段号 段长 段始址 存取控制 中断位访问位 改变位 扩充位 辅存地址
中断位:表示该页在不主存
访问位:表示该页最近是否被访问过
改变位:表示该页内容是否被修改
扩充位(固定长 /可扩充 )
2.现行分段表记录共享段的状态,包括:当前段是否在主存,该段在主存的始址,共享的作业数,每个作业名,作业号以及在该作业中的段号,允许的存取方式等 。 每个允许被共享的段,当其调入主存时,均在此表上登记 。 当一共享作业退出系统后,则应将共享本段作业数减1并将相应的表目改为,可用,。 若共享作业数为0,则请求系统回收相应的存储空间 。
现行分段表
3.现行调用表
实现各分段之间有效的,一致的动态连接 。
在动态连接过程中调入一分段时,在表中登记段名,访问的入口点,段名及段内地址,系统为之分配一个段号 。
段名 段好 状态 访问过的入口点
1 B 1 Y/120
2 X 1 C/80
… … … …
1.越界中断处理进程在执行过程中,有时需要扩大分段,如数据段。由于要访问的地址超出原有的段长,所以发越界中断。操作系统处理中断时,首先判断该段的“扩充位”,如可扩充,则增加段的长度;否则按出错处理二,越界中断处理检查内存中是否有足够的空闲空间
①若有,则装入该段,修改有关数据结构,中断返回
②若没有,检查内存中空闲区的总和是否满足要求,是则应采用紧缩技术,转 ① ;否则,淘汰一(些)段,
转①
2,缺段中断处理为何要进行段的动态链接:
大型程序由若干程序段,若干数据段组成
进程的某些程序段在进程运行期间可能根本不用
互斥执行的程序段没有必要同时驻留内存
有些程序段执行一次后不再用到
静态链接花费时间,浪费空间三,段的动态连接段的动态连接在一个程序运行开始时,只将主程序段装配好并调入主存 。 其它各段的装配是在主程序段运行过程中逐步进行的 。 每当需要调用一个新段时,再将这个新段装配好,并与主程序段连接 。
页式存储管理:难以完成动态链接,
其逻辑地址是一维的
1,链接间接字和链接中断机器指令:直接寻址,间接寻址
LOAD 100
LOAD 100
600
600
800
直接寻址间接寻址
100
100
数据间接字数据采用间接寻址时,间接地址指示的单元的内容称为间接字,在间接字中,
包含了直接地址,还包含了附加的状态位。格式为:
L 直接地址
L:链接标志位
L=0:该段已经建立了链接
L=1:该段尚未链接链接间接字和链接中断处理机在执行间接指令时,其硬件能自动对链接字中连接标志位进行判断。
当 L=1时,硬件自动发链接中断,并停止执行该间接指令,转去执行链接中断处理程序。处理完后( L已被中断处理程序改为 0),再重新执行该间接指令;
若 L=0,则根据间接字中的直接地址去取数据
2.间接字的处理
3,段的动态连接过程
以指令 Load 1,[X]|〈 Y〉 为例 ( 编译前 )
经编译后形式目标指令 Load * 1,1|100,
当执行到指令时,系统将产生连接中断,
操作系统对连接中断的处理如下:
段的动态连接(续 )
4,链接中断处理
根据链接间接字找出要访问段的符号名和段内地址
分配段号,检查该段是否在内存,
若不在,则从外存调入,并登记段表,修改内存分配表
修改间接字:修改连接标志位为 0,
修改直接地址
重新启动被中断的指令执行
5.缺段中断段扩充处理流程四,共享段段式虚拟存储系统利用段的动态连接功能,很容易实现段的共享,由于不能预言各作业在什么情况下调用共用段且段号可在动态连接时分配,因而一个共享段对不同的调用表可以具有不同的段号 。 例如,公共子程序COS,在作业1调用时具有段号2,而在作业2调用时可以是段号1 。 下图是一个共享
[ COS ] 段的例子 。
共享[COS]段共享段表
我们可以设置一个,共享段表,来实现段的共享 。 如下图所示:
五,分段与分页的区别分页系统 分段系统单一地址空间 二维地址空间页是物理单位 段是逻辑单位页的大小固定 段的大小可变对用户透明 对用户可见单段式虚拟 多段式虚拟第四章 存储器管理
4.10 段页存储管理段页式存储管理
1.产生背景:
结合了段式与页式二者优点克服了二者的缺点
2,基本思想用户程序划分:按段式划分(对用户来讲,按段的逻辑关系进行划分;
对系统讲,按页划分每一段)
逻辑地址:
内存划分:按页式存储管理方案内存分配:以页为单位进行分配段号段内地址页号 页内地址
3,管 理
1.段表:记录了每一段的页表始址和页表长度
2.页表:记录了逻辑页号与内存块号的对应关系(每一段有一个,
一个程序可能有多个页表)
3.空块管理:同页式管理
4.分配:同页式管理
4,地址空间一个程序首先被划分成若干程序段,
每一段给予不同的分段标识符然后,对每一分段又分成若干个固定大小的页面 。 如下图 (a)所示,系统中的一个作业的地址空间结构页面尺寸为4K字节,该作业有三个分段,第一段为 15K字节,占 4页,
最后一页只有 1K未用;其它段同理 。 未足一页大小的补为一页 。
作业的 地址空间和 地址结构
1.作业地址空间,如图( a)所示
2,地址结构如图( b)所示
5.地址映射
6,地址变换地址变换(续)
从控制寄存器读取段表始址,找到段表;
段号+段表始址 得到段描述子地址;
从段描述子读取页表始址,找到页表;
页号+页表始址 得到页描述子地址;
从页描述子读取物理块号;
物理块号+页内位移量 得到物理地址 。
上述的地址变换至少要访问主存三次,
这将使执行程序的速度大大降低 。 为了解决上述问题,可以采取前边讲过的
,快表,技术 。
7.段页式存储管理算法
8.中断处理模块的主要功能
链接障碍中断 。 实现动态链接 。 其主要工作是:
给用符号命名的分段分配一个段号;在相应段表及现行调用表中,为其设置表目;利用段号改造链接间接字 。
缺段中断 。 在系统的现行分段表中建立一个表目 ( 若曾调入过,则只需改变状态 ) ;为调进的段建立一个页表,并在其段表的相应表目中登记此页表的起始地址 。
缺页中断 。 在主存中找出空闲的存储块 。 如没有,则调用置换算法,移去主存中的一页,然后调进所需页面;最后修改相应的页表表目 。