Il 0% ha trovato utile questo documento (0 voti)
24 visualizzazioni8 pagine

Gen SO

Il documento descrive i concetti fondamentali dei sistemi operativi, come il loro ruolo nella gestione delle risorse hardware e software di un sistema di elaborazione e nel fornire un'interfaccia tra la macchina e l'utente. Vengono inoltre introdotti concetti come la struttura a strati di un sistema operativo e l'evoluzione storica dei primi sistemi operativi.

Caricato da

Antonio Gargiulo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
24 visualizzazioni8 pagine

Gen SO

Il documento descrive i concetti fondamentali dei sistemi operativi, come il loro ruolo nella gestione delle risorse hardware e software di un sistema di elaborazione e nel fornire un'interfaccia tra la macchina e l'utente. Vengono inoltre introdotti concetti come la struttura a strati di un sistema operativo e l'evoluzione storica dei primi sistemi operativi.

Caricato da

Antonio Gargiulo
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 8

I sistemi operativi: concetti introduttivi

1) Cos’è un sistema operativo


Il sistema operativo è l'insieme dei programmi necessari al funzionamento della macchina;
il software di base rappresenta tutto il corredo di software di cui un computer può essere
dotato, comprendendo, in particolare, il sistema operativo stesso.
Il sistema operativo in realtà fa parte del software di base essenziale ovvero è
software senza del quale l'hardware non avrebbe scopo di esistere, distinguendolo dal
resto del software di base che chiameremo software di base non essenziale quali:
interpreti,compilatori, debugger, compressori ecc. Spesso la distinzione tra software
essenziale e software non essenziale non è così netta. Si consideri, ad esempio, la disputa
(anche a livello giudiziario) per stabilire se il browser di Microsoft facesse o meno parte
del software essenziale.
Possiamo rappresentare un generico sistema di elaborazione con la seguente struttura a
strati (Fig. 1).

Un sistema operativo (SO) è un insieme di programmi la cui finalità è quella di gestire in


modo affidabile ed efficiente le risorse hardware e software del sistema di elaborazione
per permettere di memorizzare, elaborare e trasmettere le informazioni.

Esso realizza una duplice funzionalità: costituisce un'interfaccia tra la macchina e l'utente
(supporto per l'utente) e gestisce in modo ottimale le risorse del sistema (supporto per
l'efficienza dell'elaboratore).
Partendo da questa definizione, possiamo dire che un sistema operativo:
• gestisce le risorse, intendendo che pone in atto tecniche e politiche per utilizzare al
meglio le risorse software e hardware di un sistema di elaborazione. Ricordiamo che le
risorse software, sono i dati e i programmi, mentre le risorse hardware sono la memoria
centrale, le memorie di massa, il processore, le periferiche e i canali di comunicazione;
• gestisce la comunicazione, intendendo l'interazione tra l'utente e il sistema di elabora-
zione (oltre all'interazione di quest'ultimo con altri sistemi di elaborazione);
• gestisce le informazioni, intendendo che memorizza, trasmette, elabora nel modo più
efficiente possibile le informazioni presenti in un sistema di elaborazione.

Volendo fare una analogia con il mondo reale, possiamo dire che un sistema operativo gestisce
lo spazio, il tempo e la comunicazione, dove:

I sistemi Operativi 1
Lo spazio È strettamente legato alla Memoria di un computer
Il tempo È strettamente legato alla CPU di un computer
La comunicazione È strettamente legato alle Periferiche di un computer

2) Struttura interna di un sistema operativo


Un sistema operativo è un oggetto abbastanza complesso. Per meglio comprendere le sue
funzionalità interne generalmente si ricorre alla schematizzazione a strati o a cipolla mostrata
in figura 1.
Il sistema operativo è lo strumento che virtualizza le caratteristiche dell'hardware sotto-
stante, offrendo al software applicativo (e anche a quello non
Figura 2 essenziale) una visione di una macchina astratta più potente
e più semplice da utilizzare di quella fisicamente disponibile.

Servendoci della figura 1, che riporta la struttura a strati di


un sistema operativo, possiamo affermare che ogni livello
rende disponibili delle funzionalità utilizzabili dai livelli
superiori. Cosi, la macchina fisica (hardware - livello 0) rende
disponibili funzionalità per il livello 1 (sistema operativo), il livello 1 rende disponibili
funzionalità per i livelli superiori, e così via. L'insieme del livello O e del livello 1 vengono
spesso visti come un unico livello denominato "macchina astratta".

Il diagramma a cipolla di figura 1 può essere ulteriormente dettagliato cosi come riportato
nella figura 3 dove possiamo notare che il livello 1 corrispondente al sistema operativo è stato
scomposto in ulteriori quattro livelli.

Figura 3

