Nella puntata precedente abbiamo accennato alla complessità che
caratterizza un calcolatore, a partire proprio dal semplice PC,
di cui tutti (o quasi) disponiamo.
In virtù di questa complessità, il software di un calcolatore può
essere suddiviso in due grosse categorie: i programmi di sistema
(che controllano e regolano il comportamento del calcolatore stesso)
e i programmi applicativi (che servono per la risoluzione
dei più disparati problemi degli utenti).
I programmi applicativi sono noti a tutti gli utenti di un
computer e possono essere di vario tipo: editor, word processor,
foglio di calcolo, browser Internet, giochi, programmi per la riproduzione
e la creazione di file multimediali, e così via.
I programmi di sistema sono quelli che, in gran parte nascosti
agli occhi degli utenti comuni, rendono difficile, ma allo stesso
tempo interessante e stimolante, la vita degli esperti del settore;
tra questi il più importante è il sistema operativo, croce
e delizia di almeno due generazioni di programmatori e studiosi.
Il sistema operativo (che in seguito indicheremo con lacronimo
SO) svolge una funzione fondamentale: agisce come intermediario
tra lutente e il calcolatore stesso, controllando tutte le
risorse dellhardware e mettendo a disposizione un ambiente
nel quale eseguire i programmi applicativi.
Esaminiamo innanzitutto il motivo per il quale esistono i sistemi
operativi.
Un calcolatore moderno è un sistema molto articolato, costituito
da uno o più processori, da una certa quantità di memoria principale
(la famosa RAM), da uno o più dischi, dalla tastiera, dal monitor,
dal mouse, dalla stampante, dalla scheda video, dalla scheda audio,
dal modem, dalle interfacce di rete e da tanti altri dispositivi
di basso livello, di cui molti ignorano lesistenza.
Se chi scrive un programma dovesse tener conto di tutti questi componenti
e usarli correttamente, curandosi dei dettagli con cui essi lavorano
e delle decine di cose che potrebbero andare storte durante ognuna
delle loro possibili operazioni, certamente ci penserebbe due volte
prima di complicarsi la vita e probabilmente molti programmi non
sarebbero mai stati scritti.
Molti anni fa ci si rese conto che era necessario nascondere al
programmatore la complessità dellhardware, sia per un problema
di efficienza dei programmi, sia per permettere il trasporto del
software da una macchina allaltra con caratteristiche hardware
differenti.
Venne allora introdotto uno strato di software al di sopra dellhardware
nudo e crudo, che si occupasse di controllare tutte le parti del
sistema, presentando allutente uninterfaccia più semplice
da capire e più facile da programmare: il sistema operativo, appunto.
Riepilogando possiamo affermare che un SO ha principalmente due
compiti:
gestire i dispositivi hardware;
supervisionare lesecuzione dei programmi, assegnando in maniera
opportuna le risorse e rilevando eventuali errori.
Per comprenderne pienamente limportanza diamo uno sguardo
allarchitettura interna di un calcolatore, di cui uno schema
semplificato è riportato in figura 2.1.

Fig. 2.1. Struttura a livelli di un calcolatore digitale
Come possiamo vedere, larchitettura di un elaboratore può
essere strutturata in livelli, ognuno dei quali comunica solo con
quelli adiacenti.
E interessante notare che il linguaggio macchina, pur essendo
un software, viene annoverato allinterno del componente hardware:
ciò è dovuto al fatto che esiste un legame strettissimo tra le istruzioni
del linguaggio macchina e i dispositivi fisici che le implementano.
Ogni piattaforma (Intel, AMD, Motorola, IBM, ecc.) ha caratteristiche
hardware differenti dalle altre ed è dotata di un proprio linguaggio
macchina; se non esistesse il sistema operativo, un programmatore
dovrebbe preoccuparsi di scrivere una versione del proprio programma
per ognuna di esse, o limitarsi ad ignorarne alcune, seguendone
le evoluzioni per adattarvisi.
Per ovviare a questo enorme inconveniente, il SO fornisce al programmatore,
e agli utenti in genere, ununica interfaccia, qualsiasi sia
la piattaforma sottostante: è compito di chi scrive il SO far sì
che le azioni decise dal programmatore siano tradotte nelle opportune
istruzioni per la macchina.
Nella puntata successiva vedremo cosa succede quando accendiamo
un calcolatore.
Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet