Spesso vedo Simulazione e Emulazione in informatica. Questi due termini sembrano sinonimi. C'è qualche differenza tra Simulazione e Emulazione ?
Sì, i concetti sono diversi.
Un simulation
è un sistema che si comporta simile a qualcos'altro, ma è implementato in un modo completamente diverso. Fornisce il comportamento di base di un sistema, ma potrebbe non essere necessariamente conforme a tutte le regole del sistema simulato. È lì per darti un'idea di come funziona qualcosa.
Esempio
Pensa ad un simulatore di volo come esempio. Sembra che tu stia volando su un aereo, ma sei completamente disconnesso dalla realtà di volare sull'aereo, e puoi piegare o infrangere quelle regole come meglio credi. Ad esempio, fai volare un Airbus A380 a testa in giù tra Londra e Sydney senza romperlo.
Un emulation
è un sistema che si comporta esattamente come qualcos'altro, e aderisce a tutte le regole del sistema emulato. È efficacemente una replica completa di un altro sistema, fino a essere compatibile con gli ingressi e le uscite del sistema emulato, ma operando in un ambiente diverso rispetto all'ambiente del sistema emulato originale. Le regole sono fisse e non possono essere modificate o il sistema fallisce.
Esempio
MAME Il sistema è costruito attorno a questa premessa. Tutti quei vecchi sistemi arcade che sono stati da tempo dimenticati, che sono stati implementati quasi interamente nell'hardware o nel firmware dei loro sistemi hardware possono essere emulati fino agli errori e agli errori originali che si sarebbero verificati quando si raggiungeva il punteggio più alto possibile. / p>
Una simulazione è un modello costruito con qualcos'altro che riproduce alcune delle caratteristiche di quella cosa e ne lascia fuori altre - ovviamente si desidera preservare le funzionalità rilevanti per la query e tralasciare quelle irrilevanti.
Ad esempio, una simulazione del traffico dei mattinieri dei pendolari lascia fuori i nomi dei pendolari, e forse anche le loro identità (usando una variabile contatore anziché un insieme effettivo di oggetti Commuter
), ma non può ignorare il loro tasso di arrivo .
Emulation è la gestione di un software X creato per la piattaforma A sulla piattaforma B, senza modificare il software stesso. Ciò richiede la costruzione di un modello di A che gira su B, e ovviamente deve modellare tutto su A che implica l'esecuzione del codice. (In teoria potresti omettere il supporto per gli opcode che sai che questo particolare software non userà mai, ma questo è raro - fare un emulatore è un lavoro duro, ed è molto più utile fare un lavoro completo e avere qualcosa di riutilizzabile di un kludge che funziona solo per S.)
Entrambi significano qualcosa che fa il lavoro di qualcos'altro.
La differenza è che "Simulazione" avviene a un livello consapevole (rispetto all'utente) ed è in genere finalizzata ad anticipare il risultato di una realtà senza toccare la realtà stessa.
L'"emulazione" avviene a un livello inconscio e ha lo scopo di sostituire un componente sottostante con un altro diverso che, rispetto all'utilizzatore, funziona come quello vecchio.
In altre parole, la simulazione avviene in un "mondo parallelo", mentre l'emulazione avviene in un "mondo sostituito".
Tecnicamente, entrambi fanno lo stesso: fai qualcosa in un ambiente che agisce come se fosse la cosa reale.
Concettualmente, tuttavia, c'è una differenza importante.
Una simulazione dovrebbe essere distaccata dal mondo reale fino a un certo punto; l'output di una simulazione non è direttamente collegato alla cosa che simula. Ad esempio, un simulatore di aeromobili in realtà non vola e il pilota non sta effettivamente comunicando con un vero controllore del traffico aereo.
Una simulazione di solito ha l'obiettivo di testare o prevedere un processo reale in un ambiente sicuro; poiché la simulazione è scollegata dal mondo reale, non può accadere nulla di veramente brutto (un simulatore di aeromobili in crash non uccide mai persone reali).
Un'emulazione , al contrario, ha l'obiettivo di prendere il posto della cosa reale: ad esempio, se si emula un microcontrollore semplice utilizzando una CPU programmabile più sofisticata, tale CPU può essere utilizzata in luogo del microcontrollore originale; sarà fisicamente connesso ad alcune macchine e controllerà effettivamente quella macchina proprio come farebbe il microcontrollore.
L'obiettivo di un'emulazione è sostituire componenti hardware o software con equivalenti funzionali quando i moduli originali non sono disponibili (o sono diventati troppo costosi, se non altro mantenere). L'emulazione può anche servire l'obiettivo di utilizzare l'hardware in modo più flessibile: lo stesso microcontrollore programmabile può raddoppiare per più controllori più semplici, cambiando la modalità di emulazione secondo necessità.
Mentre l'etimologia non è rigorosamente accurata, pensa alla differenza tra la simpatia, "Posso immaginare che cosa deve provare" ed empatia, "So come ci si sente." Una simulazione potrebbe includere la rappresentazione visiva di un problema, ma potrebbe non esserlo. Ad esempio potrebbe semplicemente stampare colonne di numeri che rappresentano quante persone sono allineate per qualcosa o entrate totali o velocità media. Ha alcune caratteristiche che corrispondono alla realtà e altre no.
L'emulazione, che viene spesso utilizzata nel contesto di una piattaforma che finge di essere un'altra piattaforma, è molto più completa. Quindi gli sviluppatori di Windows Phone possono eseguire o eseguire il debug delle app del telefono su una macchina Windows in un emulatore, che sembra un telefono e si comporta come uno di loro. Puoi anche eseguire i tuoi vecchi videogiochi Commodore 64 in un emulatore.
Le parole non sono precise. La maggior parte dei simulatori di volo sono più simili agli emulatori secondo me, ma il nome è rimasto bloccato da un momento in cui non erano così coinvolgenti. Alcune persone riservano l'emulatore di parole per il caso cross-platform e lo rifiutano per qualcos'altro. Probabilmente non sarai mai considerato sbagliato se fai lo stesso quando parli, ma capisci che alcune persone potrebbero mettere il confine tra le due parole in modo un po 'diverso, e fare delle tolleranze quando qualcuno dice "questa è un'emulazione" per una cosa veramente accurata e simulazione completa.
Entrambi i termini sono molto simili nel concetto - mimando.
Simulazioni o simulatori fanno uso di software per produrre un sistema replicato che è molto simile al modello di destinazione in relazione alle sue funzionalità di base (in particolare la sua metodologia di base).
Gli emulatori, d'altro canto, si concentrano maggiormente sulla somiglianza esterna rispetto al sistema di destinazione. Ha il minimo interesse per "come" vengono imitate le funzioni. Gli emulatori sono, in generale, utilizzati quando si lavora in un ambiente completamente diverso (ad esempio un sistema operativo diverso) rispetto al sistema originale.
Leggi altre domande sui tag terminology simulation