我正在学习模式位的使用,以及某些 CPU(例如 Intel 8086)仅在实模式下运行的事实。在许多来源中,我得知以下内容:
- intel 8086没有保护模式
- 它只能使用前 1 MiB 内存
我的问题是,为什么他们指定只有 1 MiB 内存是可寻址的?这是否意味着除了第一个 MiB 之外还有不可用(但可能可读?)的内存? 第一个 MiB 之外的内存是如何使用的?CPU 是否通过这种方式为操作系统等进程提供某种方式的保护?或者CPU是否真的提供零保护以防止意外覆盖?
最佳答案
8086/8088 没有超过 1M 的可寻址内存。这是因为它只有 20 条地址线,2^20 就是 1,048,576。因此地址范围在 0(十六进制 00000)和 1,048,575(十六进制 FFFFF)之间。正如您正确指出的,这与“保护模式”无关,因为 8086/8088 处理器上不存在“保护模式”。
较旧的处理器可用内存较少:8080 有 16 条地址线,总共 2^16,即 65,536 字节内存。
这类似于“如果只有三位(十进制)数字,则无法表达超过 999 的数字。”
关于assembly - 没有保护模式的 CPU 中的保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929870/