| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

View
 

Corso di Informatica - I sistemi operativi - Organizzazione

Page history last edited by Trapani Marco 12 years, 9 months ago

Organizzazione di un sistema operativo

 

Il sistema operativo è un insieme di numerosi programmi che consentono all'utente di controllare il computer. Per descrivere la funzionalità del sistema operativo possiamo considerare i seguenti tre livelli:

 

  • Livello utente
  • Livello del nucleo (kernel)
  • Livello hardware

 

Questi tre livelli sono così interconnessi: l'utente accede alle funzionalità dei dispositivi dell'hardware (capacità di memorizzazione dei dati, di esecuzione di calcoli, di rappresentazioni grafiche su monitor) grazie ai servizi offerti dal nucleo del sistema operativo. Il mezzo con cui l'utente accede a tali servizi è costituito dalla interfaccia. Questa è sostanzialmente ciò che l'utente vede sul monitor. L'interfaccia può essere costituita da una semplice riga sul monitor dove l'utente può scrivere dei comandi oppure può essere una interfaccia grafica (GUI) sulla quale i comandi da impartire al computer possono essere selezionati mediante il mouse. Inutile dire che questo ultimo è il metodo standard utilizzato oggi.

 

Il nucleo è il livello a cui i programmi si rivolgono per qualunque operazione. Per esempio quando un programma deve accedere ad un determinato dispositivo fisico, per esempio una stampante, può accedere direttamente al nucleo senza conoscere le caratteristiche della stampante che è realmente disponibile. Il nucleo consente al programma di riferirsi così ad una generica stampante ideale e si incarica di tradurre le richieste per la stampante realmente connessa al computer. Il nucleo avvolge idealmente l'elaboratore e i suoi dispositivi fisici, ovvero tutto l'hardware, e si occupa di interagire con i programmi che ignorano l'elaboratore fisico. Questa caratteristica facilita la portabilità del software, vale a dire la capacità di usare facilmente i programmi su computer diversi equipaggiati con accessori perfierici diversi. Per esempio, lo stesso programma di scrittura può essere utilizzato su due computer diversi anche se questi hanno due stampanti diverse. E' il sistema operativo che si fa carico di "sapere" che stampante c'è sul computer su cui è installato e di tradurre correttamente le richieste di stampa del programma di scrittura per la stampante collegata al computer.

 

A sua volta la funzionalità del nucleo può essere scomposta nelle seguenti categorie:

  1. File system
  2. Gestore I/O
  3. Gestore processi
  4. Gestore della memoria
  5. Gestore dei processori

 

1) File system

Premesso che qualsiasi collezione di informazioni (testi, immagini, schemi, tabelle e via dicendo), memorizzata mediante un qualsiasi programma di elaborazione, si chiama file, il file system consiste nell'organizzazione gerarchica dei file. Tale organizzazione gerarchica è puramente logica e non ha alcuna relazione con l'organizzazione fisica dei file sul disco. Essa serve all'utente per poter gestire opportunamente i propri dati. L'organizzazione si basa su di un particolare tipo di file che consente di raggruppare altri file e che prende il nome di directory o cartella. La directory contiene l'elenco dei nomi dei file in essa raggruppati fra i quali vi possono anche essere delle altre directory, dette talvolta subdirectory. Per descrivere la struttura gerarchica di un file system si fa talvolta ricorso ad una metafora botanico-parentale, con la quale si immagina il file system come un albero rovesciato con le radici in alto e la chioma in basso. Tale struttura è composta da nodi dove ogni nodo può avere un solo padre, cioè può appartenere ad una sola directory. I nodi possono essere file o directory. Vi è un nodo radice (root) che è il padre di livello più elevato, cioè tutto il resto discende da esso. Nella radice sono quindi raggruppati i nodi di livello successivo che possono essere sia file che directory. La genealogia di un file, cioè il percorso, che risalendo di padre in padre conduce alla radice si chiama percorso (o path). Il percorso è assoluto o relativo: assoluto quando è completo includendo la radice, relativo quando parte da un nodo intermedio. In questa figura potete vedere una rappresentazione grafica del file system.

 

