Warum läuft mein Mac OS X 10.6-Kernel im 32-Bit-Modus?


10

Ich habe ein MacBook Pro (5,1) mit 4 GB Speicher, auf dem 10A432 ausgeführt wird - aber es wird der 32-Bit-Kernel ausgeführt.

Irgendwelche Ideen, warum es nicht im 64-Bit-Modus laufen würde und wie ich es dazu bringen kann?


Ich habe verstanden, dass der eigentliche Zweck von 10.6 darin bestand, die Kernkomponente neu zu schreiben, um die Verwendung von 64-Bit zu maximieren. Sie sagen also, dass es die meiste Zeit optimierten Code auf 32 Bit ausführen wird? ...
OscarRyz

Keine Ahnung, der meiste Code ist eindeutig 64-Bit, aber der Kernel scheint es für mich sowieso nicht zu sein
Chopper3

Antworten:


12

In Jon Siracusas Review of Snow Leopard erörtert er den 64-Bit-Übergang .

Tiger Leopard Schneeleopard

Die Kurzversion lautet: Da es keinen gemischten Modus gibt, benötigt ein 64-Bit-Kernel 64-Bit-Kernel-Erweiterungen und -Treiber .

Da diese noch nicht weit verbreitet sind, hat Apple standardmäßig 32-Bit verwendet, um zu vermeiden, dass viele Dinge kaputt gehen.

Anleitung aus dem Artikel:

Booten Sie bei allen K64-fähigen Macs, während Sie gleichzeitig die Tasten "6" und "4" gedrückt halten, um den 64-Bit-Kernel auszuwählen. Verwenden Sie für eine dauerhaftere Lösung den Befehl nvram, um ihn arch=x86_64zu Ihrer boot-argsZeichenfolge hinzuzufügen , oder bearbeiten Sie die Datei /Library/Preferences/SystemConfiguration/com.apple.Boot.plistund fügen Sie arch=x86_64sie der Zeichenfolge Kernel Flags hinzu:

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

Um zum 32-Bit-Kernel zurückzukehren, halten Sie beim Booten die Tasten "3" und "2" gedrückt oder verwenden Sie eine der oben genannten Techniken, um "x86_64" durch "i386" zu ersetzen.


Vielen Dank an Gareth für die Bearbeitung (rehosted Bild Links zu imgur von arstechnica und zitierte relevante Anweisungen aus dem Artikel).
See

7

Das Ausführen eines 64-Bit-Kernels in Snow Leopard bietet im Gegensatz zu den meisten anderen Betriebssystemen keinen großen Vorteil. Unter Windows und Linux benötigen Sie einen 64-Bit-Kernel, um 64-Bit-Anwendungen auszuführen. Unter OS X können Sie 64-Bit-Anwendungen mit dem 32-Bit-Kernel ausführen.

Die meisten Menschen scheinen besorgt zu sein, dass das Ausführen des 32-Bit-Kernels unter OS X die Leistung oder die Fähigkeiten ihrer Computer einschränkt. In der Praxis hat dies jedoch keine wesentlichen Auswirkungen. Der 32-Bit-Kernel unterstützt das Ausführen von 64-Bit-Anwendungen. Diese Apps verfügen über einen virtuellen 64-Bit-Adressraum, der vom Kernel einem 36-Bit-PAE-Adressraum zugeordnet wird, sodass sie sich genauso verhalten wie auf einem 64-Bit-Adressraum. Bit-Kernel, nur mit eingeschränkterer Speichernutzung und speicherabgebildeter E / A auf den nutzbaren Bereich. Die Art und Weise, wie Apple diesen Adressraum im 32-Bit-Kernel behandelt, führt zu einer Beschränkung des physischen Speichers auf 32 GB, wodurch die 32-Bit-Beschränkung von 4 GB mit PAE überschritten wird. In Bezug auf die Leistung gibt es keinen großen Vorteil, wenn es bei Verwendung eines 64-Bit-Kernels mit 32 GB Speicher oder weniger überhaupt einen messbaren gibt. Wenn du möchtest,6und 4Schlüssel beim Start. Ich bezweifle, dass Sie einen signifikanten Leistungsunterschied sehen würden.

Das andere Problem ist die Kompatibilität mit Gerätetreibern, Kernel-Erweiterungen und der Firmware des Geräts. Für Gerätetreiber und Kernel-Erweiterungen müssen sie mit der Bit-Ness übereinstimmen, neu kompiliert oder neu geschrieben werden (insbesondere, wenn sie eine Assembly haben, welche Teile in diesen Codetypen üblich sind). Apples EFI war ursprünglich nur in 32-Bit erhältlich, und in jüngerer Zeit verfügen einige Modelle über 64-Bit-Firmware. Damit das Betriebssystem mit der Firmware kommunizieren kann, müssen die Bit-Ness des Kernels und des EFI übereinstimmen. Wenn Sie mit EFI sprechen, müssen Sie beispielsweise eine Startdiskette oder einige Steuerelemente für die Energieverwaltung auswählen (z. B. wenn Sie mehr als eine OS X-Installation haben und nach dem Entladen des Akkus aus dem Ruhezustand aufwachen müssen).

