back

Ci riduciamo quindi a dare una definizione quanto più generica e completa possibile di Sistema Operativo senza poter scendere nei particolari:
Il Sistema Operativo è un insieme di software applicati sulla macchina che hanno lo scopo di estenderne l'architettura e le funzioni, di gestirne le risorse e nel contempo, di proteggerle da un uso scorretto da parte dell'utente.

Obiettivi di un Sistema Operativo

Possiamo osservare un Sistema Operativo sotto diversi punti di vista; distinguiamo in questo articolo tre aspetti fondamentali nella riuscita di un buon progetto.

Interfaccia utente-macchina

Vediamo per cominciare che percezione di Sistema Operativo ha un normale utente.

Se analizzassimo la struttura di un microprocessore noteremmo che esso è in grado di eseguire solamente poche operazioni logiche ed aritmetiche, inoltre ci accorgeremmo che la sua architettura risulta composta da un elevato numero di registri specifici e generici molto complessi da utilizzare. Il principale scopo del Sistema Operativo è di astrarre le varie componenti del calcolatore restituendoci una vera e propria macchina virtuale estesa, molto più semplice e con molte più funzionalità della macchina originale.

Utenti e programmatori ad alto livello vengono sollevati da tutti gli aspetti gestionali della macchina; con essa infatti possono solo comunicare utilizzando il Sistema Operativo come tramite. I meccanismi con cui utente e calcolatore interagiscono sono noti come procedure di Input e Output (più comunemente I/O).
I termini informatici Input e Output sono oramai noti a tutti, non è quindi necessario dare spiegazioni o esempi; vediamo invece quali sono le complicazioni che insorgono dal punto di vista progettuale.

Stiamo mettendo in comunicazione un essere umano con una macchina elettronica. Queste due entità presentano velocità di elaborazione incredibilmente differenti; inoltre l'essere umano è in grado di fare molti errori (addirittura troppi). Occorre dunque tener ben presente questi due aspetti.
La frequenza con cui utente e macchina comunicano è importante: abbiamo I/O bounded job dove gli utenti svolgono mansioni in cui è necessaria una elevata comunicazione (un videogioco o la visione di un film) e CPU bounded job dove invece sono necessarie poche direttive e molto tempo di calcolo (ad esempio la conversione di un filmato in Divx). In questo ambito sono molto importanti i tempi di risposta (anche noti come latenza di I/O). Immaginate quanto possa essere fastidiosa la visione di un film a scatti, mentre se convertiamo un file mp3 i tempi di risposta al segnale di inizio della conversione sono del tutto relativi; ben più importante sarà il tempo impiegato a concludere l'operazione.

back