5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Mac関連ネタを凄い勢いで翻訳するスレ・4

805 :偽の神:2005/04/19(火) 20:37:43 ID:DqzdAh+a
最近64ビット方面がにわかに騒がしくなってまいりました。
そこで、Appleが公開している64ビット開発の概要を翻訳。
http://developer.apple.com/macosx/tiger/64bit.html


64ビットアプリケーションの開発

MacOSX Tigerは32ビットの壁を破り、巨大なメモリ空間を持てるコマンドラインアプリケーション、
サーバ、演算エンジンの開発を可能にします。
G5を持つMacでは4GB以上の物理メモリを持てるというアドバンテージがありますが、
以前のMacOSXでは各アプリケーションのアドレス空間は32ビット=4GBに制限されていました。
Tigerはこの制限を無くし、PowerPC G5 上でアプリケーションが64ビットのアドレス空間を扱えるようになります。
なお、このサポートによって現在の32ビットアプリケーションの機能に制限がかかるようなことはまったくありません。

これは小さなことではありません。他のOSでもデスクトップ分野で64ビット環境の構築にトライしていますが、
限定的な成功しか得られていません。
アップルは32ビット環境を速度を犠牲にすることなく維持し、さらにこれから20年は
(たとえアプリケーションの必要メモリが毎年倍増したとしても)アプリケーションのメモリ要求に
対応できる余裕を提供します。
一つのOSバージョンで32ビットと64ビット両方のハードウェアに対応するのはMacOSXだけです。
G3からG5まで、iBookからXserveまで、これらすべてを一つのカーネルと一つのシステムライブラリでカバーします。

さらに、Macにおける64ビット環境への移行はスムーズです。
元々PowerPCアーキテクチャは32ビット環境をサブセットに持つ64ビット環境として設計されているからです。
つまり、PowerPCは最初から64ビット環境への移行が考慮されているのです。
他の64ビットアーキテクチャと違い、特殊な互換モードなしで32ビットアプリケーションが動作する理由もここにあります。
何のペナルティも妥協もありません。事実、システム全体の改良と調整により
多くの32ビットアプリケーションが以前よりも効率よく動作します。

806 :偽の神:2005/04/19(火) 20:38:36 ID:DqzdAh+a
この記事では64ビット環境があなたに何をもたらすか、Tigerでどのようにして64ビットをサポートしているか、
そして64ビットアプリケーションをどうやってビルドするかを説明します。
まず、64ビット環境がもたらすものから説明していきましょう。


64ビット環境によって得られるもの
この20年間デスクトップでの標準である32ビット環境と64ビット環境の違いは、アプリケーションが扱えるメモリのサイズです。
32ビットの世界では、アプリケーションは4GBのアドレス空間を扱えます。
我々が日常使っている多くのアプリケーション、たとえばワープロソフトや表計算ソフトなどではこれで十分です。
しかし、もしあなたが巨大なデータセット、例えばヒトゲノムや地理空間データを扱う場合、4GBでは少なすぎます。
64ビット環境は4GBの制限を打ち破り、16EB(エクサバイト)以上の仮想アドレス空間を提供します。
これは16x10億x10億バイトです。
これほどのRAMをPowerMacに載せるのは無理ですが、Tigerは優れたシステム機能によりこの環境を実現します。
(訳注:16EBは、4GBの約43億倍です)


64ビットの実際
16EBのアドレス空間よりはかなり小さいですが、4TB(テラバイト)の物理メモリというはちょっとした驚きです。
(訳注:これは、PowerPC G5 が扱える物理メモリの上限値です)
我々が話しているデータのスケールを理解するために、以下のように考えてみましょう:
・DVDは4.7GBの容量を持ち、高品質のMPEG-2ビデオを2時間以上格納できます。
・250枚のDVDが1TBに相当します。
・250GBのハードディスク4つ(これは、現在PowerPCが内蔵できる最大量です)も1TBです。
・現在のXserve RAIDは最大5.6TBのデータを格納できます。
・世界最大の図書館であるアメリカ議会図書館は約20TBのテキストを所蔵しています。
・インターネットアーカイブは1PB(ペタバイト=1000TB)のデータを蓄積しており、月に20TBずつ増えています。
これはXserve RAIDなら175台、250GBのハードディスクなら4000台、DVDなら4400万枚に相当します。
・1EBはインターネットアーカイブ1000個に相当します。

807 :偽の神:2005/04/19(火) 20:39:20 ID:DqzdAh+a
どのような切り口でも、16EBというアドレス空間の巨大さがわかると思います。
これは将来のための大きな余裕であり、使い果たすにはかなりの時間がかかるでしょう。


Tigerの64ビットサポート
Tigerの64ビットサポートは、広いアドレス空間がメリットに繋がりやすいCとC++アプリケーションに焦点を当てています。
これらは科学分野のデータ演算アプリケーション、レンダリングエンジン、高負荷なサーバなどが含まれます。
これらのアプリケーションは普段から大きなデータセットを扱います。
一般的に、これらのアプリケーションは“フェイスレス”(コマンドラインから実行する形式で、GUIを持たない)です。

これらの焦点に合わせ、Tigerは64ビットバージョンのlibsystem
---基本的なUNIX APIの大半を実装したシステムライブラリを提供します。
加えて、32ビットABIをベースにした64ビット PowerPC ABIを新設します。
64ビットバイナリはアップデートされたMach-Oフォーマット
(これはTiger以降のG5システムで動作します)に格納されます。

