Sei sulla pagina 1di 18

Sistemi Operativi

1. Introduzione

1.1 Che cos’è un Sistema Operativo?


Un sistema Operativo rappresenta un insieme di programmi denominati “software” che permette
l’utilizzo e la gestione di vari componenti costituenti un calcolatore e denominati “hardware”.
Un calcolatore può essere definito come un Sistema di Calcolo e nelle sue elaborazioni prevede la
presenza di quattro elementi fondamentali:

1. Dispositivi Fisici
Sono composti da un Unità Centrale chiamata CPU (Central Processing Unit), dalla memoria e dai
dispositivi Input/Output (dispositivi di immissione ed emissione dei dati).
2. Sistema Operativo
3. Programmi Applicativi
4. Utenti

Tramite l’utilizzo dei programmi applicativi il sistema operativo controlla e coordina l’utilizzo efficiente
dei dispositivi fisici definendo un ambiente nel quale i programmi applicativi possono collaborare e
lavorare in modo utile.

1.2 Definizioni di Sistema Operativo


Un sistema operativo di un Personal Computer (PC) viene progettato per rendere facile l’utilizzo delle
risorse di calcolo e per gestire le stesse risorse in modo da aumentare la produttività e migliorare le
prestazioni. Un utente non saprà mai come sono utilizzate e condivise le risorse di un sistema di calcolo
da un sistema operativo ma lo stesso può essere considerato anche come un programma direttamente
collegato agli elementi fisici del calcolatore con il compito di gestire ed assegnare le risorse ai
dispositivi fisici. Per questo un sistema operativo può essere definito come “Assegnatore di Risorse”
perché esso è in grado di utilizzare e gestire le risorse di calcolo di un Sistema di Calcolo per risolvere un
problema nel modo più efficiente possibile.
Il Sistema Operativo ha anche l’ulteriore compito di gestire i Programmi Applicativi installati dagli
utenti in modo che gli stessi vadano in esecuzione senza la presenza di errori o conflitti. Per questo
motivo può essere definito anche come “Sistema di Controllo”.

Lisandro Francesco Pagina 1 18/04/2011


Sistemi Operativi

Un Sistema Operativo rappresenta una soluzione ad un utilizzo ragionevole ed efficiente di un Sistema


di Calcolo. Un Sistema Operativo rappresenta un insieme di programmi che svolgono ognuno la
propria funzione e sono utili ad altri programmi applicativi perché rendono basilare l’accesso ad una
serie di funzioni comuni (es: controllo dei dispositivi I/O).
In un Sistema Operativo l’iterazione tra i vari programmi è comune e coordinata e solitamente viene
considerata come l’esecuzione di un singolo programma generalmente chiamato kernel (nucleo).

1.3 Funzionamento di un Sistema di Calcolo


Un moderno computer è composto da:
 Una memoria
 Un canale di comunicazione chiamato bus che è collegato alla memoria
 Una CPU e una serie di controllori di dispositivo connessi al canale di comunicazione (bus)
 Un dispositivo fisico collegato ad ogni controllore di dispositivo.

La CPU e i controllori di dispositivo accedono in modo concorrente alla memoria tramite cicli d’accesso
sincronizzati tramite la presenza di un controllore di memoria.

Mouse Stampante Tastiera Monitor

Controllore di Controllore Scheda


CPU dischi USB Grafica

Controllore di Memoria

Memoria

Lisandro Francesco Pagina 2 18/04/2011


Sistemi Operativi

1.4 Avvio di un Sistema di Calcolo


Quando un computer viene acceso o riavviato viene avviato uno specifico programma denominato
bootstrap program che ha il compito di :

 Inizializzare i diversi componenti del sistema, dai registri della CPU ai controllori dei diversi
dispositivi, fino al contenuto della Memoria centrale.
 Caricare nella memoria il Sistema Operativo
 Avviare l’esecuzione del Sistema Operativo il quale avvia l’esecuzione del primo processo di
elaborazione (es: init) e si mette in attesa di eventi.

Il bootstrap program solitamente in genere è contenuto in un tipo di memoria denominato firmware


(es: ROM – Read Only Memory).

1.5 Segnalazione degli eventi in un Sistema di Calcolo


La CPU ha una sequenza di esecuzione di processi. Quando avviene un evento questa sequenza di
esecuzione viene interrotta. L’interruzione può avvenire perché causata da:

 Un dispositivo fisico
