このページの本文へ

前へ 1 2 次へ

WWDC 2009 総力レポート 第13回

解体Snow Leopard(中編)

なぜMac OS Xの64bit移行はスムーズなのか?

2009年06月14日 17時30分更新

文● 千種菊里

  • この記事をはてなブックマークに追加
  • 本文印刷

現行の「Leopard」でも64bit対応していたが……

Leopard

Mac OS X 10.5「Leopard」

 一方、Mac OS Xは異なる。Mac OS Xは、実は現行のバージョン10.5「Leopard」でも、すべてのフレームワークが64bit対応しており、64bitのアプリケーションを作成することができる。 単一のOSで32bitと64bitのアプリケーションの両方に対応できるのだ。

 ではSnow Leopardの64bitはどこを指しているのかというと、OSのカーネルが完全に64bitになるということだ。

 Leopardのカーネルは32bitの部分を数多く含んでいる。しかし、システムコールの受け付け、メモリー管理やI/OKitデバイスドライバの一部で64bit対応することで、64bitアプリケーションの実行と、4GBを越えるメモリーをサポートする「ハイブリッドモデル」になっていた。

 また、OSに標準で付属するアプリケーションのすべてが32bitで提供されており、32bit/64bitの両対応(ユニバーサルバイナリー)になっていたのは、apacheやChessなど、ごくわずかなものだけだった。

 Leopardでは64bitアプリケーションに対応はしていたが、すべてが64bitというわけではなかったうえ、また64bitアプリケーションも活用はされていなかったのだ。

32bit対応

Leopardに付属するほとんどのアプリは32bit対応


「ユニバーサルバイナリー」という秘策

 恐らくSnow Leopardでは、OSのカーネルから標準アプリケーションまですべてが64bitに進むのであろう。ただし、他のOSと異なり32bitと64bitが共存することになる。

 鍵となるのは、OS Xが用意している「ユニバーサルバイナリー」という技術だ。

 これは、ひとつの実行ファイルに異なるCPU用のバイナリを貼り合わせておき、プログラムの起動時に適切なバイナリを読み込んで実行するというもの。

 ユニバーサルバイナリーは、PowerPCからIntel CPUへの移行時も活躍していた。アプリケーションはひとつだが、ふたつのCPUを意識せずにどちらでも実行することができたのだ。

 そして9月に発売されるSnow Leopardは、単一のリリースしかない。

 PowerPCからIntelの移行期だったTigerやLeopardが、ユニバーサルバイナリーによって、ひとつのリリースでPowerPCとIntel CPUのMacに両対応できたように、Snow Leopardはユニバーサルバイナリーを使って Intel64による64bit(x86_64)と、これまでの32bit(i386)のどちらもに対応するのだろう。すなわちユーザーのMacによって、利用するカーネルを自動的に変えるということだ。

 例えば、32bitのみ対応する「Core Duo」を備えたものや、64bit対応の「Core 2 Duo」を搭載していても64bit化による恩恵をあまり受けられないチップセットを採用するMacでは32bitのカーネルを利用する。一方で、最新のiMacやMacBook Pro、Mac Proのように64bitを活かせる機種では、64bitのカーネルを起動するようになるはずだ。

ユーザーが使うMacに合わせて、32bit/64bitを切り替えてカーネルを起動してくれる

 もちろん、32bitか64bitのどちらのカーネルで起動するかは、ユーザによっての選択ができるだろう。例えば64bitに完全対応したMacでも、デバイスドライバの都合で32bitカーネルが必要ならば、32bitカーネルで起動するといった具合だ。

 どちらの環境でも、64bit対応のCPUならば、64bitのアプリケーションが自動的に実行される。そう、ユーザーはほとんど意識することなく自動的に64bitに移行できるのだ。

 ユーザーが便利であるというのは、もちろん開発者にとっても利点だ。開発者はユニバーサルバイナリーでアプリケーションを用意しておけば、32bitのMacユーザーは32bitで、64bitのMacユーザーは64bitで適切に実行してくれる。安心して64bitに進むことができる。


※後編に続く



前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中