Linuxで64ビットへのシフトはどのように処理されましたか


15

Linux / Unixで64ビットへの移行はどのように処理されましたか?Windowsの世界にはまだ問題があるようで、* nixの世界でどのように処理されているのか興味があります。


飛ぶ色で。
カズ

回答:


12

カーネルを64ビットにするために必要な作業は、かなり前にDEC Alphaシステムを使用して行われました。ただし、プログラムは別の問題です。

これまで見てきた一般的なコンセンサスは次のようです:

  • 分離/lib/lib64混合バイナリを持っているシステム用のディレクトリ
  • 64ビットとしてコンパイルします。コンパイルが失敗した場合、ソースを64ビット用にクリアできるまで32ビットとして再コンパイルします。

それ以外は、32/64ビットの混合ビルドからの「悲しみ」をあまり見ることはありません。


バイナリ名を一定で一貫性のあるものにするシンボリックリンク。
-geoffc


32ビットでのみコンパイルできるLinux上のプログラムに名前を付けてもらえますか?
マチェイピエチョトカ

@Maciej Piechotka:たくさん残っているとは思わないでください。OpenOffice.orgがトリッキーだったことを覚えていると思いますが、それは64ビットへの変換が始まった頃のことです。それ以外:どうやらFlash Playerには
注意が必要です。P– wzzrd

Flash Playerがコンパイルされると;)gnash / lightsparkは64ビットで動作しますが、Adobe Flash Playerは適切です。
マチェイピエチョトカ

8

Windowsと* ixは、移行に異なるデータモデルを使用しました。このUNIX.org ページは少し古いですが、トレードオフの良い概要を提供しています(long long後でC99に追加され、少なくとも64ビットである必要がありました)。同じトピックに関するウィキペディアの記事もご覧ください。UNIX.orgの記事の最後に提唱として、ほとんどのUNIXライクなシステムは、LP64で行っているの手段longlong longおよびポインタはすべて64ビットです。

Windowsは、LLP64データモデルと呼ばれるものを使用しました。つまりlong long、ポインタは64ビットのみです。 long32ビットのままです。理由の一部は、単に、にlong適合していると想定される壊れたコードを通り抜けて修正したくないということでしたint


2
Unixの世界でも多くの議論がありました。「long long」を追加することを支持する議論の1つは、「long」が32ビットであると想定したコードが多すぎるということです。(少なくとも特定の議論では、comp.std.cでC99標準よりも長くはかからなかった。)
デイヴィッドソーンリー

2

Linuxディストリビューションはほとんどがオープンソースであるため、すでに大規模な移行が行われています。専用ソフトウェア(skypeなど)を使用しない限り、純粋な64ビットシステムをデメリットなしで実行できます。

しかし、実際の違いは、通常は最初に移植されるオープンソースソフトウェアであるため、オープンよりもオープンよりも適切です(一部のボロンティアは何かを再コンパイルする必要があります-いくつかのコンパイルの問題を修正する)-ほとんどの場合は移植されませんただ再コンパイルされたものを除くすべて;)-そして、最後に移植された財産。

Linuxではおそらくリポジトリを持っているため、インストールは自動的に処理されます。64ビットまたは32ビットバージョンを選択する必要はありません(システムが自動的に選択します)。Windowsプログラムでは、64ビット版と32ビット版が別々にダウンロードされます。

  • サーバー上のファイルのサイズを2倍にする
  • ユーザーが自分のバージョンを知っている必要があります。または、それらが何かによって異なることさえ

これがWindowsバイナリが通常32ビットである理由だと思います-それは万能サイズであり、すべての人が64ビットバージョンに移行したわけではありません。


2

実際には、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ビットが必要でした)に貢献しました。

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