Ogni strato può essere visto come un modulo software, ossia un insieme di programmi che sono
eseguiti sfruttando quanto è messo a disposizione dallo strato sottostante.

I sistemi Operativi 2
In altri termini, uno strato mette a disposizione un insieme di funzionalità, dette primitive, che
possono essere invocate dai programmi dei livelli superiori.
Prendiamo, ad esempio, lo strato relativo alla gestione della memoria. I programmi presenti in
questo livello possono essere invocati da programmi presenti allo strato superiore, relativo alla
gestione dell'input/output, e a loro volta effettuano delle chiamate alle primitive messe a
disposizione dallo strato inferiore: il nucleo.
Si dice anche che ogni strato è una macchina virtuale per gli strati superiori, nel senso che, a
qualsiasi livello ci si collochi, gli strati sottostanti vengono visti come oggetto unico, come se
fosse una macchina fisica (in realtà è una macchina virtuale), che fornisce le primitive (ovvero
delle funzioni) attraverso le quali è possibile interagire con esso, che opera su particolari tipi di
oggetti e accetta specifici comandi.

Fig. 4
di una

Nel nostro esempio, lo strato della gestione della memoria interagisce con la macchina virtuale
formata dagli strati sottostanti, cioè con la macchina virtuale del nucleo.

“Una macchina virtuale è quindi un oggetto costituito da una macchina fisica, in grado di
eseguire operazioni fisiche vere e proprie, e da uno strato software che fornisce delle
primitive a chi vuole utilizzare tale oggetto.”

3) L'evoluzione dei sistemi operativi

L’evoluzione dei sistemi operativi ha sempre proceduto di pari passo con l'evoluzione del-
l'hardware.

3.1 I primi passi


