请求分段存储管理方式

2,190 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

前面我们已经学过基本分段存储管理方式,今天我们学习请求分段存储管理方式,与前者相比又有些不同,请求分段存储管理方式是在基本分段基础上,增加了部分段装入请求调段分段置换功能。

一、请求分段存储管理中的硬件支持

1 段表机制

请求分段系统中的段表是为了实现缺段中断,请求调段,分段置换功能,对基本分段中的段表内容进行扩充,增加某些表项而设计的。

image.png

(1)存取方式:用于标识分段的存取属性,如执行、只读、读/写等;

(2)访问位(A):用于记录分段被访问的情况,如多久未访问、访问次数等;

(3)修改位(M):用于标记分段是否被修改过;

(4)存在位(P):用于指示本段是否已经调入内存;

5)增补位:这是请求分段存储管理方式中特有的字段,用于表示分段在运行过程中,是否做过动态增长;

(6)外存始址:用于记录分段在外存中的起始地址;

2 缺段中断机构

当进程要访问的段不在内存时,产生缺段中断,由缺段中断处理程序将所需段调入内存。缺段中断比缺页中断少,但因为段长的不一致,使得将段调入内存的过程要复杂一些。

检查内存中是否有足够的空闲空间

1、有:则装入该段,修改有关数据结构,中断返回

2、无:检查内存中空闲区的总和是否满足要求,

是:紧凑,转1;

否:淘汰一些段,转1;

image.png

3 地址变换机构

在由逻辑地址到物理地址的转换中,仍是使用段表。还可考虑段的保护和缺段。

越界中断处理:

进程在执行过程中,有时需要扩大分段,如数据段。

由于要访问的地址超出原有段长,所以发生越界中断。

操作系统处理中断时,首先判断该段的“扩充位”,如可扩充,则增加段的长度;否则按出错处理。

image.png

二、分段共享和保护

1 共享段表

在系统中设置一张段表,各共享段都在段表中占有一表项,表项中可有:段号、段长、内存始址、存在位等信息。并记录共享此段的进程的情况。

1)共享进程记数count:记录有多少个进程共享该段。

2)存取控制字段:不同进程对同一段有不同的权限。

3)段号:不同进程可用不同段号来标识该共享段,是由段的动态链接功能作保证。

2 共享段的分配、回收

1)分配:当第一个进程申请该段时,将其调入内存,填写进程段表、系统的共享段表,设count=1;再有进程申请该段时,只需在调用进程中填写进程段表(该共享段的物理地址)、共享段表(调用进程名、存取控制等),count+1等。

2)回收:某进程释放段后,执行count-1。若结果为0,则回收物理块,取消共享段表中该段的表项,取消该进程段表中共享段对应的表项;不为0,则不用回收物理块。

3 分段保护(Segment Protection)

1)越界检查(段表保护):段表长度和段号比较;段长和段内地址比较。

2)存取控制检查(段表中的存取控制字段)。

3)环保护机构:低编号的环具有高优先权。

一个程序可以访问驻留在相同环或较低特权环中的数据。

一个程序可以调用驻留在相同环或较高特权环中的服务。

学到这里我们就把关于请求分段存储管理方式的相关内容学习完了。