Skip to content

2009年 408 操作系统 第 26 题

操作系统2009年选择题2分

题目

分区分配内存管理方式的主要保护措施是( )。

错因

B

"程序代码保护"是个宽泛的说法,分区分配的具体机制不在于"保护代码"——它的核心保护是地址边界:让进程访问不到自己分区之外的内存。代码 / 数据 / 栈都在分区里,由界地址统一保护。

C

数据保护和代码保护类似——分区分配方式不区分"代码"和"数据"做不同保护,只在分区边界上拦截非法访问。"数据保护"作为分区分配的"主要保护措施"颗粒度太细,没切中分区分配的机制。

D

栈保护更具体——栈内的越界检查通常由编译器或语言运行时(栈溢出检测)做,不是分区分配的硬件机制。分区分配关注的是进程间的地址隔离,栈的内部保护是另一回事。

总解析

分区分配的内存保护机制:每个进程被分配一段连续的内存区域(一个分区),OS / 硬件在 PCB 里保存这段区域的边界(基址 + 限长 / 上下界),每次访存时硬件比对。

界地址保护的机制

访问地址 a

检查:基址 ≤ a < 基址 + 限长(或 上界 ≥ a ≥ 下界)
   合法 → 允许访问
   非法 → 触发越界异常 → 进程被终止或调内核处理
选项描述判定
A界地址保护(基址 + 限长 / 上下界寄存器) —— 分区分配的标志性保护机制
B程序代码保护✗ 太宽泛,分区分配不区分代码 / 数据
C数据保护✗ 同 B
D栈保护✗ 太细,且栈保护通常由语言层做

两种界地址实现

实现寄存器检查
基址 + 限长基址寄存器(分区起址)+ 限长寄存器(分区长度)检查 0 ≤ 偏移 < 限长;物理地址 = 基址 + 偏移
上下界上界寄存器 + 下界寄存器检查 下界 ≤ 物理地址 ≤ 上界

分区分配的核心思想是"每个进程一个连续盒子",保护就是不让进程钻出自己的盒子——这正是界地址做的事。其他保护(代码段只读、栈不可执行等)属于更高级的内存保护,分区分配方式本身只做到这一步。

最终答案是 A

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题