Astrazione: ignorare dettagli per semplificare un problema -> utile per sistemi complessi.
Si tratta di un concetto tipico dell'ingegneria. Un esempio di applicazione è il motore oppure un database.
Un calcolatore può essere descritto e costruito come una gerarchia di macchine astratte, dove ogni livello maschera (nasconde) i dettagli ai livelli sottostanti.
L'astrazione è utile anche in fase di costruzione: ES: macchina powepoint: ha una complessità proibitiva -> suddivido il progetto in gerarchie astratte (1-Elaboratore, 2-S.O., 3-Programmi).
Un esecutore è definito in base a 3 elementi:
Per ogni istruzione esegue diverse operazioni:
Per definire un'istruzione serve un linguaggio (a sua volta astratto). Ogni processore ha il "suo" linguaggio macchina, ed è in grado di comprenderlo direttamente.
E' un linguaggio binario e sono comandi di bassissimo livello, che hanno quindi effetti elementari (ES: copia di un valore da un registro di memoria a un altro).
Tuttavia, è un linguaggio inadeguato per programmi complessi -> sono nati linguaggi di livello superiori le quali istruzioni sono tradotte (o eseguite mediante) istruzioni di livello inferiore. Sono più potenti e facili da programmare, che astraggono quanto accade ai livelli sottostanti.
(legenda: M0: macchina fisica, L0 linguaggio macchina di M0, IN: istruzioni del linguaggio L0, M1: macchina virtuale, L1: linguaggio di livello superiore di M1, JN: istruzioni di L1)