32ビットのカーネルで64ビットのユーザーランドソフトウェアを実行するには何が必要ですか?


10

LinuxとWindowsでは、32ビットと64ビットのソフトウェアを並行して実行できるmultiarch / WoWを備えたシステムを64ビットのカーネルが必要とする状況に慣れています。

そして、何年か前に、誰かがMacOS 10.6 Snow Leopardが32ビットモードのカーネルで64ビットアプリケーションを実行できることを示したとき、それは私の心を驚かせました。これは、1回限りの技術移行だったため、今ではほとんど忘れられている可能性があります。モバイルスペースの最先端を行くハードウェアで、私の知る限り、これはiOSおよびAndroidの64ビットへの移行では必要ありませんでした。

私の質問:32ビットLinuxカーネル(i386またはarmhf)で同じ機能を得るには何が必要ですか?

これはおそらく簡単ではないことを理解しています。もしそうなら、Microsoftはこの機能をWindows XP 32-bitに組み込んだ可能性があります。一般的な要件は何ですか?パッチまたは概念実証が提案されたことはありますか?

組み込みの世界では、64ビットのサポートがデバイスドライバーで長時間遅れることがあるので、これは特に役立つと思います。


Snow Leopardが32ビットカーネルで64ビットアプリを実行できると確信していますか?IIRCカーネルも対応ハードウェアで64ビットに更新されました。
muru

5
気にしないでください、あなたは正しかったです:superuser.com/a/340591/334516
muru

回答:


16

64ビットアプリケーションを実行するには、カーネルからのサポートが必要です。カーネルは、CPUでの64ビットコードの実行をサポートするために、必要に応じて少なくともページテーブルや割り込みテーブルなどを設定する必要があり、完全な64ビットを保存する必要があります。アプリケーション間を切り替えるときのコンテキスト(およびアプリケーションからカーネルへ、またはその逆)。したがって、純粋に32ビットのカーネルは64ビットのユーザー空間をサポートできません。

ただし、カーネルはカーネル空間で32ビットコードを実行でき、ユーザー空間では64ビットコードをサポートできます。これには、64ビットカーネルで32ビットアプリケーションを実行するために必要なサポートと同様の処理が含まれます。基本的に、カーネルは、アプリケーションが期待する64ビットインターフェイスをサポートする必要があります。たとえば、64ビットコードがカーネルを呼び出すためのメカニズムを提供し、パラメーターの意味を(双方向で)保存する必要があります。

問題はそれが価値があるかどうかです。Macおよびその他の一部のシステムでは、32ビットのカーネルコードをサポートしているため、ドライバーがすべて同時に切り替える必要がないため、問題が発生する可能性があります。Linuxでは、開発モデルが異なります。大規模な変更が行われると、カーネル内のすべてが必要に応じて移行されます。また、カーネル外のものは、カーネル開発者によって実際にはサポートされません。64ビットのカーネルで32ビットのユーザーランドをサポートすることは確かに便利であり、努力する価値があります(少なくとも、x86-64のサポートが追加されたときはそうでした)。32で64ビットを作成する必要があるかどうかはわかりません-ビット...


おかげで助かりますが、Gillesがunix.stackexchangeに関する彼の関連する回答を指摘したので、完全性についてはもっと望ましいと思います。私がコメントストリームに埋め込んで集めたものから、i386で理論的に実現可能である一方で、これはアーキテクチャの制限のためにarmhfではまだ不可能であるように見えますか?提起すべきケース:最初の動機はRaspbianでした。この場合、財団のロードマップは、Pi Zeroとの互換性を維持しながら、単一のカーネルを今後数年間維持することです。
jdonald

3

Snow LeopardはIntel 64ビットCPUで64ビットバイナリを実行できました。

efiが既に64ビットの場合、64ビットカーネルで起動することもできました(Macbook "transition-model" proの私の生産バッチは既にそのようなマシンでした)。

エミュレーションは含まれていませんでした。32ビットモードで起動した場合のパフォーマンスコストは低くなります。

純粋な32ビットCPUでは、64ビットコードを解釈する方法がわからないため、これを行うことはできません。あなたがソフトウェアでエミュレートしているのでなければ、伝統的にパワーが足りない種類の組み込みクラスのマシンでは遅くなるでしょう。

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