Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
X86 可以使用CPU吗;开关";操作系统加载后,在RealAddress/Protected/Virtual 8086之间?_X86_Cpu Architecture - Fatal编程技术网

X86 可以使用CPU吗;开关";操作系统加载后,在RealAddress/Protected/Virtual 8086之间?

X86 可以使用CPU吗;开关";操作系统加载后,在RealAddress/Protected/Virtual 8086之间?,x86,cpu-architecture,X86,Cpu Architecture,CPU是否可以在“运行时(已加载操作系统)”时更改其工作模式,或者在启动时选择它,但在启动后无法更改? 当选择一种模式时,CPU实际上是在内部重新配置其逻辑电路,还是这些模式只是程序员完成的不同软件实现?x86 CPU可以在保护模式和实模式(虚拟8086模式是前者的一种子模式)之间来回切换。有记录在案的操作序列(不仅仅是单个指令),它需要执行这些操作来更改当前模式,而不需要脱离轨道、锁定或重置 CPU本质上是一个大型而复杂的有限状态机,因此在某种程度上,它会在改变内部状态时重新配置。这可能涉及在

CPU是否可以在“运行时(已加载操作系统)”时更改其工作模式,或者在启动时选择它,但在启动后无法更改?
当选择一种模式时,CPU实际上是在内部重新配置其逻辑电路,还是这些模式只是程序员完成的不同软件实现?

x86 CPU可以在保护模式和实模式(虚拟8086模式是前者的一种子模式)之间来回切换。有记录在案的操作序列(不仅仅是单个指令),它需要执行这些操作来更改当前模式,而不需要脱离轨道、锁定或重置


CPU本质上是一个大型而复杂的有限状态机,因此在某种程度上,它会在改变内部状态时重新配置。这可能涉及在信号级别与外部设备交互方式的一些变化。

x86 CPU可以在受保护模式和实模式(虚拟8086模式是前者的一种子模式)之间来回切换。有记录在案的操作序列(不仅仅是单个指令),它需要执行这些操作来更改当前模式,而不需要脱离轨道、锁定或重置


CPU本质上是一个大型而复杂的有限状态机,因此在某种程度上,它会在改变内部状态时重新配置。这可能涉及在信号电平上与外部设备交互方式的一些变化。

切换到保护模式后,您可以切换回实模式。如果在保护模式下设置段限制,则在切换回时称为非真实模式。模式是硬件支持的,而不仅仅是软件支持的。另一方面,在286上,切换到16位保护模式很容易得到支持(类似于从实模式进入32位保护模式)。英特尔并没有提供一种只使用CPU的机制来切换回实模式。解决方案是重置处理器本身,并在不破坏RAM和BIOS内容的情况下重新启动处理器,BIOS提供了一种机制来帮助操作系统继续运行。你可以想象表演不是很好。这是在386+处理器上解决的。@MichaelPetch非常有趣。我从未想过这种机制,在切换到保护模式后,您可以切换回真实模式。如果在保护模式下设置段限制,则在切换回时称为非真实模式。模式是硬件支持的,而不仅仅是软件支持的。另一方面,在286上,切换到16位保护模式很容易得到支持(类似于从实模式进入32位保护模式)。英特尔并没有提供一种只使用CPU的机制来切换回实模式。解决方案是重置处理器本身,并在不破坏RAM和BIOS内容的情况下重新启动处理器,BIOS提供了一种机制来帮助操作系统继续运行。你可以想象表演不是很好。这是在386+处理器上解决的。@MichaelPetch非常有趣。在目前,我从未想过这种机制,在这种情况下,运行时需要改变模式。例如,对于Windows10系统,现在的程序是否需要在不同的模式下工作?如果Windows可以与硬件对话,而程序只能与Windows对话,那么Windows本身是否会根据需要在模式之间切换?或者通常情况下,这不会发生,而且这些模式只是保持兼容性的一种方式?@Paolo CPU以实模式启动(就像40年前唯一的模式一样)。现在Windows不需要切换回真实模式。在一些罕见的情况下(例如,当没有合适的视频驱动程序时),它会避免这样做,而是在保持保护模式的同时模拟(视频BIOS的)realmode代码。模式开关价格昂贵且不方便,因为它们几乎影响所有设备的运行。另外,请注意,一旦CPU处于64位/长模式,虚拟8086模式就无法立即访问,因此目前通常也不使用它。@由于兼容性原因,Paolo通常在保留旧模式的同时引入新模式。但由于各种原因,它并不总是这样做。例如,MSDOS作为一种有利可图的产品已经过时,而微软对Windows与DOS程序的兼容性不感兴趣。因此,不再需要真正或虚拟的8086模式。因此,AMD和Intel的人员决定不让64位/长模式与之兼容。它与UEFI类似,是BIOS的替代品。UEFI引导您的操作系统已处于保护模式(32位或64位)。@Paolo:x86-64操作系统在“兼容”模式下运行32位用户空间进程,但在长模式下运行内核和64位进程。compat是长模式的一种子模式,设计为易于使用这种方式。(例如,中断以64位长的模式返回内核。)其他模式(如实模式)与此不同;中断处理程序将以实模式运行,并且对于用户空间进程不可用,因为它不支持内存保护或降低权限级别。目前,在这种情况下,运行时更改模式是必要的。例如,对于Windows10系统,现在的程序是否需要在不同的模式下工作?如果Windows可以与硬件对话,而程序只能与Windows对话,那么Windows本身是否会根据需要在模式之间切换?或者通常情况下,这不会发生,而且这些模式只是保持兼容性的一种方式?@Paolo CPU以实模式启动(就像40年前唯一的模式一样)。现在Windows不需要切换回真实模式。在一些罕见的情况下(例如,当没有合适的视频驱动程序时),它会避免这样做,而是在保持保护模式的同时模拟(视频BIOS的)realmode代码。模式开关价格昂贵且不方便,因为它们几乎影响所有设备的运行。另外,请注意,一旦CPU处于64位/长模式,虚拟8086模式就不能立即访问,因此目前通常也不会使用它。@Paolo通常会引入新的模式