操作系统存储管理之分段式与段页式虚拟存储系统

分段式虚拟存储系统

分段式虚拟存储系统把作业的所有分段的副本都存放在辅助存储器中,当作业被调度投入运行时,首先把当前需要的一段或几段装入主存,在执行过程中访问到不在主存的段时再把它们装入。因此,在段表中必须说明哪些段已在主存,存放在什么位置,段长是多少。哪些段不在主存,它们的副本在辅助存储器的位置。还可设置该是否被修改过,是否能移动,是否可扩充,能否共享等标志。格式如下图所示:
这里写图片描述
其中,
* 特征位: 00(不在内存);01(在内存);11(共享段);
* 存取权限: 00(可执行);01(可读);11(可写);
* 扩充位: 0(固定长);1(可扩充);
* 标志位: 00(未修改);01(已修改);11(不可移动);

在作业执行中访问某段时,由硬件的地址转移机构查段表,若该段在主存,则按分段式存储管理中给出的办法进行地址转换得到绝对地址。若该段不在主存中,则硬件发出一个缺段中断。操作系统处理这个中断时,查找主存分配表,找出一个足够大的连续区域容纳该分段。如果找不到足够大的连续区域则检查空闲区的总和,若空闲区总和能满足该分段要求,那么进行适当移动后,将该分装入主存。若空闲区总和不能满足要求,则可调出一个或几个分段在辅助存储器上,再将该分段装入主存。
具体处理流程如下图所示:
这里写图片描述

段页式虚拟存储管理

段式存储是基于用户程序结构的存储管理技术,有利于模块化程序设计,便于段的扩充、动态链接 、共享和保护,但往往会生成段内碎片浪费存储空间;页式存储是基于系统存储器结构的存储管理技术,存储利用率高,便于系统管理,但不易实现存储共享、保护和动态扩充。如果把两者优点结合起来,在分页式存储管理的基础上实现分段式存储管理这就是段页式存储管理

基本原理

  1. 虚地址以程序的逻辑结构划分成段,这是段页式存储管理的段式特征。
  2. 实地址划分成位置固定、大小相等的页框(块) ,这是段页式存储管理的页式特征
  3. 将每一段的线性地址空间划分成与页框大小相等的页面,于是形成了段页式存储管理的特征
  4. 逻辑地址形式为:段号(s)+段内页号(p)+页内位移(d)
    对于用户来说,段式虚拟地址应该由段号s和段内位移 d’组成,操作系统内部再自动把d’解释成两部分:

    1. 段内页号 p
    2. 页内位移 d
      也就是说,d’=p×块长+d
  5. 数据结构
    段页式存储管理的数据结构更为复杂,包括作业表、段表和页表三级结构。作业表中登记了进入系统中的所有作业及该作业段表的起始地址,段表中至少包含这个段是否在内存,以及该段页表的起始地址,页表中包含了该页是否在主存(中断位)、对应主存块号。

  6. 动态地址转换
    段页式存储管理的动态地址转换机构由、段表、页表和快表构成。当前运行作业的段表起始地址已被操作系统置入段表控制寄存器,其动态地址转换过程如下:从逻辑地址出发,先以段号 s 和页号p作索引去查快表,如果找到,那么立即获得页 p 的页框号 p’,并与位移 d 一起拼装得到访问主存的实地址,从而完成了地址转换。若查快表失败,就要通过段表和页表来作地址转换了,用段号s作索引,找到相应表目,由此得到 s 段的页表的起始地址 s’,再以 p 作索引得到s段p页对应的表目,由此得到页框号 p’;这时一方面把s段p页和页框号p’置换进快表,另一方面用p’和d生成主存的实地址,从而完成地址转换。
    具体示意图如下所示:
    这里写图片描述

没有更多推荐了,返回首页