Perché il mio kernel Mac OS X 10.6 funziona in modalità 32 bit?


10

Ho un MacBook Pro (5,1) con 4 GB di memoria con 10A432, ma è in esecuzione il kernel a 32 bit.

Qualche idea sul perché non funzionerebbe in modalità 64-bit e come posso farlo?


Ho capito che lo scopo di 10.6 era riscrivere il componente principale per massimizzare l'uso di 64 bit. Quindi con questo stai dicendo che eseguirà il codice ottimizzato su 32 bit la maggior parte delle volte? ...
OscarRyz,

Boh, la maggior parte del codice è chiaramente a 64 bit, ma il kernel non sembra essere, per me comunque
Chopper3

Risposte:


12

Nella Recensione di Snow Leopard di Jon Siracusa parla della transizione a 64 bit .

Tigre Leopardo Leopardo delle nevi

La versione breve è: poiché non esiste una "modalità mista", un kernel a 64 bit richiede estensioni e driver del kernel a 64 bit .

Poiché quelli non sono ancora ampiamente disponibili, Apple ha scelto il valore predefinito a 32 bit per evitare di interrompere molte cose.

Istruzioni dall'articolo:

Per tutti i Mac compatibili con K64, avvia tenendo premuti contemporaneamente i tasti "6" e "4" per selezionare il kernel a 64 bit. Per una soluzione più permanente, usa il comando nvram per aggiungere arch=x86_64alla tua boot-argsstringa, o modifica il file /Library/Preferences/SystemConfiguration/com.apple.Boot.pliste aggiungi arch=x86_64alla stringa di bandiere del kernel:

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

Per tornare al kernel a 32 bit, tenere premuti i tasti "3" e "2" durante l'avvio, oppure utilizzare una delle tecniche sopra, sostituendo "x86_64" con "i386".


