Por que meu kernel do Mac OS X 10.6 é executado no modo de 32 bits?


10

Eu tenho um MacBook Pro (5,1) com 4 GB de memória executando 10A432 - mas está executando o kernel de 32 bits.

Alguma idéia de por que ele não seria executado no modo de 64 bits e como posso fazê-lo?


Entendi que o próprio objetivo da versão 10.6 era reescrever o componente principal para maximizar o uso de 64 bits. Então, com isso, você está dizendo que ele executará código otimizado em 32 bits na maioria das vezes? ...
OscarRyz 15/08/09

Não sei, a maioria do código é claramente de 64 bits, mas kernel não parece ser, pelo menos para mim
Chopper3

Respostas:


12

Em Review of Snow Leopard, de Jon Siracusa, ele discute a transição de 64 bits .

Tigre Leopardo Leopardo da neve

A versão curta é: como não há um modo misto, um kernel de 64 bits requer extensões e drivers de kernel de 64 bits .

Como esses ainda não estão amplamente disponíveis, a Apple escolheu o padrão de 32 bits para evitar quebrar muitas coisas.

Instruções do artigo:

Para todos os Macs compatíveis com K64, inicialize enquanto mantém pressionadas as teclas "6" e "4" simultaneamente para selecionar o kernel de 64 bits. Para uma solução mais permanente, use o comando nvram para adicionar arch=x86_64à sua boot-argsstring ou edite o arquivo /Library/Preferences/SystemConfiguration/com.apple.Boot.pliste adicione arch=x86_64à string Kernel Flags:

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

Para voltar ao kernel de 32 bits, mantenha pressionadas as teclas "3" e "2" durante a inicialização ou use uma das técnicas acima, substituindo "x86_64" por "i386".


Agradecimentos a Gareth pela edição (links de imagens hospedadas novamente para imgur da arstechnica e citadas instruções relevantes do artigo).
Lake

7

Não há muitos benefícios em executar um kernel de 64 bits no Snow Leopard, diferente da maioria dos outros sistemas operacionais. No Windows e Linux, você precisa de um kernel de 64 bits para executar aplicativos de 64 bits. No OS X, você pode executar aplicativos de 64 bits com o kernel de 32 bits.

A maioria das pessoas parece preocupada que a execução do kernel de 32 bits no OS X limite o desempenho ou os recursos de suas máquinas, mas na prática isso não tem um impacto material significativo. O kernel de 32 bits suporta a execução de aplicativos de 64 bits, e esses aplicativos têm um espaço de endereço virtual de 64 bits que é mapeado para um espaço de endereço PAE de 36 bits pelo kernel, para que se comportem da mesma maneira que em um sistema de 64 bits. kernel de bits, apenas com uso de memória mais restrito e E / S mapeada na memória para o intervalo utilizável. A maneira como a Apple lida com esse espaço de endereço no kernel de 32 bits resulta em um limite de 32 GB para memória física, quebrando o limite de 4 GB de 32 bits com o PAE. Em termos de desempenho, não há muitos benefícios, se houver um mensurável ao usar um kernel de 64 bits com 32 GB de memória ou menos. Se você quiser,6e 4chaves na inicialização. Duvido que você veria uma diferença significativa no desempenho.

O outro problema é a compatibilidade com drivers de dispositivo, extensões do kernel e o firmware do dispositivo. Para drivers de dispositivo e extensões do kernel, eles precisam corresponder ao bit ness, ser recompilados ou reescritos (especialmente se eles tiverem um assembly, quais partes são comuns nesses tipos de código). O EFI da Apple veio originalmente apenas em 32 bits e, mais recentemente, alguns modelos têm firmware de 64 bits. Para que o sistema operacional fale com o firmware, a bit-ness do kernel e a EFI precisam corresponder. As coisas que envolvem conversar com a EFI são como escolher um disco de inicialização ou alguns controles de gerenciamento de energia (como se você tiver mais de uma instalação do OS X e precisar acordar depois que a bateria acabar).

