Nella seconda puntata abbiamo visto che larchitettura di un generico sistema di calcolo può essere strutturata in un certo numero di livelli (cfr. fig. 2.1); ogni livello prende il nome di macchina virtuale e possiamo indicarlo come MV0, MV1, , MVn.

Fig. 4.1. Relazioni tra macchine virtuali.
Ogni macchina virtuale MVi dispone di un insieme di oggetti
Oi e di un linguaggio Li per la gestione e
il controllo degli oggetti dellinsieme Oi.
Le istruzioni di Li sono implementate per mezzo di programmi
scritti nel linguaggio Lj con j<i, dove tipicamente
j=i-1; ciò vuol dire che le istruzioni del linguaggio Li
sono generalmente realizzate per mezzo di programmi del linguaggio
al livello immediatamente inferiore.
Generalmente le istruzioni di Li sono dette
meccanismi, perché rappresentano le azioni che quel linguaggio
è in grado di compiere; i programmi di Lj che implementano
tali meccanismi sono detti politiche, in quanto costituiscono
il modo in cui un determinato meccanismo è realizzato.
Quando si realizza un livello MVj, occorre conoscere
quali sono i meccanismi di Li, cioè del linguaggio al
livello immediatamente sopra, e scegliere una politica per limplementazione
di quel meccanismo.
Generalmente non esistono due sviluppatori che implementano lo stesso
meccanismo alla stessa identica maniera: ciò vuol dire che lo stesso
meccanismo può essere realizzato attraverso politiche differenti,
che portano, evidentemente, a prestazioni con caratteristiche diverse.
Se esaminiamo la struttura a livelli di un calcolatore secondo questo
modello, vengono fuori alcuni dettagli molto interessanti, che ci
fanno comprendere meglio in che modo il SO esegue i propri compiti,
ossia controllare e allocare le risorse in modo equo
ed efficiente (gestione della concorrenza, protezione, gestione
dei files, etc.) e semplificare lutilizzo delle risorse da
parte dellutente (librerie standard, interfacce, etc.).

Fig. 4.2. Macchine virtuali in un calcolatore digitale.
In figura 4.2 è reso evidente il ruolo della macchina virtuale SO
come intermediario tra lutente e lhardware, attraverso
delle interfacce chiare e semplici verso luno e laltro
livello.
Analizziamo la figura partendo dallalto.
Lutente rappresenta una macchina virtuale che lavora con degli
oggetti, quali ad es. file e database, che può gestire e controllare
per mezzo di programmi scritti in linguaggi ad alto livello.
Questi ultimi utilizzano delle istruzioni, quindi
dei meccanismi, che vengono implementate dalle corrispondenti politiche
del SO, il quale agisce direttamente sulle risorse della macchina,
come la CPU e la memoria.
Tutto ciò viene fatto grazie alle politiche che gli vengono offerte
dalla macchina virtuale Assembler attraverso il linguaggio macchina
(indicato con L/M), le cui istruzioni sono formate da sequenze di
cifre binarie che vengono interpretate dal firmware per eseguirle
sullhardware vero e proprio.
Infine, lhardware non ha un linguaggio nel pieno senso del
termine, perché il modo di realizzare i meccanismi del firmware
è di tipo elettronico, cioè per mezzo di segnali elettrici che viaggiano
allinterno di una struttura fisica in grado di implementare
funzioni logiche.
Non è nostra intenzione procedere allesame del modo in cui
lhardware viene realizzato, ma possiamo accennare al fatto
che, al pari di ogni altro livello, è possibile realizzare gli stessi
meccanismi del firmware per mezzo di politiche hardware differenti,
con conseguenti differenze nelle prestazioni, nellaffidabilità
e nel consumo di energia della macchina (problema, questo, molto
sentito in caso di dispositivi portatili).
Sono proprio le politiche del linguaggio macchina,
del firmware e dellhardware a fare la differenza tra le diverse
architetture: un SO che gira su una macchina può dar luogo a prestazioni
del tutto diverse da quelle che riesce a dare su una macchina con
unarchitettura differente, così come diverse possono essere
le prestazioni che vengono fuori dallo stesso hardware quando è
gestito da SO distinti.
Svariati studi hanno rilevato che le politiche del SO sono determinanti
nel decidere quanta potenzialità dellhardware riesce ad essere
sfruttata realmente nellesecuzione dei programmi utente.
E proprio di questi aspetti che ci occuperemo nella seconda
parte del corso.
Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet