Skip to content

3.7 其它管理方式

Giovanna

About 1212 wordsAbout 4 min

2024-08-31

一、请求分段存储管理方式

1. 基本原理

  • 建立在基本分段机制之上

    • 程序的逻辑地址空间被划分为若干个大小不同的段
    • 每个逻辑段装载到一段连续的物理内存区域
    • 段表记录逻辑段和物理段的对应情况
  • 引入请求调段和分段置换机制

    • 部分逻辑段载入内存
    • 对换机制
    • 以段作为换入或换出的基本单位

2. 硬件支持

段表机制

image.png

  • 访问字段A:用于记录本段在一段时间内被访问的次数,或记录本段最近已有多长时间未被访问

  • 修改位M:表示该段在调入内存后是否被修改过

  • 状态位P:用于指示本段是否已调入内存

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

  • 外存地址:用于指出本段在外存上的地址

缺段中断机制

每当所要访问的段不在内存时,便产生缺段中断,请求OS将所缺之段调入内存。

与缺页中断类似——在指令执行期间产生和处理中断信号;以及一条指令在执行期间,可能产生多次缺段中断。但由于段是信息的逻辑单位,故不会出现一条指令被分割在两个分段中的情况。

请求分段系统中的中断处理过程:

image.png

地址转换机制

  • 基本分段地址转换部分

  • 缺段中断处理部分

  • 段换出部分

请求分段系统的地址变换过程:

image.png

3. 动态链接和链接中断处理

  • 采用请求分段存储管理方式可以实现程序的动态链接

  • 在程序开始运行时,只将主程序段装配好并调入内存,其它各段的装配是在主程序段的运行过程中逐步完成

  • 每当需要调用一个新段时,再将这个新段装配好,并与主程序段链接。(页式存储管理方式难以实现动态链接,其逻辑地址是一维的)

二、段页式虚拟存储技术

1. 基本原理

  • 建立在段页式存储技术之上

    • 程序的逻辑空间划分为若干大小不同的段
    • 每个段划分为若干固定大小的页面
    • 物理内存划分为若干固定大小的页框
    • 页面可以载入任意页框——页表记录载入情况
  • 引入请求调页和页面置换机制

    • 部分页面载入内存
    • 对换机制
    • 以页面作为换入或换出的基本单位
  • 地址变换

    • 先查段表,再查该段的页表
    • 缺段中断和缺页中断

三、共享与保护

1. 共享段表

整个系统一张

  • 段本身信息

  • 引用者信息

image.png

2. 共享段的分配

  • 第一次访问

    • 分配内存
    • 增加共享段表
    • 修改进程段表
  • 后续访问

    • 修改共享段表
    • 修改进程段表

3. 共享段的回收

  • count=0

  • count≠0

4. 分段保护

  • 越界检查

    • 段号越界检查
    • 段内页号越界检查
  • 存取控制检查

    • R、W、X
  • 环保护机构

    • 内环可访问外环数据
    • 外环可请求内环服务

image.png

5. 信息共享示例

例如,有一个多用户系统,可同时接纳40个用户,他们都执行一个文本编辑程序(Text Editor)。如果文本编辑程序有160KB的代码和另外40KB的数据区,则总共需有8000KB的内存空间来支持40个用户。如果160KB的代码是可重入的(Reentrant),则无论是在分页系统还是在分段系统中,该代码都能被共享,在内存中只需保留一份文本编辑程序的副本,此时所需的内存空间仅为1760KB(40×40+160),而不是8000KB。

假定每个页面的大小为4KB,那么,160KB的代码将占用40个页面,数据区占10个页面。为实现代码的共享,应在每个进程的页表中都建立40个页表项,它们的物理块号都是21#~60#。在每个进程的页表中,还须为自己的数据区建立页表项,它们的物理块号分别是61#~70#、71#~80#、81#~90# 等等。

image.png

在分段系统中,实现共享则容易得多,只需在每个进程的段表中为文本编辑程序设置一个段表项。

image.png