In questo caso il segnale inviato alla CPU viene chiamato segnale d’interruzione o più brevemente
interrupt. Questo segnale viene inviato tramite il bus (canale di comunicazione) dal controllore del
dispositivo fisico o da altri elementi del sistema.

 Un programma
In questo caso il segnale inviato alla CPU viene chiamato segnale d’eccezione o più brevemente
exception (o trap). Questo segnale viene inviato da un programma in esecuzione quando si
verifica un evento eccezionale che può essere:
- un errore
- una specifica istruzione, detta chiamata di sistema (system call), definita da un programma di
un utente che deve eseguire una funzione del sistema operativo

Lisandro Francesco Pagina 3 18/04/2011


Sistemi Operativi

Una volta ricevuto il segnale di interruzione la CPU effettua le seguenti operazioni:


1. Interrompe l’elaborazione corrente. L’indirizzo di esecuzione viene salvato in modo da poter essere
ripreso una volta terminata l’interruzione.
2. Trasferisce l’esecuzione e il controllo ad una locazione fissa della memoria che contiene
l’indirizzo iniziale della procedura di servizio per quel determinato segnale d’interruzione. Un
segnale d’interruzione causa, perciò il trasferimento del controllo ad una specifica procedura di
servizio associata all’evento. La gestione di un interruzione deve essere molto rapida e perciò,
considerando che il numero possibile di segnali d’interruzione è predefinito, si utilizza una tabella di
puntatori collegati alle specifiche procedure. La tabella di puntatori contiene una sequenza di
indirizzi delle procedure chiamata vettore delle interruzioni, dove ogni indirizzo è correlato ad un
indice che lo identifica.
3. Una volta completata l’esecuzione della procedura richiesta, riprende l’elaborazione
precedentemente interrotta. L’indirizzo di ritorno precedentemente salvato viene caricato nel
contatore di programma (program counter) che rappresenta l’indirizzo della prossima istruzione
da eseguire e consente la ripresa della computazione interrotta come se nulla fosse accaduto.

1.6 Struttura della Memoria di un Sistema di Calcolo


La memoria è necessaria per contenere i programmi in esecuzione. La memoria centrale viene detta
Memoria ad Accesso Diretto (RAM – Random Access Memory) e rappresenta l’unica area di memoria
di grandi dimensioni accessibile dalla CPU.
La RAM è realizzata con una tecnologia basata su semiconduttori che prevede una memoria dinamica
ad accesso diretto (Dynamic Random Access Memory – DRAM).
La RAM è strutturata come un vettore di parole di memoria dove ad ogni parola è associato un
indirizzo. Le operazioni possibili tra RAM e CPU sono le seguenti:

 load : Quando la RAM deve, in modo esplicito, trasferire il contenuto di una parola in uno dei
registri della CPU.
 Store: Quando la CPU deve, in modo esplicito, copiare il contenuto di uno dei registri nella
locazione di memoria specializzata della RAM.
 Quando la CPU deve eseguire un istruzione, in modo implicito, la preleva dalla RAM (fetch) in modo
automatico e la trasferisce nel registro di istruzione.

Lisandro Francesco Pagina 4 18/04/2011


Sistemi Operativi

In linea teorica, si vorrebbe che sia i programmi che i dati trattati potessero risiedere in modo
permanente nella RAM ma questo non è possibile perché la capacità della RAM non è sufficiente per
contenere in modo permanente tutti i dati e i programmi richiesti e perché la RAM è un
dispositivo di memorizzazione volatile, sicché perde il proprio contenuto quando si spegne il
sistema di calcolo.
Per queste ragioni per conservare le informazioni in modo permanente vengono utilizzate memorie
secondarie. Il dispositivo comunemente impiegato per questo scopo è l’unità a disco magnetico che
rappresenta un sistema di memorizzazione non volatile.
Anche un disco RAM può essere progettato per essere non volatile ma durante il solito funzionamento
il disco RAM memorizza i dati in un capiente vettore DRAM (che è volatile) ma potrebbe contenere in
posizione nascosta un disco rigido magnetico e un alimentatore per batteria.

VOLATILI Questi dispositivi di


memorizzazione
sono più veloci ma
REGISTRI
anche più costosi.

CACHE

MEMORIA CENTRALE

