Mengapa kernel Mac OS X 10.6 saya berjalan dalam mode 32-bit?


10

Saya memiliki MacBook Pro (5,1) dengan memori 4GB yang menjalankan 10A432 - tetapi ia menjalankan kernel 32-bit.

Adakah ide mengapa itu tidak akan berjalan dalam mode 64-bit, dan bagaimana saya bisa melakukannya?


Saya mengerti tujuan 10.6 adalah untuk menulis ulang komponen inti untuk memaksimalkan penggunaan 64bit. Jadi dengan ini Anda mengatakan akan menjalankan kode yang dioptimalkan pada 32 bit sebagian besar kali? ...
OscarRyz

tak tahu, sebagian besar kode jelas 64 bit tetapi kernel tampaknya tidak, bagi saya toh
Chopper3

Jawaban:


12

Dalam Jon Siracusa's Review of Snow Leopard ia membahas transisi 64-bit .

Harimau Macan tutul Macan Tutul Salju

Versi singkatnya adalah: karena tidak ada 'mode campuran', kernel 64-bit membutuhkan 64-bit Kernel Extensions and Drivers .

Karena belum tersedia secara luas, Apple memilih default ke 32-bit untuk menghindari banyak hal rusak.

Instruksi dari artikel:

Untuk semua Mac berkemampuan K64, boot sambil menahan tombol "6" dan "4" secara bersamaan untuk memilih kernel 64-bit. Untuk solusi yang lebih permanen, gunakan perintah nvram untuk menambah string arch=x86_64Anda boot-args, atau edit file /Library/Preferences/SystemConfiguration/com.apple.Boot.plistdan tambahkan arch=x86_64ke string Kernel Flags:

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

Untuk beralih kembali ke kernel 32-bit, tahan tombol "3" dan "2" saat boot, atau gunakan salah satu teknik di atas, ganti "x86_64" dengan "i386".


Terima kasih kepada Gareth untuk hasil pengeditan (tautan gambar di-rehosted ke imgur dari arstechnica dan mengutip instruksi yang relevan dari artikel).
Danau

7

Tidak ada banyak manfaat untuk menjalankan kernel 64-bit di Snow Leopard, tidak seperti kebanyakan sistem operasi lain. Di Windows dan Linux, Anda membutuhkan kernel 64-bit untuk menjalankan aplikasi 64-bit. Pada OS X, Anda dapat menjalankan aplikasi 64-bit dengan kernel 32-bit.

Kebanyakan orang tampaknya khawatir bahwa menjalankan kernel 32-bit di OS X membatasi kinerja atau kemampuan mesin mereka, tetapi dalam praktiknya ini tidak memiliki dampak material yang signifikan. Kernel 32-bit mendukung menjalankan aplikasi 64-bit, dan aplikasi tersebut memiliki ruang alamat virtual 64-bit yang dipetakan ke ruang alamat PAE 36-bit oleh kernel, sehingga mereka berperilaku sama seperti pada 64- kernel bit, hanya dengan penggunaan memori yang lebih terbatas dan I / O yang dipetakan memori ke rentang yang dapat digunakan. Cara Apple menangani ruang alamat ini di kernel 32-bit menghasilkan batas 32 GB untuk memori fisik, melanggar batas 4 GB 32-bit dengan PAE. Dari segi kinerja tidak ada banyak manfaatnya, jika ada yang terukur sama sekali dengan menggunakan kernel 64-bit dengan memori 32 GB atau kurang. Jika Anda menghendaki,6dan 4kunci saat startup. Saya ragu Anda akan melihat dan perbedaan kinerja yang signifikan.

Masalah lainnya adalah kompatibilitas dengan driver perangkat, ekstensi kernel, dan firmware perangkat. Untuk driver perangkat dan ekstensi kernel, mereka harus cocok dengan bit-ness, dikompilasi ulang, atau ditulis ulang (terutama jika mereka memiliki rakitan, bagian mana yang umum dalam jenis kode tersebut). EFI Apple awalnya datang hanya dalam 32-bit, dan baru-baru ini beberapa model memiliki firmware 64-bit. Agar sistem operasi dapat berbicara dengan firmware, bit-ness dari kernel dan EFI harus cocok. Hal-hal yang melibatkan berbicara dengan EFI adalah hal-hal seperti memilih disk startup atau beberapa kontrol manajemen daya (seperti jika Anda memiliki lebih dari satu instalasi OS X dan Anda harus bangun dari tidur setelah baterai habis).

