没有保护模式的CPU保护

Dev*_*ius 2 assembly operating-system cpu-architecture

我正在学习模式位的使用,以及某些CPU(如Intel 8086)仅在实模式下运行这一事实.在许多消息来源中,我被告知如下:

  • intel 8086没有保护模式
  • 它只能使用前1 MiB的内存

我的问题是,为什么他们指定只有1 MiB的内存可以寻址?这是否意味着除了第一个MiB之外还有无法使用(但可能是可读的?)内存?超出第一架MiB的内存如何使用?这是CPU为诸如操作系统之类的进程提供某种保护方式的方式吗?或者CPU真的提供零保护以防意外覆盖?

Mik*_*ris 5

8086/8088没有超过1M的可寻址内存.这是因为它只有20个地址线,2 ^ 20是1,048,576.这样的地址范围是0(十六进制00000)和1048575(十六进制FFFFF)之间.正如您所正确指出的,这与"保护模式"无关,因为8086/8088处理器上不存在这种情况.

较旧的处理器可用内存较少:8080有16条地址线,总共2 ^ 16或65,536字节的内存.

这类似于说"如果你只有三个(十进制)数字,就无法表达超过999的数字."

  • @Devilius完全没有保护,当在旧计算机上进行汇编编程时,代码中的任何错误都会导致计算机重置(或冻结无限循环),并且您必须重新加载整个开发工具+源(请注意,8位单独的计算机通常总共需要5分钟以上.所以你最好在实际执行之前检查你的代码5次... (4认同)
  • @Devilius这比Ped7g写的更糟糕了:在20世纪80年代甚至出售了可能被错误编写的程序永久损坏的计算机. (3认同)
  • 实际上并非 - 根本没有保护.假设程序员很小心:-) (2认同)