Alex_McAvoy

想要成为渔夫的猎手

请求分段存储管理方式

【概述】

在分页基础上建立的请求分页式虚拟存储器系统,是以页面为单位换入换出的

而在分段基础上建立的请求分段式虚拟存储器系统,是以分段为单位换入换出的

两者的原理、实现方式以及所需硬件支持都十分相似

【硬件支持】

为实现请求分段存储管理,应在系统中配置相应的硬件机构,以支持快速地完成请求分段功能

与请求分页系统相似,请求分段系统中所需的硬件支持有:请求段表机制、缺段中断机构、地址变换机构

请求段表机制

在请求分段管理中所需的主要数据结构是请求段表

  • 存取方式 :用于标识本分段的存取属性 RWR/W
  • 访问字段 $A$ :用于记录本段被访问的频繁程度
  • 修改位 $M$ :表示该段在调入内存后是否被修改过
  • 存在状态位 $P$ :指示该段是否已调入内存
  • 增补位 :特有字段,表示该段运行中是否做过动态增长
  • 外存始址:用于指出该段在外存上的起始地址(盘块号)

缺段中断机构

请求分段系统中采用的是请求调段策略,每当发现运行进程要访问的段尚未调入内存时,会执行以下操作:

  • 由缺段中断机构产生一缺段中断信号
  • 进入 OS,由缺段中断处理程序将所需段调入内存

缺段中断与缺页中断相似,同样是在一条指令的执行期间产生和处理中断,一条指令执行可能产生多次缺段中断,但不会出现一条指令被分割在两个分段中或一组信息被分割在两个分段中的情况

地址变换机构

请求分段系统中的地址变换机构是在分段系统地址变换机构的基础上形成的

由于被访问的段并非全在内存,因此在地址变换时,若发现要访问的段不在内存,必须先将所缺的段调入内存,并修改段表,才能利用段表进行地址变换

为此,在分段系统地址变换机构的基础上添加了缺段中断请求与处理的功能

【分段共享与保护】

共享段表

为实现分段共享,需要在系统中配备一张共享段表,所有共享段都在共享段表中占据一个表项,在表项上记录了共享段的段号、段长、内存始址、状态位、外存始址、共享进程计数等信息。

  • 共享进程计数:记录有多少个进程需要共享该分段
  • 存取控制字段:共享段给不同的进程以不同的存取权限
  • 段号:对于一个共享段,不同的进程可用不同的段号

共享段的分配

由于共享段是供多个进程共享的,因此对共享段的分配方法与非共享段的分配方法有所不同:

  1. 第一个请求使用该共享段的进程 $A$:系统为该共享段分配一物理区,再把共享段装入该区
  2. 将该区的始址填入 $A$ 的段表相应项
  3. 在共享段表中增加一表项,填写有关数据,置 count = 1
  4. 其他进程 $B$ 也调用该共享段时,无需再为该段分配内存,只需在 B 的段表中增加一表项,填写该共享段的物理地址
  5. 在共享段的段表中,填上调用进程的进程名、存取控制等,再执行count++ 操作

共享段的回收

当共享此段的某进程不再需要该段时,应将该段释放:

  1. 撤消在进程段表中共享段所对应的表项
  2. 执行 count-- 操作
  3. 如果 count=0,则由系统回收该共享段的物理内存,并取消共享段表中该段所对应的表项

分段保护

在分段系统中,由于每个分段在逻辑上是相对独立的,因此较容易实现信息保护,目前常采用以下方法:

  • 越界检查:在进行存储访问时,将段号与段表长度比较,段内地址与段长比较
  • 存取控制检查:段表每个表项都设置存取控制字段,规定该段的访问方式
  • 环保护机构:规定低编号的环具有高优先权,一个程序可以访问驻留在相同环或较低特权环中的数据,可以调用驻留在相同环或较高特权环中的服务
感谢您对我的支持,让我继续努力分享有用的技术与知识点!