Mac OS X 10.6カーネルが32ビットモードで動作するのはなぜですか?


10

MacBook Pro(5,1)で、4GBのメモリで10A432を実行していますが、32ビットカーネルを実行しています。

64ビットモードで実行しない理由と、それを実行する方法を教えてください。


10.6の目的は、コアコンポーネントを書き直して64ビットを最大限に活用することだと理解しました。これで、ほとんどの場合、32ビットで最適化されたコードを実行すると言っていますか?...
OscarRyz 09

知らない、ほとんどのコードは明らかに64ビットですが、とにかくカーネルはそうではありません
Chopper3

回答:


12

Jon SiracusaによるSnow Leopardのレビューで、彼は64ビット移行について説明しています。

虎 ヒョウ ユキヒョウ

短いバージョンは次のとおりです。「混合モード」がないため、64ビットのカーネルには64ビットのカーネル拡張とドライバーが必要です。

それらはまだ広く利用可能ではないので、Appleは多くのことを壊さないようにデフォルトで32ビットを選択しました。

記事からの指示:

すべてのK64対応Macで、「6」キーと「4」キーを同時に押しながら起動して、64ビットカーネルを選択します。より永続的な解決策として、nvramコマンドを使用arch=x86_64してboot-args文字列に追加するか、ファイル/Library/Preferences/SystemConfiguration/com.apple.Boot.plistを編集arch=x86_64してカーネルフラグ文字列に追加します。

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

32ビットカーネルに戻すには、起動中に「3」および「2」キーを押すか、「x86_64」を「i386」に置き換えて、上記のいずれかの方法を使用します。


編集してくれたGarethに感謝します(arstechnicaからimgurへの画像のリンクをリホストし、記事から関連する説明を引用しました)。
湖の

7

他のほとんどのオペレーティングシステムとは異なり、Snow Leopardで64ビットカーネルを実行しても大きなメリットはありません。WindowsおよびLinuxでは、64ビットアプリケーションを実行するには64ビットカーネルが必要です。OS Xでは、32ビットカーネルで64ビットアプリケーションを実行できます。

ほとんどの人は、OS Xで32ビットカーネルを実行すると、マシンのパフォーマンスや機能が制限されることを懸念しているようですが、実際には、これが重大な重大な影響を与えることはありません。32ビットカーネルは64ビットアプリケーションの実行をサポートし、それらのアプリはカーネルによって36ビットPAEアドレススペースにマップされる仮想64ビットアドレススペースを持っているため、64ビットアプリケーションと同じように動作しますメモリ使用量がより制限され、メモリマップI / Oが使用可能な範囲に制限されたビットカーネル。Appleが32ビットカーネルでこのアドレススペースを処理する方法により、物理メモリの32 GBの制限が発生し、PAEで4 GBの32ビットの制限が破られます。32 GB以下のメモリを搭載した64ビットカーネルを使用して測定可能なものがあるとしても、パフォーマンスに関してはそれほどメリットはありません。あなたがしたい場合は、64起動時のキー。パフォーマンスに大きな違いがあるとは思いません。

もう1つの問題は、デバイスドライバー、カーネル拡張機能、およびデバイスのファームウェアとの互換性です。デバイスドライバーとカーネル拡張機能については、ビット数を一致させるか、再コンパイルするか、または書き換える必要があります(特に、アセンブリーがある場合は、これらのタイプのコードに共通する部分です)。AppleのEFIは元々32ビットのみで提供されていましたが、最近では一部のモデルに64ビットのファームウェアが搭載されています。オペレーティングシステムがファームウェアと通信するには、カーネルとEFIのビット数が一致している必要があります。EFIとの対話に関連することは、起動ディスクの選択やいくつかの電源管理コントロールのようなものです(たとえば、複数のOS Xインストールがあり、バッテリーが切れた後にスリープから復帰する必要がある場合など)。

では、64ビットカーネルはメリットでしょうか。パフォーマンスに関しては実際にはあまりありません。互換性を高めるために、Snow Leopardを実行しているほとんどのマシンで32ビットカーネルを使用しているAppleの知恵を見ることができます。


7

MacRumorsにリークされたものによると(公式ドキュメントはNDAに基づいているため)(出典)次のコンピューターのみが64ビットカーネルの実行をサポートしています。

  • 2008年初頭のMac Pro(MacPro 3,1)
  • 2008年初頭のXserve(Xserve 2,1)
  • MacBook Pro(15 "/ 17")(MacBookPro 4,1)
  • 2008 iMac(iMac 8,1)
  • Unibody MacBook Pro(MacBookPro 5,1および5,2)
  • 2009年初頭のMac Pro(MacPro 4,1)
  • 2009 iMac(iMac 9,1)
  • 2009年初頭のXserve(Xserve 3,1)。

XServesのみがデフォルトで64ビットカーネルを使用します。

あなたが保持するコンピュータを起動した場合64キーを、あなたは、64ビットのカーネルを起動する、または別に応じてソース自分のNDAを壊し、あなたは編集することができ/Library/Preferences/SystemConfiguration/com.apple.Boot.plist、カーネルフラグを追加したり、NVRAMにそれを行います。


私もそれを見つけました、それが私が私のモデルコードを置いた理由です。
Chopper3

[6] [4]から始まりますが、カーネルを64ビットで実行する利点は何ですか?...
OscarRyz

@Oscar Reyes:64ビットのドライバーを使用すると、プロセスは4GBを超えるメモリにアクセスできます。だから今?4GBを超えるメモリを利用できるサーバー側のアプリケーションを実行している場合を除いて、これはありません。Xserveのデフォルトは64ビットです。
Chealion

5

Jasonの残念なことに難読化されたリンクには、非常に有用な情報が隠されていました。

ioreg -l -p IODeviceTree | grep firmware-abi

64ビットEFI Macが報告する

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

1

Snow Leopardがリリースされるまで、64/32ビットモードをサポートするシステムがわかりません...しかし、すべての兆候は、Snow Leopardがカーネルサポートで透過的であることを示しています...

しかし、悲しいかな、「ダウナー」になって申し訳ありませんが、登録済みのAppleseedメンバーである場合、Appleseedフォーラムでは、カーネルを64ビットモードに強制する方法について説明しています。それ以外の場合、他の場所でSnow Leopardを受け取っていても、心配する必要はありません。

Snow Leopardのリリースはもうすぐです...


0

大丈夫です、ここに理由があります:

  • 32ビットSLは64ビットアプリを実行します。起動するカーネルのバージョンに関係なく、SLは64ビット互換です

  • SLは、32ビットカーネルで起動した場合でも、64ビットアプリを実行し、4 GBを超えるRAMをアドレス指定できます。

  • 64ビットカーネルが必要な理由は、カーネルが32 GBを超えるRAMをアドレス指定する必要がある場合(つまり、Xserveのデフォルトです)、または64ビットのみのkextがある場合(開発者)です。

  • 64ビットカーネルは、コンピューターを驚くほど高速にしません。32 GBを超えるRAM(とにかくIWWのみXW)が必要な場合を除き、アドレス指定の理由からRAMは必要ありません。

  • コンシューマシステムで32ビットをデフォルトにして、プロと開発者に64ビットカーネルオプションを提供することにより、アップルは最大の互換性と最大の柔軟性を維持しています。

  • 64ビットは主に開発者向けオプションです。彼らはそれを使って新しい64ビットドライバー/ kextをテストし、64ビットカーネルで動作することを確認できます

Snow Leopardから言い換えて引用すると、デフォルトで32ビットのカーネルがロードされます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.