gpt4 book ai didi

macos - Darwin 内核架构和 OS X,32 位内核上的 64 位,这是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 02:24:39 41 4
gpt4 key购买 nike

据 Activity Monitor 报告,OS X Lion (10.7) 操作系统主要运行在 64 位二进制文​​件上。鉴于此,以及我的笔记本电脑运行的是 32 位版本的 EFI,因此也是 32 位内核,那么 arch mixing 通常是如何工作的?

Darwin Kernel Version 11.3.0: Thu Jan 12 18:48:32 PST 2012; root:xnu-1699.24.23~1/RELEASE_I386

通常情况下,一个人会在 x86_64 上运行 32b 二进制文件,但反之则需要将 cpu 插入 64b 模式,这 AFAIK 无法撤消。

希望这个问题足够清楚..

最佳答案

x86-64 架构相当复杂;它不仅有 64 位模式和 32 位模式,还有两种主要模式(长模式和传统模式),每种模式都有许多子模式(参见 Wikipedia article)。

在 Legacy 模式下,CPU 本质上模拟 32 位 CPU。它具有各种子模式(真实、 protected 等),但无法切换使用 64 位指令或寻址。通常,不支持 64 位的操作系统将在此模式下运行。

在 Long 模式下,CPU 具有 64 位能力,但也可以在 32 位和 16 位“兼容”模式下运行。模式切换由代码段描述符中的 L 和 D 标志控制(参见 this PDF 中的“Extending x86 for the 64-bit World”)——本质上,内存的不同部分可以标记为包含 64-、32 - 或 16 位代码,并且 CPU 切换到适合其当前运行的代码段的模式。内核的代码段可以标记为 64 位或 32 位,与运行应用程序的代码段无关。

所以原则上很简单。在实践中,我确信有很多我不知道的复杂情况(我不太了解上下文切换过程),但只要操作系统“知道”它在 64 位上运行CPU 并适当配置代码段描述符,在 32 位内核下运行 64 位进程没有根本问题。

顺便说一句,OS X 也可以在 PowerPC G5 CPU 上的 32 位内核下运行 64 位进程,最早可以追溯到 10.3 版。 PPC CPU 有一个完全不同的架构,我不知道那里的模式切换是如何工作的。

关于macos - Darwin 内核架构和 OS X,32 位内核上的 64 位,这是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9951287/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com