Macchina astratta: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
|||
Riga 3:
Le macchine astratte sono usate nella [[teoria della computabilità]] per analizzare la [[computabilità]] e la complessità degli algoritmi. Attraverso l'uso di macchine astratte è infatti possibile calcolare la quantità di risorse (tempo, memoria, ecc) necessari per eseguire una determinata operazione, senza dover costruire un sistema reale.
Il più famoso esempio di macchina astratta è la [[macchina di Turing]], ma esistono esempi più completi, con [[struttura dati]], registri e un set di istruzioni completo, come la [[macchina RAM]], che permette l'accesso casuale a locazioni di memoria indicizzati.
Una macchina astratta può anche riferirsi ad un progetto di un [[microprocessore]], che deve ancora essere (o non è destinato ad essere) implementato come hardware. Una macchina astratta implementata come software di simulazione, o per la quale esiste un interprete si chiama [[macchina virtuale]].
==Definizione==
In termini di input e di output una macchina astratta tipica, consiste in un insieme di operazioni ammissibili, utilizzate per trasformare l'[[input]] in [[output]].
Fornire una definizione dettagliata e nello stesso tempo valida
Riserviamo maggiore attenzione alle macchine astratte imperative poiché la
Formalmente una '''macchina astratta''' (imperativa) è un insieme di [[strutture dati]] e algoritmi in grado di memorizzare ed eseguire programmi.
Riga 41:
==Realizzazione per interpretazione==
Può avvenire via [[firmware]] e via software (attraverso un [[emulatore]]).
Via firmware gli algoritmi e le strutture dati si realizzano mediante [[microprogramma]], in una macchina ospite microprogrammabile
==Realizzazione per compilazione==
Riga 48:
==I moderni calcolatori==
La differenza di potenza espressiva fra la macchina astratta che vogliamo realizzare e la macchina astratta ospite(HOST) è detta [[semantic gap]]. Spesso il semantic gap tra la macchina da realizzare e la macchina HOST è così grande che per rendere il sistema efficiente è conveniente realizzare macchine astratte intermedie.
Si forma così una vera e propria gerarchia di macchine astratte, dove al livello più basso ci sono i circuiti elettronici e al livello più alto vi è la macchina astratta al "livello" utente.
I moderni calcolatori sono realizzati combinando tutte e tre le tecniche
|