• ベストアンサー

CPUで動作?

汎用CPUのPentium上でWindowsやLinuxなどのOSを動作させる事が可能でありますが、 なぜ全く異なるOSが同一のCPUで動作するんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#58440
noname#58440
回答No.6

  では貴方が理解できる様に砕いて説明しましょう。 OSとはCPUを動かすために作られた物で、人とのインターフェイスの違いによりWindowsとかLinuxと言われる物が存在します。 例えるならエンジンとは車両を動かす物でCPUと考えます、速度を調節するのは人がすることで、そのインターフェイスはアクセルと言われてますが、車なら足で踏むペダル、単車なら手で回すグリップ、機関車なら手で押すハンドルと色々な形の物があります。 この状態を貴方の質問に重ねると 汎用のエンジンをペダルやグリップやハンドルのアクセルで動作させる事ができます。 なぜ異なるアクセルで単一のエンジンを動かせるのでしょう。 答え)エンジンを動かせる様にペダルやハンドルやレバーが作られてるからです。 WindowsはX86互換のIntelやAMDのCPUでは動きますが、MACに搭載されてるCPUであるPowerPCでは動きません(PowerPC様に作られてないから)  

smry
質問者

お礼

ご丁寧な回答ありがとうございます!!! これでOSがCPUにあわせて作られているんですね!!

その他の回答 (5)

  • parts
  • ベストアンサー率62% (6366/10151)
回答No.5

汎用CPUで、異なるOSが動くのは普通の動きですね。何せ汎用ですし・・・ Pentiumはインテルが開発した8086をベースに拡張した第5世代プロセッサです。そのブランド名を継承したのが現在のPentiumシリーズでNetburstやCore系のプロセッサとなります。このインテル互換のプロセッサは、インテルが8086の後に486に至るまでx86と名乗る名称を用いたためx86系と呼ばれるようになりました。 ソフトウェアで大事なのはハードウェアに対応しているかどうかです。x86プロセッサは計算の仕方を決めた物でしかありません。まあ、人間に言語の種類があるように機械語にも種類があるということですかね。 英語を日本語に訳せば、英語の書籍でも日本語になりますよね。 ソフトウェアも同じでx86で動作させようと思って作ればコンパイル(機械語に変換する作業のこと)でx86にもできますし、Power系にそれを変更し動作させることもできるでしょう。コンパイルだけでは他プラットフォームに対応できないケースもありますが、それでもソースコードを多少手直しすればx86でなくとも動きます。 ソフトウェアは柔軟性があるからソフトウェア(software)と呼ばれます。ハードウェアはある定義にそって作られ一度製造されたものの仕組みを変えることはできません。ソフトはハードに適応できるように手直しすれば、x86では出荷されていない例えばSPARC向けソフトでもx86に対応させることはできるでしょう。後は、ソフトウェアを開発する人がその気があるかどうかだけです。 ちなみに、各ハードウェアプラットフォームには開発環境(統合プラットフォーム)が存在します。それが人が記述したソースコード(機械語の元となるプログラミング言語のこと、C言語、アセンブリなど)を対象のハードウェアプラットフォーム(この場合はx86ですね)専用の機械語に翻訳してくれます。 最後に、開発ソフトウェアはどうできるかというと人がハードを元に設計します。最終的には機械語を直接設計したものかそれに相当する作業を行ったソフトウェアがベースです。 <用語> 機械語=電子機械を動かす元となる言語のことで2進数や16進数といった数値で記述された言語のこと。 プログラミング言語(ソースコード)=ソフトウェアをプログラムするときに使う原語。人間が分かる形(英語や日本語、計算式)で記述できる言語のこと。 コンパイル=プログラミング言語を実行可能な機械語に変換すること。コンパイルするためのソフトをコンパイラという。

smry
質問者

お礼

ご丁寧な回答ありがとうございます! 回答が相当レベルが高いですね・・・汗 理解できるように頑張ります。

回答No.4

こういう疑問を持つ人には、おそらく理論的な事よりも、何か身近なものに置き換えて考える方がわかりやすいのでしょう。 私は車に例えるとわかりやすいと思っています。 「車両」というCPUは単体では動きません。inputされた情報からoutputを作り出すためだけのものです。 スロットルをコントロールするinputの仕組みからエンジンをコントロールする為のoutputの仕組み、ハンドルで操舵するinputの仕組みからタイヤを曲げる為のoutputの仕組み、停止する為のinputの仕組みからブレーキをコントロールするoutputの仕組み等々が用意されています。 でも、そのままでは只の機械ですから勝手には動きません。 そこで、動かす為のOSである「人間」が必要になります。 「私」というOSが動かす事もできれば、「あなた」というOSでも動かす事ができます。 もちろん、OSは車両の構造を理解していて、そのHardwareをどうコントロールすればどういう結果が得られるかというルールを知っていなければなりません。 そのルールに基づいたコントロールを行う事ができれば、異なる「OS」が操作しても動かす事ができるのです。 普段、口頭で説明する分には大抵の人に理解してもらえるのですが、いざ文章にしてみると、伝わるかどうか怪しいものですね。 他にうまい喩えが無いものか…

smry
質問者

お礼

こんな丁寧な回答!!!ありがとうございます!!! 結局OS次第ということになってしまうんですかね?

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.3

CPUってのは、単に基本的な命令を実行することしかできません 基本的な命令を沢山組み合わせて、ある特定の機能を実現したものがいわゆるプログラムです で、プログラムを実行するための準備やいろいろな管理等をするためのプログラムがOSと呼ばれます CPUそのものがWindowsやlinuxというようなOSの機能をはじめから持っているわけではありません もし、そのような 特定の/特化した機能 を持っていたら 汎用 といえません…よね?

smry
質問者

お礼

丁寧な回答ありがとうございます。 、、、が、難しいですね・・・汗 結局、対応とかではなくCPUはOSというプログラムを実行しているに他ならないからということでいいのでしょうか?

  • koj705
  • ベストアンサー率37% (112/295)
回答No.2

意図した答えでないかもしれませんが、CPUが対応しているのではなくOSが対応していると解釈ではダメですか? CPUの動作条件はハード的な仕様のみで、OSの場合はCPUやメモリ・グラフィック等様々です。

smry
質問者

お礼

なるほど。 実際にはどっちなんでしょうか? CPUが対応してるのかOSが対応してるのか。 どちらともなんですかね? 回答ありがとうございます。

noname#58440
noname#58440
回答No.1

  そのCPUで動作する様に作られてるからです。  

smry
質問者

お礼

それはそうだと思いますが、それではどのようにそうやって作られているのでしょうか? 回答ありがとうございます。

関連するQ&A