Então, um kernel de 64 bits seria um benefício? Em termos de desempenho, não é realmente na prática, e posso ver a sabedoria da Apple usando kernels de 32 bits para a maioria das máquinas executando o Snow Leopard para melhor compatibilidade.


7

De acordo com o que vazou para os MacRumors (uma vez que os documentos oficiais estão sob NDA) ( Origem ), apenas os seguintes computadores suportam a execução do kernel de 64 bits:

  • Início de 2008 Mac Pro (MacPro 3,1)
  • Início de 2008 Xserve (Xserve 2,1)
  • Profissionais de MacBook (15 "/ 17") (MacBookPro 4,1)
  • IMacs de 2008 (iMac 8,1)
  • Profissionais unibody de MacBook (MacBookPro 5,1 e 5,2)
  • Início de 2009 Mac Pro (MacPro 4,1)
  • IMacs de 2009 (iMac 9,1)
  • Início de 2009 Xserve (Xserve 3,1).

Somente os XServes usam o kernel de 64 bits por padrão.

Se você inicializar o computador segurando as teclas 6e 4, iniciará o kernel de 64 bits ou, de acordo com outra fonte que esteja quebrando o NDA, poderá editar a /Library/Preferences/SystemConfiguration/com.apple.Boot.plistadição de um sinalizador do kernel ou fazê-lo no nvram.


Também vi isso, é por isso que coloquei meu código de modelo.
Chopper3

Começando com [6] [4] funciona, mas qual é o benefício de ter o kernel executando em 64 bits? ...
OscarRyz 04/09/09

@ Oscar Reyes: Você pode usar drivers de 64 bits e os processos podem acessar mais de 4 GB de memória. Então agora? Nenhuma, a menos que você esteja executando um aplicativo no servidor que possa utilizar mais de 4 GB de memória - daí o padrão de 64 bits no Xserves.
Chealion 04/09/09

5

Infelizmente, o link ofuscado de Jason escondeu uma informação muito útil:

ioreg -l -p IODeviceTree | grep firmware-abi

Os Macs EFI de 64 bits reportarão

| | "firmware-abi" = <"EFI64">

1

Até o lançamento do Snow Leopard, não saberemos quais sistemas suportarão o modo de 64/32 bits ... Mas todas as indicações são de que o Snow Leopard será transparente com o suporte do kernel ...

Mas, infelizmente, desculpe-me por ser "deprimente", se você é um membro registrado da Appleseed, o fórum da Appleseed discute como forçar o kernel para o modo de 64 bits. Caso contrário, se você recebeu o Snow Leopard em outro lugar, não se preocupe.

A liberação do Snow Leopard está ao virar da esquina ...


0

Está tudo bem, aqui está o porquê:

  • O SL de 32 bits executará aplicativos de 64 bits; O SL é compatível com 64 bits, independentemente da versão do kernel inicializada

  • O SL, mesmo que inicializado com o kernel de 32 bits, ainda poderá executar aplicativos de 64 bits e endereçar mais de 4 GB de RAM

  • O motivo pelo qual você precisaria do kernel de 64 bits é se o kernel precisava endereçar mais de 32 GB de RAM (portanto, é padrão no Xserve) ou se você possui um kext de apenas 64 bits (desenvolvedores)

  • Kernels de 64 bits não tornam seu computador magicamente mais rápido; a menos que você precise de mais de 32 GB de RAM (apenas IOW Xserves de qualquer maneira), não será necessário por motivos de endereçamento

  • tornando o padrão de 32 bits nos sistemas de consumo e oferecendo aos profissionais e desenvolvedores a opção de kernel de 64 bits. A Apple mantém a compatibilidade e a flexibilidade máximas

  • 64 bits é principalmente uma opção de desenvolvedor; eles podem usá-lo para testar seus novos drivers / kexts de 64 bits para garantir que eles funcionem com o kernel de 64 bits

Parafraseado e citado do Snow Leopard carrega o kernel de 32 bits por padrão

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.