操作系统——第五章笔记(三)

请求分段存储管理方式
在请求分段系统中,程序运行之前,只需先调入若干个分段(不必调入所有的分段),便可启动运行。当所访问的段不在内存中时,可请求OS将所缺的段调入内存。
1.请求分段中的硬件支持
1.1段表机制
在这里插入图片描述

  1. 存取方式 :用于标识本分段的存取属性。R,R/W,W
  2. 访问字段A :用于记录本段被访问的频繁程度。
  3. 修改位M :表示该段在调入内存后是否被修改过。
  4. 存在状态位P :指示该段是否已调入内存。
  5. 增补位 :特有字段,表示该段运行中是否做过动态增长.
  6. 外存地址:用于指出该段在外存上的起始地址(盘块号)。
    1.2缺段中断机构
    发现运行进程所访问段尚未调入内存
     由缺段中断机构产生一缺段中断信号
     进入OS,由缺段中断处理程序将所需的段调入内存。
     缺段中断同样在一条指令的执行期间产生和处理中断,一条指令执行可能产生多次缺段中断。但不会出现一条指令被分割在两个分段中或一组信息被分割在两个分段中的情况。
    1.3地址变换机构
    基于分段系统地址变换机构的基础
     段调入内存
     修改段表
     再利用段表进行地址变换。
    2.分段的共享和保护
    分段在逻辑意义上划分,实现共享和保护都较方便。以下讨论具体实现:
    2.1实现共享:共享段表
    在内存中配置一张共享段表,每个共享段都占有一表项,记录如下内容:
    共享计数count:
     共享段为多个进程所需要,当某进程不再需要它而释放它时,系统并不回收该段所占内存区,仅当所有共享该段的进程全都不再需要它时,才由系统回收该段所占内存区。设置count用于记录有多少个进程需要共享该分段。
     存取控制字段:一个共享段给不同的进程以不同的存取权限。
     段号:对一个共享段,不同的进程可用不同的段号。
    2.2共享段如何分享与回收
    1)共享段的分配
     第一个请求使用该共享段的进程A:系统为该共享段分配一物理区,再把共享段装入该区;
     将该区的始址填入A的段表相应项;
     共享段表中增加一表项,填写有关数据,count置1;
     其他进程B也调用该共享段时,无需再为该段分配内存,只需在B的段表中增加一表项,填写该共享段的物理地址;在共享段的段表中,填上调用进程的进程名、存取控制等,再执行count:=count+1操作。
    2)共享段的回收
     包括撤消在进程段表中共享段所对应的表项,执行count:=count-1。
     如果count为0,则由系统回收该共享段的物理内存,并取消共享段表中该段所对应的表项。
    2.3分段保护
    1)越界检查
     段表寄存器存放了段表长度;段表中存放了每个段的段长。
     在进行存储访问时,将段号与段表长度比较,段内地址与段长比较。
    2)存取控制检查
     尤其表现在不同进程对共享段的不同使用上。段表每个表项都设置“存取控制”字段,规定该段的访问方式:只读,只执行,读/写。
    3)环保护机构
     规定:低编号的环具有高优先权。
     遵循的原则:一个程序可以访问驻留在相同环或较低特权环中的数据。一个程序可以调用驻留在相同环或较高特权环中的服务。

猜你喜欢

转载自blog.csdn.net/weixin_43271377/article/details/84455405