Disco RAM
Questi dispositivi di
memorizzazione
Dischi MAGNETICI sono meno veloci
ma anche meno
costosi.
Dischi OTTICI

Nastri MAGNETICI

NON VOLATILI

Lisandro Francesco Pagina 5 18/04/2011


Sistemi Operativi

1.7 Struttura dei dispositivi I/O


Un Sistema di Calcolo di uso generale è composto da una CPU e da un insieme di controllori di
dispositivi I/O entrambi connessi mediante un canale di comunicazione chiamato bus.
Ogni controllore ha il compito di occuparsi di una particolare tipologia di dispositivo (quindi uno
o più dispositivi ad esso connessi).
Ogni controllore di dispositivo possiede:

 Una memoria interna detta memoria di transito (buffer)


 Un insieme di registri specializzati

Il controllore si occupa di trasferire i dati dal dispositivo alla memoria di transito e viceversa. La
comunicazione con il sistema operativo è possibile grazie alla presenza dei driver del dispositivo che
fungono da interfaccia con il resto del sistema.
Un’operazione comune si svolge nel seguente modo:

1. Il driver del dispositivo carica i registri interessati situati all’interno del controllore
2. Il controllore esamina il contenuto di questi registri per individuare l’azione da intraprendere
3. Il controllore trasferisce i dati dal dispositivo I/O al proprio buffer locale
4. Il controllore informa il driver di aver terminato l’operazione segnalando un evento (interrupt)
5. Il driver trasferisce il controllo al sistema operativo restituendo i dati o un puntatore ad essi se
l’operazione è di lettura altrimenti restituisce informazioni sullo stato.

Questa tipologia di approccio è possibile solo in caso di trasferimento di piccole quantità di dati, ma in
caso di trasferimenti massicci, per evitare un sovraccarico, è utile usare una tecnica di Accesso Diretto
alla Memoria (DMA).
Il DMA non prevede l’intervento della CPU per il trasferimento dei dati ma prevede il trasferimento di
blocchi di dati individuati con dei puntatori. Le interruzioni avvengono solo per ogni blocco e non
per ogni byte e la CPU rimane libera per altri compiti.

Lisandro Francesco Pagina 6 18/04/2011


Sistemi Operativi

1.8 Sistemi Monoprocessore


Un sistema monoprocessore prevede la presenza di una sola CPU che esegue un insieme di
operazioni e istruzioni di natura generale.
Quasi tutti i sistemi prevedono la presenza di processori specializzati deputati a compiti particolari
(es: controllori di dischi, tastiera e video) che sono principalmente guidati dal sistema operativo che
invia loro informazioni sul compito da espletare successivamente.
Se è presente una sola CPU allora il sistema viene detto Monoprocessore.

1.9 Sistemi Multiprocessore


I Sistemi Multiprocessore sono anche chiamati Sistemi Paralleli o Sistemi Strettamente Connessi. Essi
prevedono tre vantaggi principali:

 Aumento della produttività


Poiché ci sono più unità di elaborazione è possibile svolgere un lavoro maggiore in minor tempo.

 Economia di scala
Consentono un risparmio generale rispetto a sistemi dotati di una singola unità di elaborazione.

 Incremento dell’affidabilità
Le funzioni sono distribuite quindi un guasto non bloccherebbe l’intero sistema ma semplicemente
la parte adibita al compito non più esplicabile. I Sistemi Multiprocessore continuano ad offrire i
servizi dei dispositivi ancora in funzione (degradazione controllata) e molto spesso risultano
tolleranti ai guasti continuando la loro attività.

Ci sono due tipologie di sistemi multiprocessore che hanno due tipologie di elaborazione differente:

 Multielaborazione Asimmetrica
Ogni unità di elaborazione ha un compito specifico. C’è un unità di elaborazione principale che
controlla il sistema e le altre unità di elaborazione.

Lisandro Francesco Pagina 7 18/04/2011


Sistemi Operativi

 Multielaborazione Simmetrica
Ogni processore è abilitato al compimento di tutte le operazioni del sistema. Ogni processore è
uguale ad un altro (Solaris). Grazie a questo modello ogni processo è eseguibile
contemporaneamente a uno o altri processi senza causare un calo delle prestazioni.

È inoltre da evidenziare una delle ultime innovazioni chiamate server blade che contengono nello
stesso contenitore fisico le schede del processore, dell’I/O e della rete. In questa tipologia di sistema
ogni scheda madre (ospitante una CPU) avvia ed esegue in modo indipendente il proprio sistema
operativo che può essere anche multiprocessore.