Grazie a Gareth per la modifica (link immagine rehosted a imgur da arstechnica e citate le relative istruzioni dall'articolo).
Lago

7

Non ci sono molti vantaggi nell'esecuzione di un kernel a 64 bit in Snow Leopard, a differenza della maggior parte degli altri sistemi operativi. In Windows e Linux, è necessario un kernel a 64 bit per eseguire applicazioni a 64 bit. Su OS X, puoi eseguire applicazioni a 64 bit con il kernel a 32 bit.

Molte persone sembrano preoccupate che l'esecuzione del kernel a 32 bit in OS X limiti le prestazioni o le capacità delle loro macchine, ma in pratica questo non ha un impatto materiale significativo. Il kernel a 32 bit supporta l'esecuzione di applicazioni a 64 bit e tali app dispongono di uno spazio di indirizzi virtuale a 64 bit che viene mappato dal kernel su uno spazio di indirizzi PAE a 36 bit, quindi si comportano come su un 64- kernel bit, solo con un uso più limitato della memoria e I / O mappati in memoria nell'intervallo utilizzabile. Il modo in cui Apple gestisce questo spazio degli indirizzi nel kernel a 32 bit determina un limite di 32 GB per la memoria fisica, superando il limite di 4 GB a 32 bit con PAE. Per quanto riguarda le prestazioni, non c'è molto vantaggio, se ce n'è uno misurabile con l'uso di un kernel a 64 bit con 32 GB di memoria o meno. Se lo desidera,6e 4chiavi all'avvio. Dubito che vedresti e una differenza significativa nelle prestazioni.

L'altro problema è la compatibilità con i driver di dispositivo, le estensioni del kernel e il firmware del dispositivo. Per i driver di dispositivo e le estensioni del kernel, devono abbinare bit-ness, essere ricompilati o riscritti (specialmente se hanno un assembly, quali parti sono comuni in quei tipi di codice). In origine, EFI di Apple era disponibile solo a 32 bit e più recentemente alcuni modelli hanno un firmware a 64 bit. Affinché il sistema operativo parli con il firmware, il bit-ness del kernel e EFI devono corrispondere. Le cose che comportano la conversazione con EFI sono cose come la scelta di un disco di avvio o alcuni controlli di gestione dell'alimentazione (come se si dispone di più di un'installazione OS X e è necessario svegliarsi dalla sospensione dopo che la batteria si è esaurita).

Quindi un kernel a 64 bit sarebbe un vantaggio? Dal punto di vista delle prestazioni non è proprio in pratica, e posso vedere la saggezza con Apple che utilizza kernel a 32 bit per la maggior parte delle macchine che eseguono Snow Leopard per una migliore compatibilità.


7

Secondo quanto trapelato a MacRumors (poiché i documenti ufficiali sono sotto NDA) ( Fonte ) solo i seguenti computer supportano l'esecuzione del kernel a 64 bit:

  • Inizio 2008 Mac Pro (MacPro 3,1)
  • Inizio 2008 Xserve (Xserve 2,1)
  • MacBook Pro (15 "/ 17") (MacBookPro 4,1)
  • 2008 iMacs (iMac 8,1)
  • Unibody MacBook Pro (MacBookPro 5,1 e 5,2)
  • Inizio 2009 Mac Pro (MacPro 4,1)
  • 2009 iMacs (iMac 9,1)
  • All'inizio del 2009 Xserve (Xserve 3,1).

Solo gli XServes usano il kernel a 64 bit per impostazione predefinita.

Se avvii il computer con i tasti 6e, avvierai il 4kernel a 64 bit, o secondo un'altra fonte che rompe il loro NDA puoi modificare /Library/Preferences/SystemConfiguration/com.apple.Boot.plistaggiungendo un flag del kernel o farlo nel nvram.


L'ho notato anch'io, ecco perché ho inserito il mio codice modello.
Chopper3

A partire da [6] [4] funziona, ma qual è il vantaggio di avere il kernel in esecuzione su 64 bit? ...
OscarRyz,

@Oscar Reyes: è quindi possibile utilizzare driver a 64 bit e i processi possono accedere a più di 4 GB di memoria. Quindi adesso? Nessuna a meno che tu non stia eseguendo un'applicazione lato server in grado di utilizzare più di 4 GB di memoria, quindi l'impostazione predefinita a 64 bit su Xserves.
Chealion,

5

Il link sfortunatamente offuscato di Jason ha nascosto un'informazione molto utile:

ioreg -l -p IODeviceTree | grep firmware-abi

I Mac EFI a 64 bit segnaleranno

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

1

Fino al rilascio di Snow Leopard, non sapremo quali sistemi supporteranno la modalità 64/32 bit ... Ma tutte le indicazioni sono che Snow Leopard sarà trasparente con il supporto del kernel ...

Ma, ahimè, mi dispiace essere un "downer", se sei un membro registrato di Appleseed, il forum Appleseed discute su come forzare il kernel in modalità 64 bit. Altrimenti, se hai ricevuto Snow Leopard altrove, non preoccuparti.

L'uscita di Snow Leopard è proprio dietro l'angolo ...


0

Va bene, ecco perché:

  • SL a 32 bit eseguirà app a 64 bit; SL è compatibile a 64 bit indipendentemente dalla versione del kernel che si avvia

  • SL anche se avviato con il kernel a 32 bit sarà comunque in grado di eseguire app a 64 bit e indirizzare più di 4 GB di RAM

  • la ragione per cui avresti bisogno del kernel a 64 bit è se il kernel avesse bisogno di indirizzare più di 32 GB di RAM (quindi è di default su Xserve) o hai un solo kext a 64 bit (sviluppatori)

  • I kernel a 64 bit non rendono il computer magicamente più veloce; a meno che non siano necessari più di 32 GB di RAM (IOW solo Xserves comunque) non è necessario nemmeno per motivi di indirizzamento

  • rendendo il default a 32 bit sui sistemi consumer e offrendo ai professionisti e agli sviluppatori l'opzione del kernel a 64 bit, Apple mantiene la massima compatibilità e la massima flessibilità

  • 64 bit è principalmente un'opzione per sviluppatori; possono usarlo per testare i loro nuovi driver / kexts a 64 bit per assicurarsi che funzionino con il kernel a 64 bit

Parafrasato e citato da Snow Leopard carica il kernel a 32 bit per impostazione predefinita

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.