5

У меня есть ПК с 64-битным оборудованием.

Я установил 32-битный дистрибутив Ubuntu и хотел бы знать, можно ли на нем запускать 64-битные приложения (вроде как Mac OS X Snow Leopard работает).

3 ответа3

12

32-битная Mac OS X может запускать 64-битные приложения на 64-битном оборудовании.

Это работает потому, что ядро OS X (Darwin) фактически работает в подрежиме совместимости длинного режима.

Windows и Linux не делают этого и обеспечивают более четкое разделение между x86 и x64. В Windows или Linux вы можете запустить 64-битное ядро и 64-битные драйверы (и запустить как 64-битные, так и 32-битные программы) или 32-битное ядро и 32-битные драйверы (и запустить только 32-битные и 16-битные программы).

Обратите внимание, что 16-битный код реального режима не работает в длинном режиме, и, следовательно, Mac OS X, вероятно, не сможет запускать 16-битные программы, если они существуют для Mac OS X и если Mac OS X работает в длинном режиме (включая режим совместимости). Windows также не может запустить 16-битный код реального режима в 64-битном режиме.

VMware Fusion или Parallels, работающие на 32-битной Mac OS X на 64-битном оборудовании, работают с 64-битными гостями.

Кажется, что каждый 32-битный процесс, работающий на 32-битной Mac OS X на 64-битном оборудовании, получает 4 ГБ виртуального адресного пространства пользователя и 4 ГБ виртуального адресного пространства ядра. Я предполагаю, что 64-битные процессы получают 8 ТБ виртуального адресного пространства пользователя и 4 ГБ виртуального адресного пространства ядра (поскольку ядро работает в 32-битном режиме).

Ядро Mac OS X является (как и большинство программ для Mac OS X) универсальным двоичным файлом, содержащим двоичный код для PowerPC, x86 (32-разрядная версия) и x64 (64-разрядная версия). Переключение с одной платформы на другую "просто" загружает соответствующую часть двоичного файла. Код x86 проверяет, доступен ли длинный режим, и переключается в длинный режим, если это возможно, и работает в режиме совместимости для достижения желаемого результата.

NB. Хотя Mac OS X Snow Leopard не работает на PowerPC, ядро все еще содержит код PowerPC, предположительно потому, что его могут использовать двоичные файлы PowerPC. Двоичные файлы PowerPC по-прежнему работают на компьютерах x86 и x64.

6

Если у вас есть процессор, который поддерживает аппаратную виртуализацию (как это делают новейшие Intel), и программное обеспечение виртуальной машины для его поддержки, то можно установить 64-битную ОС в виртуальной машине, когда хост-ОС является 32-битной. Затем вы можете запустить 64-битное приложение внутри виртуальной машины. Но это настолько близко, насколько я могу видеть, что ты получаешь.

1

Как уже говорили другие, в общем случае 64-разрядные приложения не могут работать в 32-разрядной ОС.

Причина, по которой это работает в OS X, заключается в том, что в 10.5 32-битное ядро получило возможность копировать между 32-битным и 64-битным адресным пространством пользователя и имеет некоторые 64-битные обработчики для таких вещей, как trap/syscall. По сути, это гибридное ядро, которое не требует 64-битных драйверов, но имеет определенные 64-битные возможности.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .