分段的共享和保护

1、共享段表

-- 为了实现分段共享,可在系统中配置一张共享段表,所有各共享段都在共享段表中占有一表项。表项中记录了共享段的段号、段长、内存

始址、存在位(是否已调入内存)等信息,并记录了共享此分段的每个进程的情况。其中各项说明如下:

1)共享进程计数count

---- 非共享段仅为一个进程所需要。当进程不再需要该段时,可立即释放该段,并由系统回收该段所占用的内存空间。

---- 共享段是为多个进程所需要的,当某进程不再需要而释放它时,系统并不回收该段所占用的内存区,仅当所有共享该段的进程全部不再需要

它时,才由系统回收该段所占内存区。为了记录有多少个进程需要共享该分段,设置一个整型变量count=共享该段的进程数

2)存取控制字段。对于一个共享段,应给不同的进程以不同的存取权限

例如,对于文件主,通常允许它读和写;而对于其他进程,则可能只允许读,甚至只允许执行。

3)段号。对于一个共享段,不同的进程可以各用不同的段号去共享该段。

---- 共享段表和对应表项内容如下图所示:

       

2、共享段的分配与回收

-- 1)共享段的分配

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

---- 在为共享段分配内存时,对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,同时将该区的始址填入

请求进程段表的相应项中,还需在共享段表增加一表项,填写有关数据,把count置为1。(每个进程有一个段表,还有一个共享段表)

---- 之后,当又有其他进程需要调用该共享段时,由于该共享段已被调入内存,故此时无需再为该段分配内存,而只需在调用进程的段表中增加一

表项,填写该共享段的物理地址(内存地址);

在共享段的段表中,填上调用进程的进程名、存取控制等。再执行count::=count+1操作,以表明有两个进程共享该段。

-- 2)共享段的回收

当共享此段的某进程不再需要该段时,应将该段释放,包括撤销在该进程段表中共享段所对应的表项,以及执行count::=count-1操作。

结果为0,则需由系统回收该共享段的物理内存,以及取消在共享段表中该段所对应的表项,表明此时已没有进程使用该段

否则(减1结果不为0),只是取消调用者进程在共享段表中的有关记录。

3、分段保护

在分段系统中,由于每个分段在逻辑上是独立的,因而比较容易实现信息保护。目前常采用以下几种措施来确保信息的安全。

-- 1)越界检查

段表寄存器中放有段表长度信息;同样,在段表中也为每个段设置有段长字段。在进行存储访问时,首先将逻辑地址空间的段号段表长度

进行比较,如果段号等于或大于段表长度,将发出地址越界中断信号,其次,还要检查段内地址是否等于或大于段长,若大于段长,将产生地址

越界中断信号,从而保证了每个进程只能在自己的地址空间内运行。

-- 2)存取控制检查

在段表的每个表项中,都设置了一个“存取控制”字段,用于规定对该段的访问方式。通常的访问方式有:

----- 只读,即只允许进程对该段中的程序或数据进行读访问。

----- 只执行,即只允许进程调用该段去执行,但不准读该段的内容,也不允许对该段执行写操作。

----- 读/写,即允许进程对该段进行读/写访问。

对于共享段而言,存取控制就显得尤为重要,因而对不同的进程,应赋予不同的读写权限。这时,既要保证信息的安全性,又要满足运行需要。

例如,对于一个企业的财务账目,只允许会计人员进行读写,允许领导去读,对于一般人员则既不准读,更不能写。

-- 3)环保护机构

这是一种功能较完善的保护机制。在该机制中规定:低编号的环具有高优先权。OS核心处于0环内;某些重要的实用程序和操作系统服务占据

中间环;而一般的应用程序则被安排在外环上。在环系统中,程序的访问和调用应遵循以下规则:

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

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

在环保护机构中的调用程序和数据访问的关系图如下:

           


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值