Tigerにおける重要な事柄として、MacOSXで使えるAPIすべてが
64ビットプログラミングをサポートするわけではないことが挙げられます。
特に、CocoaとCarbonのGUIアプリケーションフレームワークは64ビットに対応していません。
実際には、64ビット環境を必要とするようなアプリケーションはバックグラウンドプロセスとして動作させ、
IPC(プロセス間通信)や共有メモリなど様々な機構を通して
フロントエンドの32ビットなGUIプロセスと連携させるような形になります。


Fatバイナリ
アップデートされたMach-OフォーマットはFATバイナリ形式をサポートします。
単一のファイルに32ビットと64ビット両方の実行体を含められます。
開発者やネットワーク管理者は、G3やG4、G5が混在していても単一のアプリケーションリリースで済ますことができます。
アプリケーションが実行される際、システムが自動的に適切な実行体を選択します。
Fatバイナリを使うことで、リリース、インストール、アプリケーション管理が非常にシンプルになります。

808 :偽の神:2005/04/19(火) 20:40:07 ID:DqzdAh+a
I/O
64ビットアプリケーションはストレージデバイスにアクセスするのにposixのread、write、ioctl を使うことができ、
ネットワークI/Oにはsocketを使うことができます。
デバイスにアクセスするのにIOKitLibやIOUserClient plug-insを使うことはできません。


32ビットアプリケーションでの利点
訳注:ここではG5が32ビットアプリケーションをペナルティなしで動作させられること、
G5の性能の高さが説明されています。
PowerMacのページでのG5紹介と内容が同じなので割愛します。


64ビットアプリケーションの生成
64ビットアプリケーションの生成は実に単純です。
殆どの場面においてプログラミングは従来と変わらず、XcodeとGCCコンパイラが大部分を担います。
MacOSXのフレームワークでは64ビット環境のサポートに制限があること、64ビットのデータモデルを考慮に入れること、
開発者はこの2つを意識する必要があります。
Xcodeで64ビットコンパイラを有効にして64ビットアプリケーションをビルドする場合、
ビルドターゲットのアーキテクチャ設定をppc64 か ppc ppc64 のいずれかにするだけです。
ppc64なら64ビットバイナリのみが生成され、
ppc ppc64なら32ビットCPUと64ビットCPUの両方で動作するFatバイナリが生成されます。

809 :偽の神:2005/04/19(火) 20:40:49 ID:DqzdAh+a
LP64データモデル
MacOSXで使用される64ビットデータモデルは「LP64」です。
これはSunやSGI、64ビットLinuxなどの64ビットUNIXで使われている標準データモデルです。
LP64データモデルは以下の様に定義されています:
・int(整数)は32ビット
・long(長整数)は64ビット
・long-long(超長整数?)も64ビット
・ポインタは64ビット
LP64データモデルの使用により、Linux、Sun、SGI向けに書かれたソースコードを簡単にTiger用にすることができます。
しかし、32ビット環境でのプログラミングと比較すると、LP64データモデルにはいくつか注意すべき点があります:
・ポインタが64ビットなので、int型にポインタを含められません。
・64ビット型の変数と32ビット型の変数との間で型変換を行うとデータが壊れます。
・符号なし64ビット実数は符号あり32ビット実数のように見えてしまいます。
・printfの指示は正確に行わなければなりません。たとえば、ポインタを出力するには%pを使います。


64ビットAPIのマクロサポート
64ビット環境向けコードを条件付きでコンパイルしたり、64ビットなAPIを定義するには、
__LP64__と__ppc64__のマクロが使用できます。
例えば、以下のコードは64ビット実行体としてコンパイルされるかどうかで関数定義を分岐させています。

810 :偽の神:2005/04/19(火) 20:41:37 ID:DqzdAh+a
64ビットアプリケーションにGUIを加える
最初に述べましたが、64ビットアドレス空間の使用はGUIを持たないアプリケーションに限られています。
しかし、64ビットアプリケーションの実行結果がディスプレイに表示できないわけではありません。
連係動作する2つの実行体を作る方法を採ることができます。
・ユーザが起動でき、ユーザーインターフェイスを持つ32ビットベースのCocoaまたはCarbon 実行体
・GUIを通して起動、操作する64ビットベースのコマンドラインツール

一度64ビット実行体を起動したら、以下のような手段により2つの実行体の連携が可能になります。
・コマンドラインの標準入出力パイプによるシンプルなメッセージ伝達
・UNIXのsocketを使ったメッセージ伝達
・共有メモリ
・MachのIPCメッセージング
これらの手段が使用できます。しかし、将来の柔軟性のために、最も単純な手段を使うべきです。
例えば、もしあなたが32ビット実行体と64ビット実行体を連携させるのにファイルシステムベースのsocketを使うと、
後にこれをTCP/IPクライアント-サーバモデルに変更することができます。
こうすれば、G5ベースのXserveで64ビットサーバプロセスを動作させ、
(Xserveと接続したMacで)32ビットクライアントを動作させるといったことができるようになります。


結論
以上のように、サーバアプリケーション、レンダリングエンジンや演算エンジンのような特定のアプリケーションを
64ビットアプリケーションとしてビルドする機能も含め、MacOSX Tigerは64ビット環境を実現します。
これらの低レベルツール(訳注:OSのコア部分に近い機能を使うツールという意味)は
結果表示や他のビジュアル関係の機能を使うためにグラフィカルなフロントエンドアプリケーションと連係させることができます。
MacOSXにおける64ビット環境への移行は長い時間をかけることになります。
Tigerでの64ビットサポートは、これからやるべき多くの段階のうちの第2段階にあたります。
64ビットアプリケーションのサポート強化の時期と詳細は、
開発コミュニティからのフィードバックによって決まってくるでしょう。

476 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)