如果一个段被重新定位,进程的段表会发生什么?

时间:2015-11-17 06:25:25

标签: memory-management system memory-segmentation

假设系统仅使用分段,不使用分页。如果一个段被换出并重新定位,那么段表会发生什么?是否会有新的段号?表格中的旧条目会发生什么变化?

1 个答案:

答案 0 :(得分:0)

这在很大程度上取决于硬件提供的内容以及操作系统和应用程序如何使用它。

在x86上,段描述符表(全局和本地)有8192个条目。其中描述的细分可以标记为不存在,然后再次显示。

只要表格中有可用空间,就无需移动或删除段描述符,这会更改段选择器(您所谓的段号 )。

但是如果段选择器发生更改(段选择器包含段表中的段位置(索引)),则需要更新保存段选择器的任何寄存器或内存变量。在程序状态下更新段选择器有其成本并且可能过高。为了简化问题,操作系统可能要求没有其他软件使用段选择器进行操作。这将使操作系统更容易更新分段选择器,它不需要跟踪应用程序内存中的分段选择器,它只需要处理应用程序的分段寄存器。

但是,x86可能有多个本地段描述符表,每个应用程序一个。在这种情况下,每个应用程序8192个段是充足的,因此用尽独特的段选择器不是问题,并且不需要压缩/碎片整理段描述符表。

其他硬件可能具有其他功能或限制。就像我说的,这取决于。