回答:
はい、概念は異なります。
A simulation
は、他の何かと同様に動作するシステムですが、まったく異なる方法で実装されています。システムの基本的な動作を提供しますが、シミュレーション対象のシステムのすべてのルールに必ずしも準拠しているとは限りません。何かがどのように機能するかについてのアイデアを提供するためにあります。
例
例としてフライトシミュレータを考えてください。飛行機を操縦しているように見えますが、飛行機を操縦するという現実から完全に切り離されており、必要に応じてこれらの規則を曲げたり、破ったりすることができます。たとえば、エアバスA380をロンドンとシドニーの間で壊れることなく上下逆さまに飛行させます。
An emulation
は、他のシステムとまったく同じように動作し、エミュレートされるシステムのすべてのルールを順守するシステムです。これは、エミュレートされたシステムの入力および出力とバイナリ互換になるまで、別のシステムの完全な複製であり、元のエミュレートされたシステムの環境とは異なる環境で動作します。ルールは固定されており、変更できないか、システムに障害が発生します。
例
MAMEのシステムは、この非常に前提を中心に構築されています。長い間忘れられてきた、ほぼ完全にハードウェアまたはハードウェアシステムのファームウェアに実装された古いアーケードシステムはすべて、可能な限り最高のスコアに達したときに発生する元のバグやクラッシュまでエミュレートできます。
シミュレーションは明らかにあなたがあなたのクエリに関連する機能を維持し、無関係なものを残したい-そのことの機能の一部を再現し、他人を抜けて何か他のもので構築したモデルです。
たとえば、早朝の通勤者トラフィックのシミュレーションでは、通勤者の名前、さらにはアイデンティティ(実際のCommuter
オブジェクトのセットではなくカウンター変数を使用)が除外されますが、到着率は無視できません。
エミュレーションとは、プラットフォームA向けに作成されたソフトウェアXをプラットフォームBで実行し、ソフトウェア自体を変更しないことです。これには、B上で実行されるAのモデルを構築する必要があり、明らかに、コード実行を伴うAについてのすべてをモデル化する必要があります。(理論的には、この特定のソフトウェアが使用することはないことを知っているオペコードのサポートを省略することができますが、それはまれです-エミュレータを実行するのは大変な作業であり、徹底的な仕事をして、クラッジよりも再利用可能なものを持つことははるかに価値がありますSでのみ機能します。)
両方とも、何か別の仕事をしていることを意味します。
違いは、「シミュレーション」が意識レベルで(ユーザーに対して)発生し、通常、現実そのものに触れることなく現実の結果を予測するために最終化されることです。
「エミュレーション」は無意識のレベルで発生し、基礎となるコンポーネントを、ユーザーに関して古いコンポーネントとして機能する別のコンポーネントに置き換える目的があります。
言い換えれば、シミュレーションは「パラレルワールド」で行われ、エミュレーションは「置き換えられた世界」で行われます。
技術的には、両者は同じことを行います。まるで本物のように動作する環境で何かをします。
ただし、概念的には重要な違いがあります。
シミュレーションはある程度現実の世界から切り離されることになっています。シミュレーションの出力は、シミュレートするものに直接接続されていません。たとえば、航空機シミュレータは実際には飛行せず、パイロットは実際の航空管制官と実際に通信していません。
シミュレーションは、通常あり、目標のテストをか、安全な環境で、いくつかの現実のプロセスを予測します。シミュレーションは現実の世界から切り離されているため、実際に悪いことは何も起こりません(crash落した航空機シミュレーターが実際の人を殺すことはありません)。
エミュレーションは、対照的に、本物の場所を取るという目標を持っている:あなたはより洗練されたプログラム可能なCPUを使用して簡単なマイクロコントローラをエミュレートする場合、そのCPUは、オリジナルのマイクロコントローラの代わりに使用することができます。物理的に何らかのマシンに接続され、実際にマイクロコントローラーと同じようにそのマシンを制御します。
エミュレーションの目標は、元のモジュールが利用できない場合(または維持するだけでも高価になった場合)に、ハードウェアまたはソフトウェアコンポーネントを機能的に同等のものに置き換えることです。エミュレーションは、ハードウェアをより柔軟に使用するという目標にも役立ちます。同じプログラム可能なマイクロコントローラーを複数の単純なコントローラーで倍増させ、必要に応じてエミュレーションモードを切り替えることができます。
"technically"
、それらはまったく異なります。説明する概念的な違いは、この違いの基本です。
語源は厳密に正確ではありませんが、「私はそれがどのように感じなければならないか想像できます」と共感、「私はそれがどのように感じるか知っています」の違いについて考えてください。シミュレーションには問題の視覚的表現が含まれる場合がありますが、含まれない場合があります。たとえば、何人の人が列に並んでいるか、総収益、平均速度を表す数字の列を印刷するだけです。それは現実と一致するいくつかの特徴を持ち、そうでないものもあります。
あるプラットフォームを別のプラットフォームのふりをするコンテキストでよく使用されるエミュレーションは、はるかに完全です。そのため、Windows Phone開発者は、エミュレーター内のWindowsマシンで電話アプリを実行またはデバッグできます。エミュレーターは電話のように見え、そのように動作します。エミュレータで古いCommodore 64ゲームも実行できます。
言葉は正確ではありません。私の意見では、ほとんどのフライトシミュレータはエミュレータに似ていますが、その名前は没入型ではない時代から定着しています。一部の人々は、クロスプラットフォームのケースのために単語エミュレータを予約し、それ以外のもののためにそれを拒否します。話すときに同じことをすれば、おそらく間違っているとは思わないでしょうが、2つの単語の境界を少し異なるように配置し、誰かが「これはエミュレーションです」と言ったときに、完全なシミュレーション。
両方の用語のコンセプトは非常に似ており、模倣しています。
シミュレーションまたはシミュレーターは、ソフトウェアを使用して、基礎となるコア機能(特にその基本的な方法論)に関してターゲットモデルに非常によく似た複製システムを作成します。
一方、エミュレーターは、ターゲットシステムと比較した場合、外部の類似性により重点を置いています。関数がどのように模倣されるかについての懸念は最小限です。エミュレータは、一般に、元のシステムとはまったく異なる環境(たとえば、異なるオペレーティングシステム)で作業するときに使用されます。