1

与 32 位处理器中的段描述符相比,我对理解 8088 中用于物理地址计算的段偏移对之间的区别感到有点困惑。

任何解释将不胜感激。

4

1 回答 1

0

16 位 CPU 只能寻址 64kB 的内存。为了扩展内存范围,引入了段,基本上定义了 pchyscak 可用内存中 64KB 窗口的基地址。

要获得这样一个指针指向的 pyhscial 地址,您必须将段值乘以 10h (16) 并添加偏移地址。IE。如果你有这样的地址

145A:67B1

 145A0   (+10h or << 4)
+ 67B1
------
 1AD51   <- Physical memory address

保护模式描述符类似于这样的段,但具有附加信息。它的长度可达 1-64KB (x286),以及有关权限级别和存在的信息。特权级别用于使操作系统更加安全和独立于用户空间,存在标志用于虚拟内存。

在 386 上,范围被扩展,因此一个段现在可以达到 1MB,并且添加了一个粒度,以便一个段现在是 4096 块的倍数,从而将段大小扩展到 4GB。

描述符中的另一个属性是将段设置为 16 位或 32 位模式,这样 16 位代码仍然可以工作。

于 2013-10-29T11:30:21.670 回答