Często widzę Symulacje i emulacje w informatyce. Te dwa warunki wydają się synonimami. Czy jest jakaś różnica między symulacją a emulacją ?
Często widzę Symulacje i emulacje w informatyce. Te dwa warunki wydają się synonimami. Czy jest jakaś różnica między symulacją a emulacją ?
Odpowiedzi:
Tak, koncepcje są różne.
A simulation
jest systemem, który zachowuje się podobnie do czegoś innego, ale jest implementowany w zupełnie inny sposób. Zapewnia podstawowe zachowanie systemu, ale niekoniecznie musi być zgodne z wszystkimi regułami symulowanego systemu. Ma on dać ci wyobrażenie o tym, jak coś działa.
Przykład
Pomyśl o symulatorze lotów jako przykładzie. Wygląda na to, że lecisz samolotem, ale jesteś całkowicie odłączony od rzeczywistości latania samolotem i możesz zginać lub łamać te zasady według własnego uznania. Na przykład lataj Airbusem A380 do góry nogami między Londynem a Sydney, nie psując go.
Jest emulation
to system, który zachowuje się dokładnie jak coś innego i jest zgodny z wszystkimi zasadami emulowanego systemu. Jest to faktycznie pełna replikacja innego systemu, aż do binarnej zgodności z wejściami i wyjściami emulowanego systemu, ale działającym w innym środowisku niż środowisko oryginalnego emulowanego systemu. Reguły są ustalone i nie można ich zmienić, w przeciwnym razie system zawiedzie.
Przykład
System MAME jest zbudowany wokół tej właśnie przesłanki. Wszystkie te dawne zapomniane systemy zręcznościowe, które zostały prawie całkowicie zaimplementowane w sprzęcie lub w oprogramowaniu sprzętowym ich systemów, można emulować aż do oryginalnych błędów i awarii, które wystąpiłyby, gdy osiągniesz najwyższy możliwy wynik.
Symulacja to model wykonany z czegoś innego, który odtwarza niektóre z cech tej rzeczy i pozostawia się innym - oczywiście chcesz zachować cechy odnoszące się do zapytania, a pominąć te nieistotne.
Na przykład symulacja ruchu osób dojeżdżających do pracy o poranku Commuter
pomija nazwiska osób dojeżdżających do pracy, a może nawet ich tożsamości (przy użyciu zmiennej licznika zamiast rzeczywistego zestawu obiektów), ale nie może zignorować ich szybkości przybycia.
Emulacja to uruchomienie oprogramowania X utworzonego dla platformy A na platformie B, bez zmiany samego oprogramowania. Wymaga to zbudowania modelu A działającego na B i oczywiście musi modelować wszystko o A, które obejmuje wykonanie kodu. (Teoretycznie można pominąć obsługę kodów, o których wiadomo, że to konkretne oprogramowanie nigdy nie będzie używać, ale jest to rzadkie - wykonanie emulatora to ciężka praca, a o wiele bardziej opłacalne jest wykonanie dokładnej pracy i posiadanie czegoś wielokrotnego użytku niż kludge działa tylko dla S.)
Oba oznaczają coś, co spełnia rolę czegoś innego.
Różnica polega na tym, że „Symulacja” odbywa się na świadomym poziomie (w odniesieniu do użytkownika) i jest zazwyczaj finalizowana w celu przewidywania wyniku rzeczywistości bez dotykania samej rzeczywistości.
„Emulacja” ma miejsce na poziomie nieświadomości i ma na celu zastąpienie bazowego komponentu innym innym, który - w odniesieniu do użytkownika - działa jak stary.
Innymi słowy, symulacja odbywa się w „świecie równoległym”, zaś emulacja w „świecie zastąpionym”.
Technicznie oba robią to samo: rób coś w środowisku, które działa tak, jakby to była prawdziwa rzecz.
Pod względem koncepcyjnym istnieje jednak istotna różnica.
Symulacja ma być oderwana od świata rzeczywistego do pewnego stopnia; wynik symulacji nie jest bezpośrednio związany z przedmiotem, który symuluje. Na przykład symulator samolotu w rzeczywistości nie lata, a pilot w rzeczywistości nie komunikuje się z prawdziwym kontrolerem ruchu lotniczego.
Symulacja zwykle ma cel badań lub przewidywania jakiś proces rzeczywistego życia w bezpiecznym środowisku; ponieważ symulacja jest odłączona od realnego świata, nic naprawdę złego nie może się wydarzyć (rozbity symulator samolotu nigdy nie zabija prawdziwych ludzi).
Emulacja , przeciwnie, ma na celu zajmując miejsce prawdziwe: na przykład, jeśli naśladować prostego mikrokontrolera za pomocą programowalnego procesora bardziej wyrafinowany, że procesor może być używany w miejsce oryginalnego mikrokontrolera; będzie fizycznie podłączony do jakiejś maszyny i faktycznie będzie sterował tą maszyną, tak jak mikrokontroler.
Cel o emulacji jest zastąpienie komponentów sprzętowych lub programowych z funkcjonalne odpowiedniki gdy oryginalne moduły nie są dostępne (lub stają się zbyt drogie, jeśli tylko do utrzymania). Emulacja może również służyć bardziej elastycznemu korzystaniu ze sprzętu - ten sam programowalny mikrokontroler może podwoić liczbę prostszych sterowników, zmieniając tryb emulacji w razie potrzeby.
"technically"
są zupełnie inne. Różnica koncepcyjna, którą opisujesz, ma fundamentalne znaczenie dla tej różnicy.
Chociaż etymologia nie jest ściśle ścisła, zastanów się nad różnicą między współczuciem: „Mogę sobie wyobrazić, jak to musi się czuć”, a empatią, „Wiem, jak to jest”. Symulacja może obejmować wizualną reprezentację problemu, ale nie musi. Na przykład może po prostu wydrukować kolumny liczb reprezentujące liczbę osób ustawionych w kolejce po coś lub całkowity przychód lub średnią prędkość. Ma pewne cechy, które pasują do rzeczywistości, a niektóre nie.
Emulacja, która jest często używana w kontekście jednej platformy udającej inną platformę, jest znacznie bardziej kompletna. Dlatego programiści Windows Phone mogą uruchamiać lub debugować aplikacje na telefonie na komputerze z systemem Windows w emulatorze, który wygląda jak telefon i zachowuje się jak jeden z nich. Możesz także uruchomić swoje stare gry Commodore 64 w emulatorze.
Słowa nie są precyzyjne. Moim zdaniem większość symulatorów lotu przypomina bardziej emulatory, ale nazwa utknęła w czasach, gdy nie były tak wciągające. Niektóre osoby rezerwują emulator słowa na przypadek wieloplatformowy i odrzucają go na cokolwiek innego. Prawdopodobnie nigdy nie pomylisz się, jeśli robisz to samo podczas mówienia, ale zrozum, że niektórzy ludzie mogą nieco inaczej wytyczyć granicę między tymi dwoma słowami i przyjąć tolerancję, gdy ktoś powie „to jest emulacja” dla naprawdę dokładnego i pełna symulacja.
Oba terminy są bardzo podobne pod względem koncepcji - naśladowanie.
Symulacje lub symulatory wykorzystują oprogramowanie do stworzenia replikowanego systemu, który jest bardzo podobny do modelu docelowego pod względem podstawowej funkcjonalności (szczególnie podstawowej metodologii).
Z drugiej strony emulatory koncentrują się bardziej na podobieństwie zewnętrznym w porównaniu do systemu docelowego. Ma minimalne znaczenie „naśladowania” funkcji. Emulatory są na ogół używane podczas pracy w zupełnie innym środowisku (na przykład innym systemie operacyjnym) w porównaniu do oryginalnego systemu.