1.10 Cluster di elaboratori


I Sistemi Cluster, come i sistemi multiprocessore, sono basati sull’uso congiunto di una o più unità di
elaborazione, ma differenziano dagli stessi perché sono costituiti da due o più calcolatori completi
collegati tra di loro e che condividono la memoria di massa e sono connessi per mezzo di una rete
locale LAN.
I Cluster di elaboratori si possono dividere anch’essi in tipologie di strutture:

 Asimmetriche
In questo caso un calcolatore rimane in uno stato di attesa attiva mentre un calcolatore esegue le
applicazioni. Il calcolatore che rimane in attesa attiva non fa altro che controllare l’altro calcolatore
che sta eseguendo le applicazioni. Se l’ultimo presenta problemi allora il calcolatore che controlla
diventano server attivo.

 Simmetriche
In questo caso due o più calcolatori eseguono le applicazioni e allo stesso tempo si controllano
l’uno con l’altro. Questo porta ad una maggiore efficienza ma ci vogliono più applicazioni da
eseguire.

Lisandro Francesco Pagina 8 18/04/2011


Sistemi Operativi

1.11 Struttura di un Sistema Operativo


Un Sistema Operativo rappresenta l’ambiente in cui vengono eseguiti i programmi. I Sistemi Operativi
odierni hanno molte differenze ma gli aspetti comuni sono molteplici.
Una delle caratteristiche fondamentali dei sistemi operativi è la multiprogrammazione.

MULTIPROGRAMMAZIONE
La multiprogrammazione è quel meccanismo che consente di tenere costantemente occupata la
CPU e i dispositivi I/O aumentando così la percentuale di utilizzo della stessa.
Il funzionamento della multiprogrammazione prevede che:

 Nella memoria principale ci siano un numero di lavori (chiamati job) che devono essere eseguiti;
 Il Sistema Operativo sceglie uno di questi lavori contenuti nella memoria ed inizia l’esecuzione;
 Il Sistema Operativo riceve una segnalazione di un evento;
 Il Sistema Operativo passa ad un altro lavoro e lo esegue;
 Una volta terminata l’attesa del lavoro il Sistema Operativo ne riprende l’esecuzione.

Memoria Centrale
0 Mb --
-- Job 1
--
-- Job 2
-- Job 3
--
-- Job 4
--
--
--
--
Job 5
--
Job 6
512 Mb --

Con la multiprogrammazione finché ci sono lavori da svolgere la CPU non rimane mai inattiva. Nella
multiprogrammazione il numero di processi, istante per istante, effettivamente in esecuzione non può
eccedere il numero di processori disponibili. La multiprogrammazione è utilissima per la gestione delle
risorse del sistema ma non consente un’interazione con l’utente.

Lisandro Francesco Pagina 9 18/04/2011


Sistemi Operativi

TIMESHARING
Per questo motivo la multiprogrammazione si è estesa nel timesharing o multitasking che consente
agli utenti di interagire con il proprio processo come se fosse l’unico presente ed in esecuzione sul
sistema. Questa illusione viene ottenuta eseguendo frequentemente la commutazione da un processo
ad un altro. Infatti il timesharing viene anche definito partizione del tempo di elaborazione perché la
CPU esegue più lavori commutando le loro esecuzioni con una frequenza tale da permettere a
ciascun utente l’interazione con il proprio programma durante la sua esecuzione.
La CPU dedica istanti di tempo ad ogni lavoro e al termine del lasso di tempo dedicato ad un lavoro si
dedica all’esecuzione per un brevissimo lasso di tempo di un altro lavoro. Inoltre il Sistema Operativo
ad ogni input dell’utente deve rispondere con output in tempi velocissimi.

