Sistemi operativi

Stefano Petrarca
Conservatorio S. Cecilia - Roma

Sistemi operativi

Il sistema operativo è un insieme di programmi che consente l'uso dell'elaboratore in maniera trasparente e ottimale.

Normalmente è strutturato a strati affinché sia garantita la generalità e l'espandibilità.

>>

 

 

 

 

 

 

Il livello hardware (il più interno) è la macchina fisica; i livelli soprastanti esistono proprio per creare un'astrazione da questo contesto.

Il nucleo (kernel) è il livello che ha il compito di gestire i processi. Un processo è una successione di stati attraverso cui passa il sistema durante l'elaborazione; in altre parole è un programma durante la sua esecuzione. La figura mostra le tipologie di stati possibili.

>>

 

 

 

 

 

Per avanzare, il processo ha bisogno delle risorse (messe a disposizione dal sistema).

Un sistema operativo multi-tasking permette l'esecuzione (virtualmente) contemporanea di più processi che, quindi, concorrono per l'utilizzo delle risorse che, spesso, sono condivise. In caso di condivisione di risorse, il S.O. deve garantire un accesso mutuamente esclusivo a queste.

Un processo si trova nello stato di hold (disponibilità) quando è inattivo ma si trova in una lista di processi da eseguire.

Nello stato di ready (pronto) il processo ha a disposizione tutte le risorse di cui ha bisogno tranne il processore.

Appena il processore si rende disponibile, il processo va in stato di run (esecuzione).

Se il processo ha compiuto con successo la sua elaborazione passa allo stato di complete (terminazione).

Un processo viene messo in stato di wait (attesa), se, durante la sua evoluzione, ha bisogno di una risorsa al momento non disponibile.

>>

 

 

 

 

 

Ritornando alla struttura del S.O., abbiamo al livello successivo il gestore della memoria.

La memoria è una risorsa primaria poiché un processo, per poter avanzare, deve risiedere in memoria centrale.

Un S.O. multi-tasking, per la sua natura, richiede sia grandi quantità di memoria, sia dei meccanismi di protezione per evitare che un processo interferisca con un altro.

Il primo problema viene risolto, spesso, con l'uso della memoria virtuale; se tutti i processi attivi in un determinato istante richiedono complessivamente più memoria di quanta ne sia disponibile, il S.O. provvederà a trasferire alcune parti su un supporto più capiente (ad es., il disco) e avviare, così, un meccanismo di scambio di blocchi tra i due supporti (swap).

Il secondo viene risolto assegnando a ogni processo un quantitativo di memoria in un'area inaccessibile agli altri processi attivi.

>>

 

 

 

 

 

Salendo di livello, troviamo il gestore delle periferiche che ha il compito di gestire i dispositivi di ingresso e uscita esterni al sistema (tastiera, monitor, stampante, scheda sonora, etc.).

Tali dispositivi sono, di norma, gestiti tramite i cosiddetti driver che sono insiemi di programmi e strutture dati che garantiscono un'astrazione rispetto al loro funzionamento hardware.

Ad esempio, senza driver, per gestire un dispositivo come la tastiera saremmo costretti a conoscere il (i) suo indirizzo di I/O, il formato dei dati in uscita, la posizione e la struttura della tabella di conversione per i layout nazionali, il suo numero di interrupt e, poi, a scrivere un programma, presumibilmente in Assembler, che funzionerà solo con quel tipo di hardware e dovrà essere scritto di nuovo ad ogni aggiornamento.

Un processo driver, dunque, è un'interfaccia software che da un lato interagisce con l'hardware del dispositivo dall'altra interagisce il S.O. tramite meccanismi standard.

Inoltre, il gestore delle periferiche, consente la sincronizzazione del S.O. con periferiche "lente" (come la stampante) tramite il meccanismo di spooling.

>>

 

 

 

 

Il file system consente l'astrazione rispetto all'organizzazione fisica dei dati sui supporti di massa (normalmente dischi magnetici).

L'organizzazione fisica dei dati sul disco è molto complessa:

>>

 

 

 

 

Per accedere a un insieme di informazioni è necessario conoscere la faccia del disco su cui sono memorizzati, la traccia e il settore.

Per evitare di dover conoscere la mappa dettagliata di ogni dato presente sul disco, il S.O. dà la possibilità di raggruppare i dati in insiemi chiamati file accessibili tramite un nome simbolico ad essi associato.

I file sono, normalmente, raggruppati in directory organizzate gerarchicamente; il livello più alto è la root directory (directory radice) che contiene tutte le sotto-directory.

Ogni directory contiene una lista dei file in essa contenuti. Ogni elemento della lista è formato da informazioni riguardanti il file che rappresenta: il nome, l'attributo (il tipo di file), data e ora dell'ultimo accesso, la dimensione, un riferimento alla sua posizione fisica nel disco.

Per snellire le operazioni di accesso ai dati del file, il S.O. gestisce una mappa di occupazione del disco che, in alcuni casi, viene chiamata File Allocation Table (FAT). In questa si trova la struttura delle catene di settori (o cluster: insiemi arbitrari di settori) che costituiscono i file.

>>

 

 

 

 

Il livello di sviluppo è costituito da tutti i processi che permettono di interagire direttamente con il S.O.

Sistemisti, programmatori, amministratori di sistema, etc. operano a questo livello dove, pertanto, troveremo i linguaggi di programmazione, i programmi monitor, le utility di sistema, etc.

Il livello applicativo, infine, consente all'utente generico di eseguire i suoi programmi in maniera completamente trasparente, senza conoscere nulla di programmazione o della struttura del S.O.

 


Esercizi (ancora sulla programmazione)

- Realizzare un algoritmo, e il relativo programma, di ordinamento ascendente degli elementi di un vettore di 32 interi


Pagina iniziale ________________ Matematica ________________ Programma ________________ Bibliografia