Dlaczego moje jądro Mac OS X 10.6 działa w trybie 32-bitowym?

10

Mam MacBooka Pro (5,1) z 4 GB pamięci z systemem 10A432 - ale działa na nim jądro 32-bitowe.

Jakieś pomysły, dlaczego nie będzie działać w trybie 64-bitowym i jak mogę to zrobić?

Siekacz 3
źródło
Zrozumiałem, że celem 10.6 było przepisanie podstawowego komponentu, aby zmaksymalizować użycie 64-bitów. Mówiąc to, mówisz, że będzie on uruchamiał zoptymalizowany kod w większości 32 bitów? ...
OscarRyz
nie, większość kodu jest wyraźnie 64-bitowa, ale wydaje mi się, że jądro tak nie jest
Chopper3

Odpowiedzi:

12

W Review of Snow Leopard Jona Siracusa omawia przejście 64-bitowe .

Tygrys Lampart Pantera śnieżna

Wersja krótka to: ponieważ nie ma „trybu mieszanego”, 64-bitowe jądro wymaga 64-bitowych rozszerzeń i sterowników jądra .

Ponieważ nie są one jeszcze powszechnie dostępne, Apple wybrał domyślną wersję 32-bitową, aby uniknąć zepsucia wielu rzeczy.

Instrukcje z artykułu:

W przypadku wszystkich komputerów Mac z obsługą K64 uruchom komputer, przytrzymując jednocześnie klawisze „6” i „4”, aby wybrać 64-bitowe jądro. Aby uzyskać bardziej trwałe rozwiązanie, użyj polecenia nvram, aby dodać arch=x86_64do boot-argsłańcucha lub edytować plik /Library/Preferences/SystemConfiguration/com.apple.Boot.plisti dodać arch=x86_64do łańcucha flag jądra:

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

Aby przełączyć się z powrotem na jądro 32-bitowe, przytrzymaj klawisze „3” i „2” podczas rozruchu lub użyj jednej z powyższych technik, zastępując „x86_64” „i386”.

Jezioro
źródło
Dzięki Garethowi za edycję (rehosted image links to imgur z arstechnica i zacytowałem odpowiednie instrukcje z artykułu).
Jezioro
7

W przeciwieństwie do większości innych systemów operacyjnych uruchomienie 64-bitowego jądra w systemie Snow Leopard nie przynosi większych korzyści. W systemach Windows i Linux potrzebujesz 64-bitowego jądra do uruchamiania 64-bitowych aplikacji. W systemie OS X można uruchamiać 64-bitowe aplikacje z 32-bitowym jądrem.

Wydaje się, że większość ludzi obawia się, że uruchomienie 32-bitowego jądra w OS X ogranicza wydajność lub możliwości ich komputerów, ale w praktyce nie ma to znaczącego wpływu materialnego. 32-bitowe jądro obsługuje działające aplikacje 64-bitowe, a te aplikacje mają wirtualną 64-bitową przestrzeń adresową, która jest odwzorowywana przez jądro na 36-bitową przestrzeń adresową PAE, więc zachowują się tak samo, jak na 64- jądro bitowe, tylko z bardziej ograniczonym wykorzystaniem pamięci i odwzorowaniem pamięci we / wy na użyteczny zakres. Sposób, w jaki Apple obsługuje tę przestrzeń adresową w 32-bitowym jądrze, powoduje ograniczenie pamięci fizycznej do 32 GB, przełamując limit 4 GB 32-bitowy za pomocą PAE. Pod względem wydajności nie ma wiele korzyści, jeśli jest mierzalna w ogóle przy użyciu 64-bitowego jądra z 32 GB pamięci lub mniej. Jeśli chcesz,6i 4klucze przy uruchomieniu. Wątpię, żebyś zobaczył i znaczącą różnicę w wydajności.

Innym problemem jest zgodność ze sterownikami urządzeń, rozszerzeniami jądra i oprogramowaniem układowym urządzenia. W przypadku sterowników urządzeń i rozszerzeń jądra muszą one być zgodne z bitem, zostać ponownie skompilowane lub przepisane (szczególnie jeśli mają one dowolny zestaw, których części są wspólne w tego typu kodach). EFI firmy Apple pierwotnie był dostępny tylko w wersji 32-bitowej, a ostatnio niektóre modele mają 64-bitowe oprogramowanie układowe. Aby system operacyjny mógł komunikować się z oprogramowaniem układowym, bit-kernel i EFI muszą się zgadzać. Do rzeczy, które wymagają rozmowy z EFI, należą wybranie dysku startowego lub niektórych elementów sterujących zarządzaniem energią (np. Jeśli masz więcej niż jedną instalację OS X i musisz obudzić się ze stanu uśpienia po wyczerpaniu się baterii).