La struttura che abbiamo descritto è del tutto generale e si ritrova in quasi tutti i sistemi operativi. Vi sono anche altri aspetti più particolari che possono essere comuni a vari sistemi ma altri che li differenziano. Le informazioni che seguono sono relative al file system DOS (e vari discendenti Windows 95, 98, Millennium) non perchè sia un buon esempio ma perchè è ancora oggi ciò che si trova nella maggior parte dei computer.

Il sistema operativo tiene traccia delle zone del disco che sono occupate da file, di quelle che sono libere e di quelle danneggiate. Queste informazioni fanno parte di quello che si chiama il formato logico del disco. Il comando del sistema che crea la struttura di queste informazioni è quello che si chiama format. Questo comando crea tre zone sul disco:

               a. record di avviamento, detto MBR

               b. la tabella di allocazione dei file, detta FAT

               c. la directory principale, radice o root

 

La superficie di un disco in seguito alla formattazione viene divisa in tracce e settori .

Le tracce sono delle corone circolari concentriche ed i settori sono spicchi nei quali vengono suddivise le tracce. Il settore è la più piccola quantità che il sistema è in grado di leggere, nel DOS questa è costituita da 512 byte. Quando lo hard disk è costituito da più dischi rigidi imperniati su di un unico asse allora un gruppo di tracce equidistanti dall'asse di rotazione prende il nome di cilindro; per esempio, se un hard disk è costituito da tre dischi, avremo che ogni cilindro sarà costituito da 6 tracce, una per ognuna delle due facce di ciascun disco. Ognuna delle tracce (6 nel nostro esempio) di un cilindro viene letta da una testina di lettura scrittura. Settori e tracce (o settori, cilindri e numero della testina di lettura scrittura) sono i parametri utilizzati dal computer per indirizzare le zone del disco.

L'insieme di cilindri e settori formano il volume che è usualmente contrassegnato con una lettera, quasi sempre C ma non necessariamente. Un disco può anche essere diviso in zone che vengono gestite separatamente che prendono nome di partizioni. Ad ogni partizione è associato un volume ed i vari volumi vengono designati con lettere successive: C, D, E, e via dicendo.

I settori sono poi raggruppati in cluster che sono la minima quantità che il file system può assegnare a dei dati. Questo significa che se il sistema deve scrivere un file lungo 1 Kb e la dimensione di un singolo cluster è di 4 Kb allora 3 Kb andranno sprecati. Nel DOS il numero di settori per cluster variava in dipendenza della capacità del disco: si va da un minimo di 4 settori (ciascuno di 512 byte) per cluster ad un massimo di 64 settori per cluster.

 

a) Il MBR sta nel primo settore della prima traccia della prima faccia dell'insieme dei dischi. Esso contiene un piccolo programma che consente di caricare il sistema operativo nel processo di bootstrap che ha luogo all'accensione del computer. Inoltre, il MBR contiene anche le caratteristiche del disco quali il numero di byte per settore, il numero totale di settori, il numero di settori per cluster ed il numero di testine.

 

b) La FAT mantiene traccia dello stato di tutti cluster del disco. La FAT è sostanzialmente una tabella che ha tante voci quanti sono i cluster su disco e per ognuno di essi descrive se si tratta di un cluster libero, usato o difettoso. Nella FAT cosiddetta a 16 bit, per ogni voce si usano 16 bit che servono a mantenere le informazioni suddette più, nel caso in cui il cluster sia allocato, l'indirizzo del prossimo. L'organizzazione della voce è tale da poter indirizzare in tal caso 128 Mb. L'avvento di dischi a dimensione crescente ha indotto l'uso di cluster più grandi arrivando così ad utilizzare dischi di 512 Mb al prezzo di usare meno efficientemente lo spazio (cluster grandi significa spreco di spazio per file piccoli). Il limite è poi stato portato a 2 Gb dividendo lo spazio su disco in 4 partizioni diverse ognuna con la sua FAT.

