0

SOの質問を読みましたが、まだ疑問があります-特定のCPUの実行可能プログラムがLinuxとWindowsで動作しないのはなぜですか?

回答の1つは、「すべてのOSで、バイナリが特定のバイナリ形式に準拠している必要がある」と述べています。

あれは正しいですか ?はいの場合、これを上記のステートメントに追加できますか?実行可能ファイルにはバイナリコード(???)が含まれています。100011はWindowsバイナリ形式で5を意味するとしましょう。しかし、これらの同じコードは、別のOSでは他の何かまたは何も意味しません。したがって、win用に作成された実行可能ファイルはLinuxでは機能しません。

4

2 に答える 2

1

Windows と Linux は、異なるベースを使用して構築されています。Windows は DOS ベースで、Linux は UNIX ベースです。Windows が OS のソース コードをリリースしていれば、Linux の互換性が向上し、Windows プログラムを実行できるようになるかもしれませんが、そうはなりませんでした。Linux は独自に開発されたものであるため、異なることは理解できます。とりわけ、Linux は異なるシステム コマンドと呼び出しも使用するため、どちらにも「実行可能なプログラム」がありますが、実行方法は OS 固有です。

1 つの例: Windows でコマンド プロンプトを開き、 と入力しますdir。これにより、現在のディレクトリのすべてのファイルとサブディレクトリが一覧表示されます。ただし、ディレクトリの内容を一覧表示するのに相当する Linux はls.

出典: Linux で Windows プログラムを実行できないのはなぜですか?

于 2012-11-29T05:35:09.820 に答える
0

私自身の質問に答えようとする大雑把で平易な英語の試み -

OS は、アプリケーション/プログラムがハードウェア (モニター、キーボード、ネットワーク カードなど) とやり取りできるようにします。OS は、アプリとハードウェアの間の仲介者のように機能します。

そもそもなぜ仲介業者が必要なのですか?答えはわかりませんが、推測してみます。アプリにコードを追加して、すべてのハードウェアとやり取りできるようにすることもできます。しかし、すべてのアプリがこれを行うと、各アプリはあまりにも多くのスペースを必要とし、無駄になります。それらは冗長性になります。たとえば、すべてのゲームには、さまざまなブランドのモニターでゲームの画面を表示するための独自のコードがあります。たぶん他の問題もあるでしょう。

ハードウェアとやり取りするには、プログラムは OS と「対話」するか、「システム コール」を行う必要があります。OSが使う「言語」を「API」と呼びます。すべての OS には独自の API があります。そのため、Windows API で「話す」プログラムは、Linux システムと「話す」ことができません。

私が使用したリンク - http://en.wikipedia.org/wiki/Operating_system http://en.wikipedia.org/wiki/System_call

于 2012-11-29T07:52:38.983 に答える