Il primo passo nell'evoluzione dei sistemi operativi coincide con lo sviluppo delle prime
macchine di calcolo. Tali rudimentali macchine venivano gestite direttamente da chi le aveva
progettate, con interventi manuali diretti a livello hardware. Possiamo affermare che il primo
"sistema operativo" è stato un uomo seduto davanti a una serie di interruttori, con l'obiettivo
di accedere alle risorse e di gestirle. L'apporto fisico dell'essere umano era quindi
fondamentale, poiché interveniva direttamente a livello hardware.
Un secondo passo venne compiuto nei primi anni Cinquanta, quando i computer erano ancora a
valvole (ricordiamo l'ENIAC, uno dei primi computer, che era costituito da 18000 valvole).
All'epoca i sistemi operativi consistevano in un primitivo insieme di istruzioni, scritte
direttamente in linguaggio macchina, con cui il computer stesso poteva essere programmato e
al quale poteva accedere solo un numero ristretto di persone (quelle che lo avevano
progettato e realizzato). Più che di sistema operativo si parlava di sistema programmature –
operatore (Fig. 5).

I sistemi Operativi 3
Per questa seconda fase possiamo utilizzare lo
slogan pochi controllano molti. Poche persone
autorizzate erano infatti in grado di controllare e
gestire tutte le informazioni da elaborare. Erano
anni in cui nascevano preoccupazioni di natura
sociologica e timori di perdita di democrazia.

Un terzo passo dell'evoluzione si ebbe a metà degli anni Cinquanta, con l'avvento dei primi
linguaggi di programmazione. Si cominciò a estendere l'utilizzo del computer anche ad altre
persone, quali i docenti e gli studenti universitari, che dovevano testare i programmi scritti
con nuovi linguaggi di programmazione come il FORTRAN (1957). Per ridurre i tempi di attesa
degli utenti e per evitare che qualcuno monopolizzasse la CPU, si procedette a una politica di
utilizzo del computer che viene definita organizzazione "a lotti" e si parlò di sistemi di tipo
batch.
3.2 I sistemi batch
Nell'organizzazione batch, l'utente non interagiva con il computer durante l'esecuzione del
programma. Il programma veniva scritto perforando un opportuno numero di schede di
cartoncino (tramite un apposito perforatore). Per ogni istruzione del programma veniva
perforata una scheda.

Andavano aggiunte, poi, le schede contenenti i dati da


elaborare, il nome del programma e l'identificativo
dell'utente (oltre ad alcune altre schede di controllo).
Il pacco di schede, detto job (lavoro), veniva
consegnato all'operatore de! centro di elaborazione
dati, il quale provvedeva ad accodarlo ad altri job, in
attesa che arrivasse il suo turno per l'elaborazione.
Quando il job veniva eseguito, i risultati erano
riportati su opportuni tabulati, corredati da eventuali messaggi diagnostici che venivano
consegnati dall'operatore ai rispettivi utenti.
Immaginiamoci cosa accadeva quando veniva commesso un semplice errore di
compilazione. Occorreva rifare le schede perforate, riconsegnarle all'operatore
e aspettare il proprio turno di elaborazione (e visionare nuovamente i risultati).
Il primitivo sistema operativo dell'organizzazione batch consisteva in un
programma principale (memorizzato su memorie ROM) chiamato batch monitor, la
cui funzione era quella di far avanzare i job leggendo ciclicamente schede
perforate per far eseguire le istruzioni e far stampare i risultati.
In questo modo la CPU era sempre in esecuzione di un lavoro di un utente (job), ma
se qualche job richiedeva operazioni di input/output, la CPU rimaneva in attesa
che tali operazioni, lentissime rispetto alla velocità di esecuzione della CPU, si
concludessero. Tale situazione era chiamata attesa attiva da parte della CPU.
Attiva, in quanto non era operativa, ma aspettava il concludersi dell'operazione di
I/O.
Le operazioni di I/O causavano allora un rallentamento dell'attività elaborativa in
generale, rallentamento che prende il nome di collo di bottiglia per l'I/O o I/O
bottleneck.

I sistemi Operativi 4
Nella figura 7 sono rappresentati due job eseguiti uno dopo l'altro con i rispettivi
temi per le operazioni di I/O. Fig. 7
di una

La risorsa CPU è però una risorsa privilegiata e un buon sistema operativo deve
gestirla al meglio.
Si pensò, dunque, di affiancare a essa processori specifici per la gestione
dell'input, detti appunto processori di I/O, ai quali la CPU avrebbe potuto
trasferire il controllo per potersi dedicare all'attività elaborativa vera e propria
del job successivo (Fig.8).
Questo voleva anche dire non elaborare più un solo job a I la volta;era finalmente
possibile avere più programmi contemporaneamente presenti in memoria. Si passò,
così, dai sistemi in monoprogrammazione ai sistemi in multiprogrammazione.

3.3 La multiprogrammazione e il time sharing


Siamo intorno agli anni 70. i primi sistemi multi programmati furono dell’IBM e
della Digital.
Fig. 8
di una

In questa fase dello sviluppo dell'hardware e del software, la principale


problematica da risolvere per un sistema operativo era quella di ripartire e
condividere le risorse.
In questo modo è possibile iniziare l'esecuzione di uno dei programmi e, nel
momento in cui questo richiede l'intervento di un dispositivo di input/output e si
pone in attesa che il dispositivo termini l'operazione prima di poter continuare, è
possibile dedicare la CPU a un altro dei programmi presenti in memoria evitando
cosi che questa resti inattiva. In questo modo, tutti i programmi vengono fatti
evolvere "contemporaneamente", anche se, in realtà, in ogni istante solo uno di
essi è in esecuzione.

Supponiamo di avere la seguente situazione riguardo ai tempi per le operazioni di


I/O e per le operazioni di CPU.
I sistemi Operativi 5
Come si evince dalla figura 9, il tempo totale di esecuzione è inferiore rispetto al
tempo necessario per eseguire un solo job alla volta (Fig. 7).
In un ambiente in multiprogrammazione i programmi in esecuzione possono essere
suddivisi in I/O intensive o CPU intensive, ovvero programmi ricchi di richieste di
I/O e programmi poveri di richieste di I/O.
Esisteva ancora la possibilità, però, che un programma in esecuzione molto lungo
(anche se CPU intensive) monopolizzasse l'uso della CPU a svantaggio degli altri
programmi. Si voleva, invece, che l'utente di un programma in esecuzione avesse la
sensazione che la CPU fosse a sua esclusiva disposizione. Nacque cosi la politica di
gestione della CPU, nota come time-sharing (condivisione di tempo). Essa
prevedeva di assegnare la CPU a turno ai vari programmi utente per un limitato
periodo di tempo, chiamato time-slice o quanto.
Ciclicamente la CPU veniva assegnata a uno dei programmi in esecuzione che aveva
terminato il time-slice, in modo che fosse possibile portare a termine
l'elaborazione. Si realizzava in questo modo un parallelismo apparente o virtuale,
nel senso che ogni utente aveva la sensazione che la CPU gli venisse
completamente dedicata.
Nella figura 10 sono rappresentati i due job della figura 9 ma in time-sharing.

Un sistema operativo multiprogrammato potrebbe anche essere monoutente, nel


senso che un solo utente potrebbe lanciare in esecuzione più programmi
contemporaneamente. Di norma, però, il meccanismo della multiprogrammazione è
alla base dei sistemi operativi multiutente, cioè sistemi operativi in cui più
programmi di utenti diversi sono in avanzamento nello stesso istante.

Dal primitivo sistema batch monitor si passava a sistemi operativi


multiprogrammati e multiutente, che prevedevano l'interazione degli utenti
tramite terminale e tastiera e non più tramite schede perforate.

I sistemi Operativi 6
3.4 Dai sistemi operativi proprietari ai sistemi operativi portabiti
Agli inizi degli anni Ottanta, con l'avvento dei personal computer, i sistemi
operativi subirono un'altra decisa evoluzione. L'elaborazione venne infatti
spostata dai grossi centri di calcolo alle case di ogni utente.
Volendo utilizzare uno slogan per questa fase possiamo affermare che ognuno
controlla sé stesso.
Il sistema operativo doveva risolvere, a questo punto, problematiche del tipo
interazione semplice con l'utente.
A quest'epoca risale il famoso sistema operativo MS-DOS di Microsoft, con il
quale era possibile avere un'interazione semplice, anche se ancora in modalità
testuale. L'innovazione più eclatante di questo periodo fu la separazione tra
macchina hardware e sistema operativo. Si passò dai grossi sistemi operativi
detti proprietari (cioè dedicati solo a uno specifico hardware) a sistemi operativi
snelli e portabili o aperti (cioè eseguibili) su hardware diversi.
MS-DOS fu il primo sistema operativo a funzionare su macchine diverse; ciò era
reso possibile dal fatto che i produttori di computer si divisero tra produttori di
hardware (INTEL, IBM e allo sviluppo dei microprocessori) e produttori di
software (Microsoft). Si intuì che l'utente non doveva necessariamente essere un
tecnico. Apparvero, in questo periodo, i primi supporti removibili di memoria di
massa: i floppy disk.
Un'altra piccola rivoluzione avvenne con il sistema operativo di Apple, il primo
sistema operativo di successo per personal computer ad avere un'interfaccia
utente grafica. Fu questo un passo importante nell'evoluzione dei sistemi
operativi. L'interazione tramite interfaccia grafica, intuitiva e immediata,
contribuì in modo decisivo ad avvicinare al computer anche l'utente non esperto di
informatica.

3.5 Internet, sistemi operativi di rete e in real time


Verso la metà degli anni Ottanta e gli inizi degli anni Novanta, la rapidissima
diffusione di Internet causò un'altra notevole evoluzione verso le reti di
computer e pertanto anche i sistemi operativi subirono un'evoluzione che possiamo
riassumere nello slogan tutti controllano tutti.
Questa frase sottolinea il fatto che l'elaborazione si andava distribuendo presso
piccoli computer collegati tra loro per formare una rete di scambio di dati e
condivisione di risorse. Le problematiche che dovevano affrontare a quel punto i
sistemi operativi erano legate alla condivisione delle risorse e alla necessità di
garantire riservatezza, autenticità e sicurezza in rete.
Di pari passo, inoltre, si andavano affermando l'approccio a oggetti e, in
particolare, i formati per gli oggetti multimediali. La memorizzazione, la trasmis-
sione e l'elaborazione delle informazioni non riguardavano più solo dati testuali,
ma anche dati multimediali (come suoni, video ecc.).
Per adeguarsi alla complessità dei sistemi operativi e della loro interfaccia utente
grafica è ora l'hardware che deve stare al passo e presentare microprocessori
sempre più potenti e sofisticati. L'evoluzione dell'hardware sfociò anche in
sistemi multiprocessore in grado di permettere un parallelismo reale tra i
processi; in questi sistemi esistono, cioè, più CPU in grado di far avanzare
contemporaneamente più programmi utente.

I sistemi Operativi 7
Le reti di computer hanno dato il via a un'importante classe di sistemi operativi: i
sistemi operativi di rete (Networking Operating System o NOS ). Un NOS si
basa su una rete di computer che mette in collegamento più computer. Su tale rete, le
risorse delle singole macchine vengono condivise tra gli utenti. Quando la condivisione di
risorse hardware e software è resa trasparente all'utente, si parla di sistemi operativi
distribuiti. Più in particolare, nei sistemi operativi di rete ogni nodo dispone di un proprio
sistema operativo (spesso anche diversi fra loro) che è abilitato a cooperare con gli altri. Il
sistema operativo distribuito, invece, prevede che lo stesso sistema sia caricato su tutti i
nodi della rete e funzioni in modo che l'utente collegato a uno qualsiasi dei nodi abbia la
sensazione della presenza di un sistema unico nascondendo il fatto che, al contrario, il
sistema è distribuito. Riassumiamo l'evoluzione dei sistemi operativi nella seguente tabella.

Una particolare categoria di sistemi operativi è quella nota come sistemi in tempo reale o
in real time in cui rientrano i sistemi operativi destinati ad applicazioni "critiche" nel
senso che il tempo di risposta deve necessariamente avvenire in tempi prestabiliti pena il
verificarsi di catastrofi (ex: i SO per il controllo di centrali nucleari o per il controllo di
apparecchiature aeronautiche).

I sistemi Operativi 8

Potrebbero piacerti anche