sparc64アーキテクチャのLinuxがユーザースペースでは32ビットポインタを使用し、カーネルスペースでは64ビットポインタを使用するのはなぜですか?

sparc64アーキテクチャのLinuxがユーザースペースでは32ビットポインタを使用し、カーネルスペースでは64ビットポインタを使用するのはなぜですか?

標準から外れた場合、どのような利点がありますか? 64ビットアーキテクチャの場合、ユーザースペースとカーネルスペースの64ビットポインタの両方が64ビットポインタですか?

引用:http://lwn.net/images/pdf/LDD3/ch11.pdf(2ページ)

ベストアンサー1

互換性。

まず、Sunの64ビットサポートは、AMD64やItaniumがオペレーティングシステムのサポートを受けるのはるかに前の1998年のSolaris 7までさかのぼります。ユーザースペースで32ビットと64ビットの両方をサポートすることで、ほとんどのソフトウェアを完全に変更せずに実行できます。

確認するSolaris 64ビット開発者ガイド(2005).まず、実際には2つの別々のシステムがあると述べられています。

Solarisオペレーティング環境は、2つのファーストクラスABIを同時にサポートします。つまり、2つの独立した完全に機能するシステムコールパスが64ビットカーネルに接続されます。 2セットのライブラリがアプリケーションをサポートしています。

その後、良い古いCコード(32ビットだと仮定)があれば正常に動作します。続ける何も変更されていないかのようによく構築されます。

4 GBの障壁のオーバーフローで説明されているように、ほとんどの32ビットアプリケーションはSolaris 64ビットオペレーティング環境で変更なく実行されます。

...

32ビットアプリケーションはソースコードレベルの互換性を維持します。 64ビットアプリケーションの主な変更点は、アプリケーションプログラミングインターフェースに使用される派生タイプです。

成功した技術の変化には、しばしば奇妙な雑種とキメラが伴い、時にはその目的は役に立たなくなります。

おすすめ記事