2012-03-30 2 views
2

OS X Lion (10.7) OS는 대부분 Activity Monitor에보고 된대로 64 비트 바이너리에서 실행됩니다. 내 노트북이 32 비트 버전의 EFI와 32 비트 커널을 실행한다는 사실을 감안할 때 아치 믹싱은 일반적으로 어떻게 작동합니까?다윈 커널 아키텍처 및 OS X, 32 비트 커널에서 64 비트, 어떻게 작동합니까?

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) 바이너리를 실행하는 것이지만, 다른 방법은 주위 AFAIK는 취소 할 수 없습니다 64B 모드로 CPU를 밀어 필요합니다.

이 질문에 충분히 분명 희망 ..

답변

4

- 64 아키텍처는 매우 복잡하다; 64 비트 모드와 32 비트 모드가 아니라 두 가지 주 모드 (길고 레거시)가 있으며 각 모드에는 여러 하위 모드가 있습니다 (Wikipedia article 참조).

레거시 모드에서 CPU는 본질적으로 32 비트 CPU를 에뮬레이션합니다. 다양한 서브 모드 (실제, 보호 된 등)가 있지만 64 비트 명령어 나 어드레싱을 전환하는 기능은 없습니다. 일반적으로 비 64 비트 가능 OS가이 모드에서 실행됩니다.

긴 모드에서 CPU는 64 비트 기능을 갖지만 32 비트 및 16 비트 "호환성"모드로도 실행할 수 있습니다. 모드 전환은 코드 세그먼트 설명자의 L 및 D 플래그에 의해 제어됩니다 (기본적으로 "64 비트 환경에서 x86 확장"은 this PDF 참조). 즉, 메모리의 다른 섹션은 64, 32, 또는 16 비트 코드이고, CPU는 현재 실행중인 코드 세그먼트에 대해 적절한 모드로 전환합니다. 커널의 코드 세그먼트는 실행중인 응용 프로그램의 코드 세그먼트와 독립적으로 64 비트 또는 32 비트로 플래그 될 수 있습니다.

그래서 원칙적으로 간단합니다. 실제로, 내가 알지 못하는 복잡한 합병증이 있음을 확신한다. (컨텍스트 스위칭 프로세스에 대해서는 그다지 잘 알지 못한다.) OS가 "알고있다"는 것은 64 비트에서 실행 중이다. CPU를 사용하고 코드 세그먼트 설명자를 적절하게 구성하므로 32 비트 커널에서 64 비트 프로세스를 실행하는 데 근본적인 문제는 없습니다.

BTW, OS X도 PowerPC G5 CPU의 32 비트 커널에서 버전 10.3까지 64 비트 프로세스를 실행할 수 있습니다. PPC CPU는 완전히 다른 아키텍처를 가지고 있으며 모드 전환이 어떻게 작동하는지 전혀 알지 못합니다.

+1

좋은 답변, +1 :) – Macmade

1

하여 EFI 및 커널은 별도의 두 가지 ...
당신은이 64bit 커널와 32 비트 EFI를 할 수 있습니다. 여기에 요점은 없습니다 ...

32 비트 모드로 실행하지 않는 한 라이온스의 커널은 기본적으로 64 비트 모드입니다.

«아치 믹싱»이라고하는 것은 x86_64 표준에 의해 보증됩니다.
64 비트 모드는 32 비트 코드와 완벽하게 호환됩니다.

32 비트 모드로 64 비트 코드를 실행할 수 없습니다.
그러나 Apple의 Mach-O 형식은 32 비트 및 64 비트 코드를 제공하는 바이너리를 빌드 할 수 있으므로이 문제를 해결합니다.

편집은 분명히, 맥 OS X는 전체 32/64bit를의 CPU 모드가 없습니다.
저는 이것이 어떻게 가능한지, CPU로 내부적으로 어떻게 관리 하는지를 정말로 모릅니다.

그러나 모든 프로그램이 최상의 모드에서 실행됩니다.
그래서 나는 64bit를 네이티브 코드는 ...

더보고하려고합니다 ... 32 비트 커널을 실행할 수 있습니다, 단지 잘못 :)

+0

답변 해 주셔서 감사합니다. 필자의 시스템은 uname이보고 한 것처럼 항상 32 비트 커널을 부팅합니다. 제 질문은 64b 코드가 32b 커널에서 어떻게 실행되는지에 관한 것입니다. 나는 반대 상황이 일반적인 장소 즉 Linux, Win 등등에 있음을 안다. – overscore

+1

편집을 참조하십시오.) 아주 좋은 질문 ... – Macmade

관련 문제