Dato che la memoria centrale non ha una capienza tale da contenere tutti i lavori esiste una partizione
del disco magnetico chiamata job pool che contiene tutti i processi (job) che devono essere caricati
nella memoria centrale.
Per selezionare quali tra questi processi deve andare in esecuzione (soprattutto nel caso in cui la
capienza della memoria centrale è quasi piena) viene eseguita una job sheduling (pianificazione dei
lavori).
Una volta caricato in memoria i processi selezionati essi sono pronti per l’esecuzione. A questo il
sistema deve decidere quali tra questi devono essere eseguiti e per farlo deve pianificare la CPU tramite
un’operazione denominata sheduling della CPU.
Quando un sistema è basato su Timesharing il sistema deve garantire tempi di risposta accettabili e per
farlo utilizza una tecnica chiamata swapping (avvicendamento) che consente di scambiare
l’esecuzione tra i processi presenti in memoria centrale e quelli presenti sul disco.
Lo stesso risultato è ottenibile grazie alla memoria virtuale che consente di eseguire i lavori anche se
non sono caricati interamente in memoria così da non limitare programmi con dimensioni maggiori ad
una memoria fisica minore.
Oltre questo un Sistema O perativo basato su Timesharing deve:

 Fornire e gestire un file system che deve essere contenuto in un insieme di dischi
 Proteggere le risorse ad utenti non autorizzati
 Fornire la comunicazione e la sincronizzazione tra i processi

Lisandro Francesco Pagina 10 18/04/2011


Sistemi Operativi

1.12 Attività del Sistema Operativo


Quando l’utente, tramite i dispositivi I/O, non richiede alcun servizio, il Sistema Operativo rimane inerte
e in attesa di richieste da parte dell’utente.
Per accorgersi della presenza di una richiesta da parte dell’utente il sistema operativo rimane in attesa
di eccezioni (exception o trap) comunicate attraverso segnali e riguardanti interruzioni generate da un
programma che richiede una sua erogazione o che manifesta la presenza al suo interno di un errore.
Nel caso in cui non riceva eccezioni il Sistema Operativo rimarrebbe inerte e “non servirebbe a nulla”.
Quando riceve una segnalazione di interruzione, il Sistema Operativo ne riconosce la presenza perché
ad ogni segnalazione sono associati segmenti di codice che determinano anche “cosa deve fare” il
Sistema Operativo. Grazie ad apposite routine dedicate alla gestione delle interruzioni il Sistema
Operativo sa dare una risposta alla richiesta di servizi.
Giustamente, ogni programma in esecuzione deve anche essere stabile e se non lo è il Sistema
Operativo deve colmare questa sua instabilità controllandola e garantendo la corretta esecuzione degli
altri programmi.

1.13 Duplice modalità di Funzionamento per il corretto funzionamento


Negli attuali Sistemi Operativi è possibile distinguere due possibili modalità di funzionamento dello
stesso che l’architettura della CPU definisce tramite il settaggio di un bit denominato bit di modalità:

 Modalità Utente
In questo tipo di modalità viene eseguito il codice definito dall’utente. Il bit di modalità assume
valore “1” quando si sta eseguendo il sistema in questa modalità. In questo caso il bit stabilisce che
l’istruzione si sta eseguendo per conto dell’utente (applicazioni dell’utente).

 Modalità di Sistema (Modalità Kernel, Modalità Supervisore…)


In questo tipo di modalità viene eseguito il codice predefinito del sistema operativo. Il bit di
modalità assume valore “0” quando si sta eseguendo il sistema in questa modalità. In questo caso
il bit stabilisce che l’istruzione si sta eseguendo per conto del Sistema Operativo. La modalità di
Sistema viene stabilita automaticamente quando, in Modalità Utente, un applicazione dell’utente
rivolge una richiesta di servizio al Sistema Operativo tramite una System Call. Il Sistema per
soddisfare la richiesta deve passare dalla Modalità Utente alla Modalità di Sistema. In linea generale

Lisandro Francesco Pagina 11 18/04/2011


Sistemi Operativi

si passa dalla Modalità Utente (bit = 1) alla Modalità di Sistema (bit = 0) quando si verifica
un’interruzione o un’eccezione.

La doppia modalità (dual mode) è necessaria per garantire protezione al sistema e per evitare istruzioni
di macchina che possono causare danni allo stato del sistema.
Il livello di protezione è possibile ottenerlo stabilendo quali sono le istruzioni privilegiate che il
Sistema Operativo deve gestire solo in Modalità di Sistema. Nel caso in cui queste istruzioni vengano
richiamate in Modalità Utente il Sistema Operativo solleva un eccezione tranne se le chiamate sono
System Call (Chiamate di Sistema). Quindi un’applicazione utente può richiedere l’esecuzione di
istruzioni privilegiate solo ed esclusivamente tramite le System Call.

FUNZIONAMENTO DELLE SYSTEM CALL