La crescita continua della capacità dei dischi ha poi causato l'estensione alla cosiddetta FAT a 32 bit dove per ogni voce si ha un puntatore a 32 bit. Con la FAT a 32 bit si possono indirizzare fino a 2 Tb di disco.

In relazione alla gestione dei cluster è opportuno citare il problema della frammentazione dei file. File che per essere memorizzati richiedano più di un cluster vengono distribuiti su più cluster. Nella voce della directory che descrive il file c'è l'indirizzo del primo cluster in cui esso è memorizzato. Nella FAT, tale cluster apparirà essere nello stato allocato e conterrà l'indirizzo del prossimo cluster e via dicendo. I cluster non sono necessariamente contigui ed un file può essere sparpagliato in molte zone diverse del disco. La FAT tiene traccia delle concatenazioni dei cluster. Dopo un certo tempo (difficile dire quanto, dipende moltissimo da come si usa il computer, potrebbero essere mesi come anni) il file system finisce con l'essere frammentato in una miriade di piccoli spazi vuoti e file anche non molto grandi devono essere spezzettati in molte parti per potere essere scritti su disco. L'accesso può divenire così anche visibilmente inefficiente senza contare che aumentano anche le probabilità di incorrere in stati di incoerenza del file system con conseguente possibilità di perdere dei dati.

E' opportuno quindi provvedere periodicamente a deframmentare i dischi con degli appositi programmi che si chiamano deframmentatori e che ricompattano i file condensando lo spazio in un'unica grande area libera. E' chiaro che si tratta di operazioni delicate ed è decisamente opportuno non fare eseguire lavori aggiuntivi al computer quando si fa girare un deframmentatore.

E' opportuno rilevare che il file system basato sulla FAT è usato dai sistemi Windows 95, 98 e ME (Millennium Edition). I sistemi Windows NT, Windows 2000 ed infine Windows XP utilizzano un file system molto più evoluto e simile a quello utilizzato nel sistema operativo Unix (e quindi anche in Linux), il file system NTFS. Con NTFS la FAT è sostituita da una MFT che contiene le informazioni su come ogni file è eventualmente suddiviso in cluster. Questo è un metodo più efficiente nel limitare la frammentazione dei file in più cluster e rientra nella diversa impostazione dei nuovi sistemi operativi che sono molto più orientati alla robustezza del sistema ed alla protezione dei dati. Ecco alcune delle principali caratteristiche del NTFS:

 

  • Sicurezza dei file Cosiddetti diritti di accesso possono essere assegnati a file e directory, consentendo così a predefinite categorie di utenti un accesso completo, parziale o nullo ad insiemi di dati memorizzati su disco.
  • Crittatura Questo oscuro termine significa la capacità di "ingarbugliare"' i bit prima che vengano scritti su disco; naturalmente ciò prevede la capacita di decrittare i medesimi in modo da recuperali in chiaro. Sono tecniche che servono nel caso di dati importanti (dati sensibili) che devono essere protetti da accessi inopportuni. Il file system NTFS ha la capacità di crittare e decrittare i dati al volo quando li scrive e legge rispettivamente.
  • Compressione Questa è la capacità di scrivere i dati su disco comprimendoli al volo e di rileggerli decomprimendoli.
  • Supporto per dischi molto grandi Veramente molto grandi: si parla di un limite teorico di 16 Exabyte 260! In pratica per ora questo limite vale "solo" 2 Terabyte.
  • Nomi lunghi per i file Con la FAT16 del DOS si potevano usare solo nomi di 8 caratteri più 3 caratteri per l'estensione (la parte dopo il punto, per esempio doc in file.doc). Con NTFS non ci sono limiti per la lunghezza dei nomi e possono essere utilizzati i caratteri Unicode.
  • Quote di disco (Disk Quotas) E' possibile istituire quote di disco per gli utenti del computer. Per esempio un certo utente ha diritto ad usare una predeterminata massima quantità di disco.
  • Fault tolerance Questa è la capacità di mantenere un comportamento più (la perfezione non esiste ...) stabile e coerente in presenza di errori hardware o software.

 