Czy więc 64-bitowe jądro byłoby korzystne? Pod względem wydajności nie do końca w praktyce. Widzę mądrość firmy Apple używającej 32-bitowych jąder dla większości komputerów z systemem Snow Leopard w celu uzyskania lepszej kompatybilności.

Lara Dougan
źródło
7

Zgodnie z tym, co wyciekło do MacRumors (ponieważ oficjalne dokumenty są objęte umową NDA) ( źródło ), tylko następujące komputery obsługują jądro 64-bitowe:

  • Początek 2008 Mac Pro (MacPro 3,1)
  • Początek 2008 Xserve (Xserve 2,1)
  • MacBook Pro (15 "/ 17") (MacBookPro 4,1)
  • 2008 iMacs (iMac 8,1)
  • Unibody MacBook Pro (MacBookPro 5,1 i 5,2)
  • Początek 2009 Mac Pro (MacPro 4,1)
  • 2009 iMacs (iMac 9,1)
  • Początek 2009 Xserve (Xserve 3,1).

Tylko XServes domyślnie używają 64-bitowego jądra.

Jeśli uruchomisz komputer z klawiszami 6i 4, uruchomisz jądro 64-bitowe, lub według innego źródła łamiąc ich NDA, możesz edytować /Library/Preferences/SystemConfiguration/com.apple.Boot.plistdodając flagę jądra lub zrobić to w nvram.

Chealion
źródło
Zauważyłem to też, dlatego umieściłem kod modelu.
Chopper3
Począwszy od [6] [4] robi to zadanie, ale jaka jest korzyść z działania jądra na 64 bitach? ...
OscarRyz
@Oscar Reyes: Następnie można użyć 64-bitowych sterowników, a procesy mogą uzyskać dostęp do ponad 4 GB pamięci. Więc teraz? Brak, chyba że używasz aplikacji po stronie serwera, która może zużywać więcej niż 4 GB pamięci - stąd 64-bitowa domyślna wersja Xserves.
Chealion
5

Niestety zaciemniony link Jasona ukrył bardzo przydatną informację:

ioreg -l -p IODeviceTree | grep firmware-abi

64-bitowe komputery Mac EFI będą zgłaszać

| | "firmware-abi" = <"EFI64">
Po prostu zakochany
źródło
1

Dopóki Snow Leopard nie zostanie wydany, nie będziemy wiedzieć, jakie systemy będą obsługiwały tryb 64/32 bitowy ... Ale wszystko wskazuje na to, że Snow Leopard będzie przezroczysty dzięki obsłudze jądra ...

Ale, niestety, przykro mi, że jesteś „downer”, jeśli jesteś zarejestrowanym członkiem Appleseed, forum Appleseed omawia, jak zmusić jądro do trybu 64-bitowego. W przeciwnym razie, jeśli otrzymałeś Snow Leopard w innym miejscu, nie martw się o to.

Premiera Snow Leopard jest tuż za rogiem ...

Benjamin Schollnick
źródło
0

W porządku, oto dlaczego:

  • 32-bitowy SL BĘDZIE uruchamiał 64-bitowe aplikacje; SL jest 64-bitowy, bez względu na to, którą wersję jądra uruchamiasz

  • SL nawet po uruchomieniu z 32-bitowym jądrem nadal będzie mógł uruchamiać 64-bitowe aplikacje i adresować ponad 4 GB pamięci RAM

  • powodem, dla którego potrzebujesz 64-bitowego jądra, jest to, że jeśli jądro musi obsłużyć więcej niż 32 GB pamięci RAM (stąd jest domyślnie w Xserve) lub masz tylko 64-bitowy kext (deweloperzy)

  • Jądra 64-bitowe nie przyspieszają magicznie komputera; chyba że potrzebujesz więcej niż 32 GB pamięci RAM (zresztą IOW tylko Xserves), nie potrzebujesz jej również ze względów adresowych

  • wprowadzając domyślną wartość 32-bitową w systemach konsumenckich oraz dając profesjonalistom i programistom opcję 64-bitowego jądra, Apple zachowuje maksymalną kompatybilność ORAZ maksymalną elastyczność

  • Wersja 64-bitowa jest głównie opcją programistyczną; mogą go użyć do przetestowania swoich nowych 64-bitowych sterowników / kextów, aby upewnić się, że działają z 64-bitowym jądrem

Parafrazowane i cytowane z Snow Leopard domyślnie ładuje jądro 32-bitowe

losowy
źródło