Le Chiamate di Sistema non sono altro che eccezioni che richiamano un indirizzo specifico nel
vettore delle interruzioni dove viene eseguita (in base alle coordinate del vettore) un’istruzione trap
generica o in alcuni casi un’istruzione apposita per le chiamate di sistema denominata syscall. Il vettore
delle interruzioni passa il controllo ad una apposita procedura di servizio gestita dal sistema operativo e
cambia il bit di modalità nella Modalità di Sistema.
Il sistema esamina l’istruzione che ha causato l’eccezione, ne stabilisce la natura e tramite un
determinato parametro definisce il servizio che l’applicazione utente richiede. Il Sistema soddisfa la
richiesta e restituisce il controllo dell’esecuzione all’istruzione immediatamente successiva alla
chiamata di sistema.

IMPORTANZA DELLE DUE MODALITA’ DI FUNZIONAMENTO


Senza le due modalità di funzionamento il sistema va incontro a serie limitazioni (un applicazione
che potrebbe cancellare i contenuti, il sistema operativo; un’applicazione che potrebbe andare in loop
compromettendo l’esecuzione delle altre applicazioni…) che non garantiscono la protezione del
sistema.
La violazione delle modalità di funzionamento viene rilevata dall’hardware e gestita dal Sistema
Operativo. Se un programma causa un errore (esecuzione di una istruzione illegale; accesso non
autorizzato ad una zona di memoria) l’hardware solleva un eccezione che arriva al vettore delle
interruzioni e viene gestita dal Sistema Operativo. La stessa cosa accade quando un programma esegue

Lisandro Francesco Pagina 12 18/04/2011


Sistemi Operativi

un’istruzione scorretta o non consentita; Inoltre in questo caso il S.O. provvede ad abortire l’esecuzione
del programma.

1.14 Gestione di un Timer per la corretta esecuzione dei programmi


Per impedire che un programma entri in un ciclo infinito o richieda servizi del sistema senza
restituire il controllo al Sistema Operativo viene utilizzato un timer che ha il compito di inviare
segnali d’interruzione alla CPU con una frequenza d’invio che può essere variabile o fissa.

TIMER VARIABILE
Esso contiene un generatore di impulsi e un contatore. Il contatore assume un determinato valore,
assegnatogli dal Sistema Operativo. Questo valore viene decrementato ogni qual volta il generatore
invia un impulso. Quando il contatore assume un valore maggiore di 0, il Sistema Operativo decide di
concedere altro tempo al programma altrimenti se il contatore assume un valore pari a 0 viene
generata un’interruzione che il Sistema Operativo gestirà come errore fatale chiudendo il programma
che l’ha generata.

1.15 Gestione dei Processi


Quando un qualsiasi programma esegue una sua operazione lo fa grazie al fatto che il Sistema
Operativo esegue le istruzioni necessarie che costituiscono l’esecuzione di quella operazione.
Si può definire un programma in esecuzione come processo d’elaborazione o semplicemente
processo.
Un programma eseguito su di un Sistema Operativo strutturato in Timesharing (ossia in un ambiente a
partizione di tempo d’elaborazione) o semplicemente l’esecuzione di un servizio del Sistema Operativo
stesso (es: invio dei dati ad una stampante installata) rappresenta un processo. Attenzione: Un
programma è come un file ed è quindi considerato come un entità passiva che può contenere più
processi in esecuzione che rappresentano sequenze di esecuzione separate.
Un processo può essere considerato come un lavoro di elaborazione, definito come job, che per la sua
esecuzione ha necessità di attingere risorse dalla CPU, dalla memoria, dai file e dai dispositivi I/O sia in
fase di inizializzazione che durante l’esecuzione.
Un processo è un entità attiva con un contatore di programma contenente l’istruzione successiva
da eseguire in modo sequenziale fino alla terminazione del processo.

Lisandro Francesco Pagina 13 18/04/2011


Sistemi Operativi

Il Sistema Operativo si occupa di gestire molte attività connesse ai processi. Le principali sono le
seguenti:

 Creazione e Cancellazione dei processi degli Utenti e del Sistema


 Sospensione e Ripristino dei Processi
 Fornitura dei Meccanismi necessari per la corretta Sincronizzazione dei Processi
 Fornitura dei Meccanismi necessari per la corretta Comunicazione tra i Processi
 Fornitura dei Meccanismi necessari per la gestione di situazioni di stallo denominate