Jadi, apakah kernel 64-bit akan bermanfaat? Kinerja bijaksana tidak benar-benar dalam praktek, dan saya bisa melihat kebijaksanaan dengan Apple menggunakan kernel 32-bit untuk sebagian besar mesin yang menjalankan Snow Leopard untuk kompatibilitas yang lebih baik.


7

Menurut apa yang telah bocor ke MacRumors (karena dokumen resmi di bawah NDA) ( Sumber ) hanya komputer berikut ini yang mendukung menjalankan kernel 64-bit:

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

Hanya XServes yang menggunakan kernel 64-bit secara default.

Jika Anda memulai komputer memegang 6dan 4kunci Anda akan memulai kernel 64-bit, atau menurut sumber lain melanggar NDA mereka, Anda dapat mengedit /Library/Preferences/SystemConfiguration/com.apple.Boot.plistmenambahkan flag kernel atau melakukannya di nvram.


Saya melihatnya juga, itu sebabnya saya menaruh kode model saya.
Chopper3

Dimulai dengan [6] [4] berhasil, tetapi, apa manfaatnya menjalankan kernel pada 64 bit? ...
OscarRyz

@Oscar Reyes: Anda kemudian dapat menggunakan driver 64-bit dan proses dapat mengakses lebih dari 4GB memori. Jadi sekarang juga? Tidak ada kecuali Anda menjalankan aplikasi sisi server yang dapat memanfaatkan lebih dari 4GB memori - karenanya 64-bit default pada Xserves.
Chealion,

5

Sayangnya, tautan Jason yang dikaburkan menyembunyikan sebagian informasi yang sangat berguna:

ioreg -l -p IODeviceTree | grep firmware-abi

EFI Mac 64 bit akan dilaporkan

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

1

Sampai Snow Leopard dirilis, kita tidak akan tahu sistem apa yang akan mendukung mode 64/32 bit ... Tetapi semua indikasi adalah bahwa Snow Leopard akan transparan dengan dukungan kernel ...

Tapi, sayangnya, maaf menjadi "downer", jika Anda adalah anggota Appleseed yang terdaftar, forum Appleseed membahas cara memaksa kernel ke mode 64bit. Jika tidak, jika Anda telah menerima Snow Leopard di tempat lain, jangan khawatir tentang hal itu.

Rilis Snow Leopard tepat di tikungan ...


0

Tidak apa-apa, inilah alasannya:

  • 32 bit SL AKAN menjalankan aplikasi 64 bit; SL kompatibel 64 bit terlepas dari versi kernel mana yang Anda boot

  • SL bahkan jika di-boot dengan kernel 32 bit masih akan dapat menjalankan aplikasi 64 bit dan mengatasi lebih dari 4GB RAM

  • alasan Anda memerlukan 64 bit kernel adalah jika kernel diperlukan untuk mengatasi lebih dari 32 GB RAM (maka itu default pada Xserve) atau Anda memiliki 64 bit hanya kext (pengembang)

  • Kernel 64 bit tidak membuat komputer Anda lebih cepat secara ajaib; kecuali jika Anda membutuhkan lebih dari 32 GB RAM (hanya XOW IOW saja) Anda tidak memerlukannya untuk mengatasi alasan juga

  • dengan membuat 32 bit default pada sistem konsumen dan memberikan pro dan pengembang opsi kernel 64 bit Apple mempertahankan kompatibilitas maks DAN fleksibilitas maks

  • 64 bit terutama merupakan opsi pengembang; mereka dapat menggunakannya untuk menguji driver / kexts 64 bit baru mereka untuk memastikan mereka bekerja dengan kernel 64 bit

Diparafrasekan dan dikutip dari Snow Leopard memuat kernel 32-bit secara default

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.