Wäre ein 64-Bit-Kernel also ein Vorteil? In Bezug auf die Leistung nicht wirklich in der Praxis, und ich kann die Weisheit erkennen, dass Apple 32-Bit-Kernel für die meisten Computer verwendet, auf denen Snow Leopard ausgeführt wird, um eine bessere Kompatibilität zu gewährleisten.


7

Laut Angaben zu MacRumors (da die offiziellen Dokumente unter NDA stehen) ( Quelle ) unterstützen nur die folgenden Computer die Ausführung des 64-Bit-Kernels:

  • Anfang 2008 Mac Pro (MacPro 3,1)
  • Anfang 2008 Xserve (Xserve 2,1)
  • MacBook Pros (15 "/ 17") (MacBookPro 4,1)
  • 2008 iMacs (iMac 8,1)
  • Unibody MacBook Pros (MacBookPro 5,1 und 5,2)
  • Anfang 2009 Mac Pro (MacPro 4,1)
  • 2009 iMacs (iMac 9,1)
  • Anfang 2009 Xserve (Xserve 3,1).

Standardmäßig verwenden nur die XServes den 64-Bit-Kernel.

Wenn Sie den Computer die Halte starten 6und 4Schlüssel werden Sie die 64-Bit - Kernel starten, oder nach einer anderen Quelle zu brechen ihre NDA können Sie bearbeiten das /Library/Preferences/SystemConfiguration/com.apple.Boot.plistHinzufügen eines Kernel - Flag oder tun es im NVRAM.


Das habe ich auch entdeckt, deshalb habe ich meinen Modellcode eingegeben.
Chopper3

Beginnend mit [6] [4] erledigt der Job, aber was bringt es, wenn der Kernel auf 64 Bit läuft? ...
OscarRyz

@Oscar Reyes: Sie können dann 64-Bit-Treiber verwenden und Prozesse können auf mehr als 4 GB Speicher zugreifen. Also gerade jetzt? Keine, es sei denn, Sie führen eine serverseitige Anwendung aus, die mehr als 4 GB Speicher belegen kann - daher die 64-Bit-Standardeinstellung bei Xserves.
Chealion

5

Jasons leider verschleierter Link versteckte eine sehr nützliche Information:

ioreg -l -p IODeviceTree | grep firmware-abi

Die 64-Bit-EFI-Macs melden dies

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

1

Bis zur Veröffentlichung von Snow Leopard wissen wir nicht, welche Systeme den 64/32-Bit-Modus unterstützen ... Aber alle Anzeichen sprechen dafür, dass Snow Leopard für die Kernel-Unterstützung transparent ist ...

Aber leider tut es mir leid, ein "Wermutstropfen" zu sein. Wenn Sie ein registriertes Appleseed-Mitglied sind, wird im Appleseed-Forum erläutert, wie der Kernel in den 64-Bit-Modus versetzt werden kann. Wenn Sie Snow Leopard anderweitig erhalten haben, machen Sie sich keine Sorgen.

Die Veröffentlichung von Snow Leopard steht vor der Tür ...


0

Es ist okay, hier ist der Grund:

  • 32-Bit-SL wird 64-Bit-Apps ausführen. SL ist 64-Bit-kompatibel, unabhängig davon, welche Kernelversion Sie starten

  • SL kann auch beim Booten mit dem 32-Bit-Kernel 64-Bit-Apps ausführen und mehr als 4 GB RAM adressieren

  • Der Grund, warum Sie den 64-Bit-Kernel benötigen, ist, wenn der Kernel mehr als 32 GB RAM adressieren muss (daher ist dies beim Xserve die Standardeinstellung) oder Sie nur einen 64-Bit-Kext haben (Entwickler).

  • 64-Bit-Kernel machen Ihren Computer nicht auf magische Weise schneller. Wenn Sie nicht mehr als 32 GB RAM benötigen (IOW ohnehin nur Xserves), benötigen Sie es auch aus Gründen der Adressierung nicht

  • Durch die Festlegung der 32-Bit-Standardeinstellung auf Consumer-Systemen und die Bereitstellung der 64-Bit-Kernel-Option für Profis und Entwickler behält Apple maximale Kompatibilität UND maximale Flexibilität bei

  • 64-Bit ist hauptsächlich eine Entwickleroption. Sie können damit ihre neuen 64-Bit-Treiber / Kexts testen, um sicherzustellen, dass sie mit dem 64-Bit-Kernel arbeiten

Paraphrasiert und zitiert von Snow Leopard lädt standardmäßig den 32-Bit-Kernel

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.