回答:
カーネルを64ビットにするために必要な作業は、かなり前にDEC Alphaシステムを使用して行われました。ただし、プログラムは別の問題です。
これまで見てきた一般的なコンセンサスは次のようです:
/lib
と/lib64
混合バイナリを持っているシステム用のディレクトリそれ以外は、32/64ビットの混合ビルドからの「悲しみ」をあまり見ることはありません。
Windowsと* ixは、移行に異なるデータモデルを使用しました。このUNIX.org ページは少し古いですが、トレードオフの良い概要を提供しています(long long
後でC99に追加され、少なくとも64ビットである必要がありました)。同じトピックに関するウィキペディアの記事もご覧ください。UNIX.orgの記事の最後に提唱として、ほとんどのUNIXライクなシステムは、LP64で行っているの手段long
、long long
およびポインタはすべて64ビットです。
Windowsは、LLP64データモデルと呼ばれるものを使用しました。つまりlong long
、ポインタは64ビットのみです。 long
32ビットのままです。理由の一部は、単に、にlong
適合していると想定される壊れたコードを通り抜けて修正したくないということでしたint
。
Linuxディストリビューションはほとんどがオープンソースであるため、すでに大規模な移行が行われています。専用ソフトウェア(skypeなど)を使用しない限り、純粋な64ビットシステムをデメリットなしで実行できます。
しかし、実際の違いは、通常は最初に移植されるオープンソースソフトウェアであるため、オープンよりもオープンよりも適切です(一部のボロンティアは何かを再コンパイルする必要があります-いくつかのコンパイルの問題を修正する)-ほとんどの場合は移植されませんただ再コンパイルされたものを除くすべて;)-そして、最後に移植された財産。
Linuxではおそらくリポジトリを持っているため、インストールは自動的に処理されます。64ビットまたは32ビットバージョンを選択する必要はありません(システムが自動的に選択します)。Windowsプログラムでは、64ビット版と32ビット版が別々にダウンロードされます。
これがWindowsバイナリが通常32ビットである理由だと思います-それは万能サイズであり、すべての人が64ビットバージョンに移行したわけではありません。
実際には、ACMキューで「64ビットへの長い道のり」を試してください:http : //queue.acm.org/detail.cfm?id=1165766 これは後にCommunications of the ACMで取り上げられました。最初の64ビットマイクロは、MIPS R4000で、SGI Crimson 1Q1992で出荷され、その年の後半にDec Alphasが出荷されました。
R4000は最初は32ビットモードで実行され、その後64/32モード、つまり64ビットOS、64または32ビットユーザーコードで実行されていました。Alphasは常に64ビットのみでUNIXを実行していました(32ビットアプリのインストールベースがないため、合理的な選択です)。
1990年代後半、SGIは64ビット化Linux(Itaniumで実行する)に取り組み、XFSがLinuxに移植された頃(64ビットが必要でした)に貢献しました。