我在Unix中问这个,并建议在这里问一下。
我在Linux Facebook小组上回答了一个问题,有人问是否有可能在64位PC上安装32位操作系统。我的回答是:
绝对可以在64位PC上安装32位操作系统。但是不可能在32位PC上安装64位操作系统。
那么,有人回复了我的评论:
这不是不可能的,但做到这一点并不正确。
那么...... 是否真的可以在32位PC上安装64位操作系统?
我在Unix中问这个,并建议在这里问一下。
我在Linux Facebook小组上回答了一个问题,有人问是否有可能在64位PC上安装32位操作系统。我的回答是:
绝对可以在64位PC上安装32位操作系统。但是不可能在32位PC上安装64位操作系统。
那么,有人回复了我的评论:
这不是不可能的,但做到这一点并不正确。
那么...... 是否真的可以在32位PC上安装64位操作系统?
Answers:
你可以设法安装它(有一些黑客攻击),但它没用,因为它无法启动。所以你可以在技术上,但我不建议这样做,因为大多数人都喜欢有一台可以启动的电脑。
如果您的计算机附带32位操作系统,并且64位操作系统运行正常,那么您应该检查您的实际计算机,因为有时64位计算机带有32位操作系统。
回复原始注释的人可能遇到64位操作系统(可能意味着使用超出32位保护模式或使用64位寄存器之外的任何内存的操作系统)安装和启动处理器限制为32位内存或使用更宽的硬件寄存器。最后一节给出了在32位硬件上安装64位操作系统的真实示例。中间部分解释了为什么不仅可以安装这样的OS,甚至可以使用它(理论上)。
在64位操作系统中,人们可能会期待两件事。第一个是内存可寻址超过4GiB。由于基于BIOS的64位计算机启动到16位(AKA实型)模式,因此可以为某些操作编写一个跳入和跳出长64位内存模式的操作系统(例如,参见https:// www.codeproject.com/articles/45788/the-real-protected-long-mode-assembly-tutorial-了解如何离开64位模式)。或者,在单声道任务环境中,跳转到某些程序的长模式。32位DOS程序通常通过DOS扩展程序进入和退出32位模式以便运行。科学计算平台也可以做类似的事情,以获得运行32位代码的性能优势(是的!32位代码可能比64位代码更快!),除非必要。
人们在64位操作系统中可能会遇到的第二件事是64位寄存器。但是,可以轻松地保持低位模式并根据需要切换到更高位模式。可以有一个包含16位,32位和64位寄存器代码混合的程序。要切换寄存器大小,可以使用操作数大小覆盖前缀(操作码前缀0x66和0x67),尽管最后一个细节通常由编译器处理,对大多数程序员来说是不可见的。
人们可以编写一个仅在操作系统的某些部分使用64位的操作系统。这样的操作系统很容易在想象的范围内。移植到64位的32位操作系统可以仅通过使OS的某些部分成为64位(从而使其成为64位操作系统)来开始。假设音频驱动程序是第一个移植的东西; 这样的操作系统可以正常运行,直到播放音频文件。我猜这种情况发生在业余爱好者OS场景中有一定的规律性,因为有人想要用64位进行一些实验,或者希望提高OS上特定操作集的速度。
64位和32位代码混合的真实示例是MacOS(版本~10.5-10.7)。在64位Intel Mac上,这些版本的MacOS可以启动到32位模式内核并运行64位应用程序64位用户空间操作系统代码。在32位计算机上,计算机仍然可以启动。但是,在尝试运行仅64位应用程序时,MacOS不会崩溃,而是拒绝运行应用程序。
请注意,32位和64位Mac上都安装了相同的磁盘操作系统。您可以在32位Mac上安装MacOS,删除磁盘并将其放入64位Mac并启动64位内核。当然,Hackintosh场景证明您可以在通用的32位计算机上安装MacOS。