DeadLock

1.16 Gestione della Memoria Centrale


Come detto la Memoria Centrale è indispensabile per il corretto funzionamento di un Sistema di
Calcolo. Essa contiene migliaia di parole ognuna delle quali è dotata del proprio indirizzo.

RAPPORTO TRA LA MEMORIA CENTRALE E LA CPU


La Memoria Centrale è accessibile dalla CPU che su di essa ha la facoltà di:
 Leggere le istruzioni durante il ciclo di prelievo delle istruzioni
 Leggere e scrivere i dati durante il ciclo di accesso ai dati.
 Leggere e scrivere i dati provenienti e destinati ai dispositivi I/O tramite il DMA.

La Memoria Centrale è l’unico dispositivo di memorizzazione a cui la CPU può accedere in modo
diretto. I dati presenti in Memorie Secondarie devono prima passare dalla Memoria Centrale per essere
gestiti dalla CPU.
La CPU per eseguire delle istruzioni relative a programmi, queste stesse istruzioni devono essere
presenti nella Memoria Centrale ed ogni programma che deve essere eseguito deve essere associato a
relativi indirizzi. Al termine del programma viene liberato lo spazio relativo alla memoria occupata così
da poter rendere possibile l’esecuzione del programma successivo.

Il compito del Sistema Operativo in tutto ciò è quindi quello di:


 Tenere traccia delle zone di memoria attualmente utilizzate
 Tenere traccia dei processi e dei dati che utilizzano le zone di memoria
 Decidere quali processi e/o dati bisogna caricare in memoria

Lisandro Francesco Pagina 14 18/04/2011


Sistemi Operativi

 Decidere quali processi e/o dati bisogna trasferire altrove


 Assegnare lo spazio di memoria secondo priorità e necessità

1.17 Gestione della Memoria di Massa


Il Sistema Operativo fornisce un’interfaccia logica uniforme per la memorizzazione delle informazioni in
modo che l’utente che utilizza il sistema abbia una maggiore facilità nella manipolazione delle
informazioni. Questa interfaccia viene chiamata file. Ogni file è una raccolta di informazioni correlate
e definite dal loro creatore. Un file può essere un programma, un tipo di dato o qualsiasi forma di
informazione accessibile.
I file sono organizzati in directory che hanno uno scopo di catalogazione. Ogni file è accessibile ed è
possibile controllarne o stabilirne la tipologia e l’utenza di accesso.

Un Sistema Operativo deve poter:


 Creare e cancellare i file
 Creare e cancellare le directory
 Fornire le funzioni fondamentali per manipolare file e directory
 Poter associare dei file a Memorie Secondarie per l’accesso alle stesse
 Creare copie di riserva dei file su dispositivi di memorizzazione non volatili.

I file vengono catalogati in una Memoria Secondaria che è necessaria per predisporre di una capienza
maggiore e di una memorizzazione temporanea. La maggior parte dei moderni sistemi di calcolo
impiega i dischi come principale mezzo di memorizzazione secondaria. Il Sistema è responsabile di una
serie di attività relative a questi dischi che si possono schematizzare nei seguenti tre punti:

 Gestione dello spazio libero


 Assegnazione dello spazio
 Sheduling del disco

Ci sono altre tipologie di memorie che vengono definite Memorie Terziarie (CD, DVD, Supporti di
memorizzazione rimovibili). Il Sistema Operativo ha il compito di gestire anche questi ultimi.

Lisandro Francesco Pagina 15 18/04/2011


Sistemi Operativi

1.18 Cache
Generalmente le informazioni sono mantenute temporaneamente nella Memoria Centrale. Quando
bisogna accedere ad un’informazione si effettua un controllo per verificare se la stessa informazione è
già presente in un dispositivo di memorizzazione denominato cache. Nel caso in cui l’informazione è
presente la si preleva dalla cache è la si adopera, altrimenti la si preleva dalla memoria centrale, la si
copia nella cache (perché si presuppone che questa informazione la si utilizzerà in altre situazioni) e la
successivamente la si adopera .
Anche i registri della CPU possono essere considerati come una cache ad alta velocità per la memoria
centrale. La cache è utile per aumentare notevolmente le prestazioni di un sistema ma questo è
possibile solamente grazie ad una buona progettazione.
Anche la Memoria Centrale può essere considerata come una cache per la Memoria Secondaria perché i
dati contenuti nella Memoria Secondaria devono essere trasferiti nella Memoria Centrale per poter
essere utilizzati e nella Memoria Centrale devono essere contenuti per poter essere copiati nella
Memoria Secondaria.
Si possono distinguere 4 livelli principali in un Sistema che possono essere definiti come cache:

Livello 1 2 3 4

Nome Registri Cache Memoria Disco


della CPU Centrale
Dimensione Tipica <1Kb >16Mb >16Gb >100Gb

Tecnologia Memoria dedicata CMOS SRAM CMOS DRAM Disco Magnetico


con porte multiple
- CMOS
Tempo d’accesso 0,25 – 0,5 0,5 – 25 80 – 250 5.000,000

Gestito da Compilatore Hardware Sistema Operat. Sistema Operat.

Supportato da Cache Memoria Disco CD o Nastro


Centrale

In questo tipo di architettura a livelli, organizzata in modo gerarchico, potrebbe accadere che gli stessi
dati sono mantenuti contemporaneamente in diversi livelli del sistema di memorizzazione. Nel
momento in cui si effettua una modifica in un file questa viene ripercossa gerarchicamente tra tutti i
livelli. La difficoltà sta proprio nel fare in modo che processi concorrenti possano accedere ad
informazioni che risultano sempre aggiornate perché le modifiche sono riflettute in tutti i dispositivi di

Lisandro Francesco Pagina 16 18/04/2011


Sistemi Operativi

memorizzazione (o cache) collegati (Registri, Cache, Memoria Centrale e Dischi). Questa risulta una cosa
semplice ed intuitiva nell’esecuzione di un singolo processo ma meno in sistemi strutturati su
Timesharing. Questa situazione è nota come coerenza della cache e di solito si risolve ad un livello più
basso di quello del sistema operativo ossia nell’architettura del sistema.

1.19 Sistemi di Input/Output


Un’ulteriore scopo del Sistema Operativo è quello di occultare tutte le specifiche relative ai
dispositivi di Input e Output. Solitamente (in UNIX) sono nascoste dal sottosistema I/O che è
composto dalle seguenti parti:

 Un componente che gestisce la gestione della memoria. Esso gestisce:


- La memoria riservata ai trasferimenti di Input e Output (ossia buffer)
- Le cache relative
- Le operazioni di Input e Output in modo asincrono
- L’esecuzione di più processi (ossia spooling)
 Un’interfaccia relativa ad ogni driver appartenente ad ogni dispositivo di Input e Output
 I relativi driver che sono i soli conoscitori del dispositivo a cui sono associati.

1.20 Sistemi Distribuiti


I Sistemi Distribuiti sono un insieme di elaboratori collocati in zone distanti che comunicano fra di
loro tramite una rete (LAN, MAN, WAN). Essi hanno caratteristiche omogenee e permettono agli utenti
di accedere alle varie risorse di ogni singolo sistema.

1.21 Sistemi ad Orientamento Specifico


I Sistemi ad orientamento specifico sono sistemi che si distinguono da quelli classici perché sono adibiti
a determinati compiti. I più comuni sono i seguenti:

 Sistemi Integrati Real-Time


Questa tipologia di dispositivi rappresenta tutte le tipologie di macchine (microonde,
videoregistratori…) che hanno compiti molto precisi e offrono funzionalità limitate e definite per lo
svolgimento del loro compito. Essi presentano un’interfaccia molto scarsa e solitamente questa è

Lisandro Francesco Pagina 17 18/04/2011


Sistemi Operativi

addirittura assente. Essi funzionano solitamente con sistemi operativi real-time che prevedono il
rispetto di vincoli di tempo e cambiano il loro stato in base al cambiamento di sensori, pulsanti o
altro. In altri casi il sistema operativo non è neanche presente.

 Sistemi Multimediali
Sono sistemi operativi progettati appositamente per la riproduzione, l’acquisizione e tutti le
tipologie di utilizzo di video, musica e immagini.

 Sistemi Palmari
Sono i palmari, i tascabili e i cellulari i componenti di questa categoria. Lo sviluppo di un sistema
operativo relativo a questa categoria è molto rognoso in quanto c’è minor Memoria Centrale, c’è
una CPU lenta ( per diminuire i costi) e la visualizzazione delle finestre sullo schermo e molto più
piccola.

Lisandro Francesco Pagina 18 18/04/2011