Corso di Sistemi Operativi

Il SO come macchina astratta

 

Nella seconda puntata abbiamo visto che l’architettura 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 dell’insieme 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 l’implementazione 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 l’utilizzo delle risorse da parte dell’utente (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 l’utente e l’hardware, attraverso delle interfacce chiare e semplici verso l’uno e l’altro livello.
Analizziamo la figura partendo dall’alto.
L’utente 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 sull’hardware vero e proprio.
Infine, l’hardware 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 all’interno di una struttura fisica in grado di implementare funzioni logiche.
Non è nostra intenzione procedere all’esame del modo in cui l’hardware 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, nell’affidabilità 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 dell’hardware 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 un’architettura 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à dell’hardware riesce ad essere sfruttata realmente nell’esecuzione 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