我有点困惑,因为我的脑袋总是存在虚拟内存的想法。

但由于我理解纯分割也想象一个虚拟地址空间,划分为全部加载RAM的段。

与分段的虚拟内存的差异,可能有一些段它不在RAM中。

是正确的吗?

我添加一个问题: 在分段与分页和分页和双级寻呼之间有实际差异,除了“限制”的段方法的保护之外,它是相同的。或者还有另一个差异?

有帮助吗?

解决方案

no,它不正确。例如,在X86上,分割使用由两个部分组成的“远”指针:段选择器(加载到段寄存器,例如,DS)和偏移到段中。段偏移始终以0开始。CPU使用段选择器找到包含段的线性基础地址,长度和访问权限的段描述符。所有访问都是长度检查的;如果您尝试访问段限制之外或使用无效的访问(例如,写入只读段),则CPU将生成普通保护故障。

由于段地址始终为零,并且段基于段选择器中隐含,因此OS可以在不影响程序使用该数据的情况下移动段和碎片整理存储器。 (将其与“扁平”内存模型对比,其中如果移动某些数据,您也必须更新指向它的所有指针。)

现在,当禁用分页时,线性段基地址是其物理内存地址。启用分页时,MMU正常翻译到段数据的所有访问。

其他提示

如果您认真了解在此级别的记忆管理,则通过读取操作系统概念由Silberschatz,Galvin和Gagne。您应该能够找到一个廉价的旧版。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top