なぜOS Xアプリケーションはプロセッサに依存し、Windowsプログラムは依存しないのですか?


2

OS Xアプリは、PowerPCとIntelの両方でビルドする必要があります(両方のプロセッサーをサポートする必要がある場合)。

しかし、これはWindowsプログラムの場合には当てはまらないと思います。どうして?


2
質問の前提は偽です。32ビットCPUを搭載したWindowsマシンで64ビットWindowsアプリケーションを実行してみてください。
デビッドシュワルツ

興味深いことに、Windows 8はARMプロセッサをサポートするため、間もなくWindowsプラットフォームがこれに該当します。
ハンドEフード

回答:


8

コンシューマシステムでは、Windowsはx86プロセッサのバリアントで10年以上しか使用できませんでした(Windows 95およびWindows 2000はx86システムでのみ使用可能で、以前のバージョンについては不明です)。しかし、Itaniumアーキテクチャで実行されるWindowsエディションがあり、MicrosoftはWindows 8でのARMプロセッサのサポートを発表しました。

ただし、すべてのWindowsデスクトップシステムは、同じ基本的なx86 CPUアーキテクチャを備えています。


Mac OS Xは、2006年初頭まで、AppleがMacシステムに使用していたPowerPCプロセッサ専用でした。その後、Appleは次の年にコンピューターのラインアップをIntel x86プロセッサーに徐々に変更しました。Mac OS X 10.4(2005年初頭にPowerPC用にリリースされ、2006年初頭にIntel用にリリースされた)は、PowerPCとIntel / x86の両方のバリエーションで利用可能な最初のリリースでした。

彼らは互換レイヤー、(新しい)Intelプロセッサーで(古い)PowerPCプログラムの実行を許可するRosettaを提供し、Appleの開発者ツールを使用して再コンパイルすることで、多くの(より単純な)プログラムを両方で利用できるようになりました。他の開発者ツール(Code Warriorなど)を使用して作成されたものや、Adobeのようないくつかのより大きなソフトウェア製品は、Intelシステムでネイティブに利用できるようになるまでしばらく時間がかかりました。

Mac OS X 10.6(2009年後半)は、PowerPCサポートを廃止した最初のリリースです。Mac OS X 10.7(2011年半ば)では、Rosettaのサポートが廃止されたため、PowerPCプログラムが廃止されました。

Mac用のコンピューターアーキテクチャのこの切り替えも、直接または仮想化を使用してWindowsをMacで実行できるようになった理由です。


Windowsは基本的にx86システムでのみ実行されていましたが、2006年にはMacのラインナップに大きな切り替えがありました。それはごく最近だったため、多くのソフトウェア開発者はこれらのシステムのサポートを継続していますが、Appleはハードウェアとプログラムの両方のサポートを徐々に廃止しましたそれ。


Windows NT 4(Workstationを含む)は、x86、Alpha、PowerPC、およびMIPSで利用可能でした。Windows 2000およびXPはItanium上で実行されました。
悲しみ

@grawity RTM 1996は、2000年初頭にWindows 2000で成功しました。OK、10年以上は間違っているかもしれません。これらの他のプラットフォームの普及がどれほど広かったか知っていますか?おそらく、それほど継続されていなかったので、そうではありません。
ダニエルベック

NT 4のAlphaポートはやや人気があったと聞きましたが(IIRCには何らかのx86エミュレータが組み込まれていました)、Alpha自体何らかの用途を獲得しました-インターネット上には趣味のOpenVMSパブリックアクセスシステムがまだあります。残りについてはわかりませんが、ええ、それらは消えました。
悲しみ

1

これは、異なるアーキテクチャによるものであり、類似の操作を行った場合、ウィンドウでも同じになります。

実際、IBMのPOWERアーキテクチャはまだ世に出ており、非常に多くのサーバーに電力を供給しています。これらのサーバーには、x86(-64)Intel Architectureの場合とは異なるコンパイル済みOSが必要です。


0

Windowsでは、ターゲットアーキテクチャを考慮する必要があります。Visual Studioのオプションを見てください。現在、Windowsには64ビットと32ビットのアーキテクチャ用に異なるビルドが必要です。また、ARM用(今後)。また、Windows 95の昔は、16ビットと32ビットの違いも考慮しなければなりませんでした。さらに以前は、Windows 3は80年代に8088システムを処理する必要がありました。実行可能ファイルに出力されるマシンコードは、命令セットごとに異なる必要があります。

両方の系統には、OSの古いバージョンを対象とするオプションもあります。状況は変わりますが、コンパイラーもそれに合わせて変更する必要があり、私たち全員がレガシーサポートも必要としています。


1
質問者は、同じプロセッサアーキテクチャのさまざまなビット数についてではなく、異なるプロセッサアーキテクチャについて尋ねています。
JdeBP

それらは同じアーキテクチャではありません。ちょうど同じメーカー。コンパイラーは、どのアーキテクチャー用にコンパイルするかを指定する必要があります*。これが、今日の新しいプログラムが32ビットシステムで実行されない傾向がある理由、またはそれぞれのバージョンを提供する必要がある理由です。Appleは、68K / PPCの両方のバージョンを含む「脂肪」ファイル形式でそれを隠そうとしましたが、現在はWindowsにないPPC / 32ビットIntel / 64ビットIntelと同等のユニバーサルです。すべての系統は、アーキテクチャの進化に「うまく」対処しようとします。しかし、変更は技術に詳しくないユーザーには必ずしもそれほど見えません。
デビッド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.