5.5 请求分段存储管理方式

L32

学习目标

请求分段在基本分段基础上增加状态位和外存地址等段表项,配合缺段中断实现按需调入,并支持段的共享与保护。

  • 请求分段的硬件支持:段表机制(增加状态位、外存地址)、缺段中断机构、地址变换机构。
  • 请求分段与请求分页的区别:段是信息的逻辑单位,按用户需要划分;页是物理单位,按系统需要划分。
  • 分段的共享与保护:通过段表实现共享段,通过段表中的存取控制信息实现保护。

原理 · 深入理解

5.5.1 请求分段中的硬件支持

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

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

请求分段式存储管理需要硬件机构支持,才能快速完成请求分段功能。与请求分页系统相似,所需硬件支持包括段表机制、缺段中断机构和地址变换机构。

请求分段式管理的主要数据结构是请求段表。除请求分页机制中的访问字段A、修改位M、存在位P和外存始址外,还增加了存取方式字段和增补位,供程序调进、调出时参考。

  1. 段表机制
  2. 缺段中断机构
  3. 地址变换机构
图5-12 请求分段系统中的中断处理过程 缺段中断 调入段 可能紧凑 重启指令
图5-12 请求分段系统中的中断处理过程

缺段中断机构需要在一条指令的执行期间产生和处理中断,一条指令执行期间可能产生多次缺段中断。

由于分段是信息的逻辑单位,不会出现一条指令或一组信息被分割在两个分段中的情况。

图5-13 请求分段系统的地址变换过程 逻辑地址 表项 物理块 / 段 内存 逻辑地址 → 查表 → 物理地址
图5-13 请求分段系统的地址变换过程

5.5.2 分段的共享与保护

共享段的分配:对第一个请求使用该共享段的进程,由系统为该共享段分配一物理区,再把共享段调入该区,将该区始址填入请求进程段表的相应项,并在共享段表中增加一表项。

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

图5-14 共享段表项 段名 计数 状态 editor 2 在内存
图5-14 共享段表项

在分段系统中,每个分段在逻辑上相对独立,比较容易实现信息保护。常采用以下几种措施确保信息安全。

越界检查

利用地址变换机构完成。

存取控制检查

以段为基本单位进行。

环保护机构

通过环保护机制实现多层保护。

  1. 共享进程计数count
  2. 存取控制字段
图5-15 环保护机构 环 0 内核 环 1 系统 环 3 用户 低环权限高,不能随便往内环跳
图5-15 环保护机构

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
  • 交互动画复习;写三句「虚存理论→MCU 实践」对照。

请求分段存储管理方式

device-controller

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 能叙述中断处理大致步骤。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。
  • 能指出 SOWL 至少一个外设的控制路径。
  • 能默写 I/O 软件分层。
  • 能向同伴解释为何第五章几乎全是动画课。

延伸思考

  • 中断里能否 LOS_TaskDelay?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
  • WS2812 时序敏感,适合中断还是关中断硬刷?
  • 裸机实验跳过了哪几层?

← 本阶段封面 · 课程列表