Почему мое ядро ​​Mac OS X 10.6 работает в 32-битном режиме?

10

У меня есть MacBook Pro (5,1) с 4 ГБ памяти под управлением 10A432 - но он работает под управлением 32-разрядного ядра.

Любые идеи, почему он не будет работать в 64-битном режиме, и как я могу это сделать?

Chopper3
источник
Я понял, что самой целью 10.6 было переписать основной компонент, чтобы максимально использовать 64-битную версию. Итак, вы говорите, что большую часть времени вы будете запускать оптимизированный код в 32-битной среде? ...
ОскарРиз
не знаю, большая часть кода явно 64-битная, но ядро, похоже, не для меня, во всяком случае
Chopper3

Ответы:

12

В «Обзоре снежного барса» Джона Сиракузы он обсуждает 64-битный переход .

тигр леопард Снежный барс

Короткая версия: из-за отсутствия «смешанного режима» 64-битное ядро ​​требует 64-битных расширений ядра и драйверов .

Так как они пока еще не доступны, Apple выбрала 32-битную версию по умолчанию, чтобы избежать поломок.

Инструкция из статьи:

Для всех Mac с поддержкой K64 загрузитесь, одновременно удерживая клавиши «6» и «4», чтобы выбрать 64-разрядное ядро. Для более постоянного решения используйте команду nvram, чтобы добавить ее arch=x86_64в boot-argsстроку, или отредактируйте файл /Library/Preferences/SystemConfiguration/com.apple.Boot.plistи добавьте arch=x86_64в строку флагов ядра:

...
    <key>Kernel</key>
    <string>mach_kernel</string>
    <key>Kernel Flags</key>
    <string>arch=x86_64</string>
...

Чтобы переключиться обратно на 32-битное ядро, удерживайте клавиши «3» и «2» во время загрузки или используйте один из описанных выше приемов, заменив «x86_64» на «i386».

Озеро
источник
Спасибо Гарету за редактирование (перефразированное изображение ссылается на imgur от arstechnica и цитирует соответствующие инструкции из статьи).
Озеро
7

В отличие от большинства других операционных систем, запуск Snow-Leopard в 64-разрядном ядре не дает больших преимуществ. В Windows и Linux вам нужно 64-битное ядро ​​для запуска 64-битных приложений. В OS X вы можете запускать 64-битные приложения с 32-битным ядром.

Большинство людей, похоже, обеспокоены тем, что запуск 32-разрядного ядра в OS X ограничивает производительность или возможности их компьютеров, но на практике это не оказывает существенного материального воздействия. 32-разрядное ядро ​​поддерживает запуск 64-разрядных приложений, и эти приложения имеют виртуальное 64-разрядное адресное пространство, которое ядром сопоставляется с 36-разрядным адресным пространством PAE, поэтому они ведут себя так же, как и на 64-разрядных. битовое ядро, только с более ограниченным использованием памяти и отображаемым в памяти вводом / выводом в используемый диапазон. То, как Apple обрабатывает это адресное пространство в 32-битном ядре, приводит к ограничению 32 ГБ для физической памяти, преодолев 32-битное ограничение 4 ГБ с PAE. С точки зрения производительности не так уж много пользы, если она вообще поддается измерению с использованием 64-битного ядра с 32 ГБ памяти или меньше. Если ты хочешь,6и 4ключи при запуске. Я сомневаюсь, что вы увидите и значительную разницу в производительности.

Другой проблемой является совместимость с драйверами устройств, расширениями ядра и прошивкой устройства. Для драйверов устройств и расширений ядра они должны соответствовать разрядности, перекомпилироваться или переписываться (особенно, если они имеют какую-либо сборку, какие части являются общими в этих типах кода). Изначально EFI от Apple выпускался только в 32-битной версии, а в последнее время некоторые модели имеют 64-битную прошивку. Чтобы операционная система могла взаимодействовать с микропрограммой, необходимо, чтобы бит ядра и EFI совпадали. Взаимодействие с EFI - это выбор загрузочного диска или некоторые элементы управления питанием (например, если у вас более одной установки OS X и вам нужно выйти из спящего режима после разрядки батареи).

Так будет ли 64-битное ядро ​​полезным? С практической точки зрения не совсем на практике, и я вижу мудрость в том, чтобы Apple использовала 32-битные ядра для большинства машин, работающих под управлением Snow Leopard, для лучшей совместимости.

Лара Дуган
источник
7

Согласно тому, что просочилось в MacRumors (поскольку официальные документы находятся под NDA) ( Источник ), только следующие компьютеры поддерживают работу с 64-битным ядром:

  • Mac Pro начала 2008 года (MacPro 3,1)
  • Начало Xserve 2008 года (Xserve 2,1)
  • MacBook Pro (15 "/ 17") (MacBookPro 4,1)
  • 2008 iMacs (iMac 8,1)
  • Unibody MacBook Pro (MacBookPro 5,1 и 5,2)
  • Mac Pro начала 2009 года (MacPro 4,1)
  • 2009 iMacs (iMac 9,1)
  • Начало 2009 года Xserve (Xserve 3,1).

Только XServe по умолчанию используют 64-битное ядро.

Если вы запускаете компьютер , удерживая 6и 4ключи вы запустить 64-битное ядро, или в соответствии с другим источником нарушения их NDA вы можете изменить , /Library/Preferences/SystemConfiguration/com.apple.Boot.plistдобавив флаг ядра или сделать это в NVRAM.

Chealion
источник
Я тоже это заметил, поэтому я поставил свой код модели.
Chopper3
Начиная с [6] [4] работает, но каково преимущество работы ядра на 64 битах? ...
ОскарРиз
@ Оскар Рейес: Вы можете использовать 64-битные драйверы, а процессы могут получить доступ к более чем 4 ГБ памяти. Так прямо сейчас? Нет, если вы не запускаете приложение на стороне сервера, которое может использовать более 4 ГБ памяти - следовательно, 64-битное значение по умолчанию для Xserve.
Chealion
5

К сожалению, запутанная ссылка Джейсона скрыла очень полезную информацию:

ioreg -l -p IODeviceTree | grep firmware-abi

64-битные EFI Mac будут сообщать

| | "firmware-abi" = <"EFI64">
Только в любви
источник
1

До выхода Snow Leopard мы не будем знать, какие системы будут поддерживать режим 64/32 бит ... Но все признаки того, что Snow Leopard будет прозрачным с поддержкой ядра ...

Но, увы, извините за то, что я «унылый», если вы являетесь зарегистрированным пользователем Appleseed, на форуме Appleseed обсуждается, как перевести ядро ​​в 64-битный режим. В противном случае, если вы получили Snow Leopard в другом месте, не беспокойтесь об этом.

Выпуск Snow Leopard уже не за горами ...

Бенджамин Шолльник
источник
0

Это нормально, вот почему:

  • 32-битный SL БУДЕТ запускать 64-битные приложения; SL совместим с 64 битами независимо от того, какую версию ядра вы загружаете

  • SL даже при загрузке с 32-битным ядром все равно сможет запускать 64-битные приложения и обращаться к более чем 4 ГБ ОЗУ

  • Причина, по которой вам нужно 64-битное ядро, заключается в том, что ядру нужно было обращаться к более чем 32 ГБ ОЗУ (следовательно, это по умолчанию на Xserve), или у вас есть 64-битный кекс (разработчики)

  • 64-битные ядра не делают ваш компьютер волшебно быстрее; если вам не требуется более 32 ГБ ОЗУ (в любом случае, только в IOW только Xserve), вам это не нужно по причинам

  • установив 32-битное значение по умолчанию в потребительских системах и предоставив профессионалам и разработчикам опцию 64-битного ядра, Apple сохраняет максимальную совместимость и максимальную гибкость

  • 64 бит - это в основном опция разработчика; они могут использовать его для тестирования своих новых 64-битных драйверов / kexts, чтобы убедиться, что они работают с 64-битным ядром

Перефразируя и цитируя Snow Leopard, по умолчанию загружается 32-битное ядро.

случайный
источник