c) La directory principale è anch'essa sostanzialmente una tabella e contiene una voce per ogni file memorizzato. Per ogni voce sono disponibili il nome del file, la data di creazione, l'ora di creazione, gli attributi del file (se è un file nascosto, di sola lettura e via dicendo), la dimensione del file in byte, il puntatore al primo cluster del file.

 

2) Gestore I/O

Si intende con questo la gestione dei dispositivi periferici che possono essere collegati ad un computer. Il gestore I/O comprende quei programmi che si chiamano device driver e che servono a controllare il dispositivo, a gestire il flusso di dati nei suoi confronti ed a coordinare l'accesso al medesimo di più di un utente.

3) Gestore processi

I sistemi moderni sono in grado di eseguire molti programmi contemporaneamente. Ognuno di questi programmi può essere eseguito, sospeso, fatto ripartire anche moltissime volte. Per potere fare questo il sistema deve mantenere tutta una serie di informazioni relative allo stato di avanzamento ed alle condizioni di ciascun programma. Questo insieme di informazioni, relativo a ciascun programma, si chiama processo. Importanti concetti che abbiamo discusso e che scriveremo qui sono quello del multitasking e dello time-slicing.

 

4) Gestore della memoria

La gestione della memoria è estremamente importante in un sistema operativo. In base ad essa viene stabilito in quali aree di memoria vengono caricate le parti del sistema operativo stesso e dei vari programmi che possono essere lanciati. E' a questo livello che viene curata la separazione fra dati ed istruzioni, un aspetto particolarmente importante e delicato che abbiamo avuto modo di discutere a proposito del concetto di macchina di Von Neumann e nell'esempio che abbiamo fatto di un elementare programma assembler.

Il gestore della memoria controlla anche la cosiddetta memoria virtuale. La memoria virtuale è molto più grande della RAM disponibile sul computer e viene ottenuta utilizzando una certa area del disco rigido. In questo modo il computer è in grado di far funzionare programmi ed a gestire configurazioni che hanno bisogno di una memoria superiore alla RAM disponibile. E' una funzionalità che di primo acchito sembra molto interessante ma, sfortunatamente, presenta un grosso svantaggio: l'accesso alla parte di memoria virtuale che risiede sul disco rigido è estremamente più lento di quello alla RAM. Abbiamo visto che il tempo di accesso ad una posizione di memoria RAM è dell'ordine di circa 10 nanosecondi. Questo significa che i tempi di trasferimento in o dalla RAM si aggirano intorno ai 100 MByte/s. Le velocità di trasferimento dei dati da o verso un disco rigido sono invece dell'ordine di circa 100 Mbit/s e quindi sono circa un ordine di grandezza inferiori rispetto a quelle della RAM. In realtà il confronto è ancora molto più a favore della RAM perchè il posizionamento in una certa zona del disco richiede tempi molto maggiori, di circa 10 millisecondi. Il risultato è che quando un programma inizia a fare un uso consistente della memoria virtuale si assiste solitamente ad un drastico deterioramento delle sue prestazioni, talvolta al punto da far apparire il sistema completamente paralizzato.

5) Gestore dei processori

Il gestore dei processori assegna al processore i programmi in attesa di essere eseguiti. In macchine con più processori (si chiamano multiprocessori) controlla la cooperazione fra le varie CPU.

Comments (0)

You don't have permission to comment on this page.