关于操作系统中重定位与各种分配方式的关系
写这篇回答的起因是做到了一个操作系统选择题,原题目如下:
本题答案为B。D选项中页式管理进行地址越界保护的方法是:地址变换机构将逻辑地址中的虚页号与页表长度相比较,从而判断改地址是否在进程的地址空间中。
而界地址寄存器则是在介绍动态重定位时提到的概念。那么重定位和页式管理的关系是什么呢?
在网上乱查一通,我发现页式管理属于动态重定位的一种实现方式(感谢下面回答的兄弟):
按《操作系统概念》的说法,分页分段也是动态重定位,英文原文是“You may have noticed that paging itself
is a form of dynamic relocation. Every logical address is bound by the
paging hardware to some physical address. Using paging is similar to
using a table of base (or relocation) registers, one for each frame of
memory.”(第十版的362页)
那难道不应该也使用界地址寄存器来保护内存吗?后来仔细想想,页式、段式管理给进程分配的空间都是离散的,每一页的基地址都不一样,如果仅仅使用同一个基地址显然达不到内存保护的效果。
后来发现动态分区分配也可以属于动态重定位的一种,这种连续的分配方式就很适合使用基址寄存器+界地址寄存器的内存保护方式。虽然都是将逻辑地址向物理地址转换,动态重定位的实现方式很多,所以不能一概而论。