Matematica Informatica I Sistemi Operativi.

Dizionario di matematica iniziale: a b c d e f g i k l m n o p q r s t u v z

Enciclopedia termini lemmi con iniziale a b c d e f g h i j k l m n o p q r s t u v w x y z

Google

INFORMATICA - I SISTEMI OPERATIVI

DEFINIZIONE DI SISTEMA OPERATIVO

Il software essenziale al funzionamento del computer viene detto software di base; esso comprende il sistema operativo e i programmi di utilità.

Il sistema operativo è il programma che entra in azione quando si accende il computer e che ne stabilisce il modo di funzionare.

In altre parole, offre le funzioni per la gestione di tutte le risorse del computer (per risorse si intendono tutte le componenti hardware e software: CPU, memoria, periferiche, informazioni) in modo che l'utente o il programmatore le possa utilizzare senza necessariamente dover conoscere come sono realizzate e tutti i dettagli necessari per il loro utilizzo.

IL FUNZIONAMENTO DEL COMPUTER

Quando si accende il computer il sistema operativo viene caricato in memoria e rimane in attesa di comandi da parte dell'utente, presentando sul video un simbolo (caratteristico di ogni sistema operativo, e a volte modificabile) chiamato prompt.

Finchè rimane acceso il computer, il sistema operativo accetta un comando e lo esegue, per poi tornare a porsi in attesa di ricevere un altro comando.

L'utente può richiedere l'esecuzione di qualsiasi comando o programma tramite il linguaggio di controllo, un insieme di comandi e istruzioni previsti dal sistema operativo stesso.

SERVIZI ESSENZIALI DEL SISTEMA OPERATIVO

I servizi essenziali offerti anche dal sistema operativo più semplice sono, per esempio, il controllo dell'esecuzione dei programmi (allocazione in memoria, avvio, esecuzione, ecc.), la gestione delle operazioni di input/output sulle periferiche, la gestione dell'organizzazione del disco e quella dei file, degli errori, ecc.

LA MACCHINA ESTESA

Il sistema operativo, insieme all'hardware, costituisce la macchina estesa, cioè la macchina con cui l'utente interagisce.

Esistono vari tipi di sistemi operativi che permettono di svolgere funzioni e di operare con modalità differenti.

Uno stesso computer può funzionare in modo diverso a seconda del sistema operativo adottato (devono comunque essere disponibili le opportune apparecchiature hardware).

IL PERSONAL E I SISTEMI OPERATIVI

Il discorso precedente vale anche per i personal computer. Essi possono funzionare con il Dos, ma anche con l'OS/2 o con Unix.

Ogni sistema operativo offre un proprio linguaggio di controllo o un ambiente grafico in cui operare, e permette un complesso di operazioni.

Anche versioni diverse di uno stesso sistema operativo possono far funzionare il computer in modo differente, offrendo maggiori o minori potenzialità.

LA GENERAZIONE DEL SISTEMA OPERATIVO

Normalmente il sistema operativo è installato sul disco fisso del computer. Quando il computer è nuovo il disco fisso è pulito; bisogna quindi provvedere a installare il sistema operativo con un'operazione (generazione del sistema), che permette anche una certa personalizzazione in base alla configurazione hardware e software disponibile.

Partendo dal sistema operativo originale sul disco sorgente si produce un disco con il sistema personalizzato, seguendo una procedura fornita col sistema operativo sorgente, che è ripetibile anche successivamente, se cambiano le esigenze.

IL BOOTSTRAP

Ogni volta che si accende il computer il sistema operativo viene caricato in memoria centrale dal disco fisso con l'operazione di bootstrap o IPL (Initial Program Loading).

In genere non tutto il sistema operativo viene portato in memoria ma solo la parte essenziale per il funzionamento (parte residente); le altre routine del sistema operativo vengono portate in memoria solo quando sono necessarie in modo da non occuparla inutilmente (routine transienti).

Durante l'operazione di bootstrap viene anche esaminata la configurazione (definendo quali periferiche sono collegate) e vengono eseguiti dei controlli sui diversi componenti hardware.

LA PARTENZA DEL BOOTSTRAP

L'operazione di bootstrap parte automaticamente quando si accende il computer. Via hardware viene portato nel registro contatore di programma (quello cioè che contiene l'indirizzo dell'istruzione da eseguire) l'indirizzo del programma di caricamento; quest'ultimo permette di portare in memoria il sistema operativo, leggendolo dal sco su cui si trova.

I MODULI DEL SISTEMA OPERATIVO

Il sistema operativo è suddiviso in moduli.

Partendo dal livello inferiore, quello più legato all'hardware, si hanno:

- il nucleo (o supervisore) che comprende le procedure di gestione della CPU;

- il gestore della memoria, che si occupa di assegnare un'area di memoria a ogni programma che deve essere eseguito;

- il gestore delle periferiche, che si occupa della gestione dei diversi tipi di periferiche di input/output;

- il gestore delle informazioni, che si occupa di come esse vengono registrate e reperite nelle memorie di massa (quindi per esempio della gestione delle directory, dell'organizzazione dei file e del loro uso);

- lo shell (guscio) che permette di interpretare i comandi del linguaggio di controllo con cui l'utente opera;

- i programmi di utilità (editor, compilatori, interpreti, linker, caricatore, programmi di gestione file ecc.).

Ogni modulo opera utilizzando istruzioni e routine definite nei moduli di livello inferiore.

Spot

Spot

L'INTERFACCIA UTENTE - IL LINGUAGGIO DI CONTROLLO

Il linguaggio di controllo del sistema operativo comprende un insieme di comandi che permettono di gestire file, directory, librerie ecc.

I comandi possono richiedere anche l'esecuzione di programmi di utilità del sistema o di programmi utente, che vengono eseguiti sotto il controllo del sistema operativo.

Il linguaggio di controllo permette spesso di creare vere e proprie procedure per gestire il funzionamento di uno o più programmi, interattivi o batch, l'emissione di menu, l'inserimento di parametri da parte dell'utente ecc.

Spesso lo shell offre un'interfaccia grafica, con menu o addirittura rappresentazioni figurate delle opzioni possibili (icone) che possono essere scelte utilizzando il mouse.

LE MODALITA' DI LAVORO INTERATTIVO E BATCH

I sistemi operativi possono offrire diverse possibilità di funzionamento.

Un programmatore o un utente può lavorare al computer in due modi diversi: in modo interattivo o in modo batch.

L'elaborazione interattiva permette di comunicare col programma durante l'esecuzione, per inserire dati e ottenere risultati; il lavoro viene svolto utilizzando un terminale composto dalla tastiera per l'immissione dei dati e dal video per l'output del computer.

Operando in modo batch si devono fornire al programma, al momento della richiesta di esecuzione, tutte le informazioni di controllo e i dati necessari; i risultati si ottengono al termine dell'elaborazione, di solito in stampa o su file, dato che il video potrebbe essere occupato da qualche altro lavoro nel momento in cui il programma deve produrre il suo output. L'andamento del programma può essere controllato solo dalla console di comando (un terminale abilitato ad eseguire funzioni particolari per la gestione dell'intero sistema).

I dati possono essere forniti ancora da terminale, ma anche letti da una memoria di massa.

Alcuni anni fa le elaborazioni erano soprattutto batch e l'input veniva preparato su schede perforate, lette poi da un dispositivo chiamato lettore di schede. Ognuna di queste poteva contenere un comando del linguaggio di controllo, un'istruzione o un dato.

Attualmente le elaborazioni sono soprattutto interattive; vengono eseguite in modo batch quelle operazioni che non richiedono l'intervento dell'uomo; per esempio, nell'attività di programmazione vengono eseguite in modo interattivo la scrittura del programma e il test, ma può essere effettuata in modo batch la compilazione; tra i programmi applicativi, possono essere elaborati in modo batch quelli che effettuano stampe di dati letti da file e che non richiedono quindi un colloquio con l'utente.

Schema di elaborazione interattiva

Schema di elaborazione interattiva

Schema di elaborazione batch

Schema di elaborazione batch

ESEMPI DI LAVORI INTERATTIVI E BATCH

Un programma interattivo per l'addizione di due numeri, quando viene mandato in esecuzione, si ferma per chiedere gli operandi all'utente e poi comunica subito il risultato dell'operazione.

Per eseguire in modo batch un programma analogo bisognerebbe fornire i due operandi al momento della richiesta di esecuzione del programma; questo, quindi, non si interromperebbe e non formulerebbe nessuna richiesta all'utente.

Per quanto riguarda l'attività di programmazione, in modo interattivo si può scrivere il programma con l'editor, effettuare correzioni, richiamare il compilatore o l'interprete, utilizzare ambienti di debug, verificando subito l'effetto delle operazioni compiute.

Per realizzare un programma operando in modo batch bisogna (o meglio bisognava, perchè oggigiorno sarebbe assurdo lavorare in questo modo), con un'unica operazione, fornire le istruzioni del programma, richiamare il compilatore e il linker, e richiedere l'esecuzione fornendo anche i dati su cui opera il programma. Naturalmente ogni operazione può essere compiuta solo se le fasi precedenti sono state eseguite correttamente e, se questo non accade, bisogna apportare le necessarie correzioni e riproporre al computer l'intero lavoro.

UTILITA' DEI LAVORI BATCH

Ma se è più comodo lavorare in modo interattivo perchè si eseguono alcuni programmi in modo batch?

La modalità di lavoro batch viene anche chiamata "lavoro in background" e di solito lascia il terminale libero per lavorare contemporaneamente in modo interattivo (lavoro in foreground); in questo modo diventa possibile far eseguire un lavoro lungo, e che non richiede nessun intervento diretto, in modo batch e nello stesso tempo dedicarsi a qualche altra attività.

L'uomo lavora molto più lentamente del computer. Quest'ultimo può svolgere più lavori contemporaneamente senza rallentare molto la sua attività.

ELABORAZIONE IN UNIPROGRAMMAZIONE

Il personal computer prevede l'utilizzo da parte di un solo utente per volta; se il sistema operativo utilizzato è l'MS-DOS si può eseguire anche un solo programma per volta. La modalità di elaborazione si definisce, in questo caso, uni-programmazione.

Se l'utente lavora in modo interattivo può caricare in memoria un solo programma; se lancia una procedura batch, questa viene eseguita subito e non permette di richiedere contemporaneamente l'esecuzione di qualche altro programma; più programmi batch vengono eseguiti in sequenza, uno dopo l'altro.

ELABORAZIONE IN MULTIPROGRAMMAZIONE E IN TIME-SHARING

Grazie alla velocità del computer è possibile eseguire molti programmi contemporaneamente (elaborazione in multiprogrammazione) o servire più utenti (elaborazione in time-sharing).

LA MULTIPROGRAMMAZIONE

Nei sistemi in multiprogrammazione più programmi possono essere caricati contemporaneamente in memoria ed eseguiti nello stesso periodo.

La CPU può eseguire soltanto un programma alla volta; ogni programma però spesso interrompe la sua normale esecuzione (con un meccanismo chiamato gestione delle interruzioni) per aspettare che venga completato un servizio, per esempio la lettura di un dato dal disco, o l'inserimento di un dato da parte dell'utente tramite la tastiera. In questi momenti, la CPU resta inattiva. Per sfruttare il tempo, nelle fasi di attesa, il microprocessore esegue le istruzioni di un altro programma.

I programmi presenti in memoria vengono quindi eseguiti alternativamente dalla CPU, che resta inattiva soltanto quando tutti i processi sono in attesa del completamento di un servizio richiesto.

La necessità di sfruttare maggiormente la CPU deriva ovviamente da problemi di costo; con la multiprogrammazione si può svolgere più lavoro con un unico computer.

I programmi eseguibili in multiprogrammazione sono soltanto programmi di tipo batch: infatti, non è possibile determinare il tempo di risposta di un programma, cioè il tempo necessario per la sua conclusione.

Quando viene richiesta l'esecuzione di un programma, se la memoria è già occupata da altri programmi, esso viene inserito in una coda di attesa, dove resterà finchè verrà scelto dallo schedulatore dei lavori (una routine del sistema operativo), in base a criteri che possono variare da un sistema all'altro.

Anche dopo essere stato scelto e portato in memoria centrale, il suo avanzamento non è costante, ma dipende dalle interruzioni che si verificano, e dagli altri programmi che vengono eseguiti contemporaneamente.

Non è perciò possibile prevedere né quando il programma inizierà né quando terminerà la sua esecuzione.

In multiprogrammazione quindi è possibile far eseguire più programmi contemporaneamente, ma solo in modo batch. Potrebbe quindi esserci anche un solo utente che lavora e richiede l'esecuzione di diversi programmi.

TEMPO DI RISPOSTA E TEMPO DI ESECUZIONE DI UN PROGRAMMA

Il tempo di risposta è quello che intercorre tra la richiesta di esecuzione di un programma e l'emissione dell'output dello stesso.

Il tempo di esecuzione è quello che intercorre tra l'inizio e la fine dell'esecuzione di un programma, cioè da quando esso viene scelto dallo schedulatore dei lavori a quando termina.

GLI STATI DEL PROGRAMMA

Durante la sua esecuzione un processo attraversa alcuni stati.

Si dice che il programma è in stato di disponibilità quando si trova ancora in memoria di massa.

Dopo essere stato selezionato dallo schedulatore dei lavori (la routine del sistema operativo che si occupa di scegliere i lavori secondo criteri predefiniti) il programma viene portato in memoria centrale. Ricodiamo che un programma può essere eseguito solo se si trova nella memoria centrale. Per cominciare l'esecuzione, deve soltanto aspettare che gli venga assegnata la CPU; (il programma si trova in stato di pronto).

L'esecuzione di un programma viene chiamata processo; il programma costituisce la descrizione delle istruzioni da eseguire, mentre il processo è la sequenza di azioni compiute durante l'esecuzione.

Lo schedulatore dei processi (un'altra routine del sistema operativo) sceglie, tra quelli in stato di pronto, a quale assegnare la CPU: il processo passa allora allo stato di esecuzione. Un solo programma alla volta può trovarsi in questo stato.

Dallo stato di esecuzione il processo può procedere o passare in stato di attesa (quando non può avanzare perchè aspetta il completamento di un'operazione, per esempio di input/output). In tal caso, viene rilasciata la CPU, che può essere assegnata a un altro processo.

Quando l'operazione richiesta è conclusa il processo in stato di attesa viene portato nuovamente in stato di pronto.

Il processo può passare più volte tra gli stati di pronto, esecuzione e attesa finchè giunge allo stato di terminazione e viene cancellato dalla memoria.

[Figura: Schema dell'avanzamento di un programma tra i possibili stati: 1) il programma passa dallo stato di disponibilità allo stato di pronto quando viene scelto dallo schedulatore dei lavori; 2) il programma passa dallo stato di pronto allo stato di esecuzione quando viene scelto dallo schedulatore dei processi; 3) il programma passa dallo stato di esecuzione allo stato di attesa quando deve aspettare il completamento di un servizio, 4) il programma passa dallo stato di attesa allo stato di pronto quando il servizio richiesto è stato completato; 5) il programma passa dallo stato di esecuzione allo stato di pronto quando si verifica un'interruzione esterna o, nell'elaborazione in time-sharing, quando viene esaurito il tempo riservato al programma; 6) il programma passa dallo stato di attesa allo stato di disponibilità nell'elaborazione in time-sharing quando deve essere liberato spazio in memoria per poter caricare un altro programma; 7) il programma passa dallo stato di esecuzione allo stato di terminazione quando il programma viene concluso].

Schema avanzamento programma tra possibili stati

Schema avanzamento programma tra possibili stati

IL TIME-SHARING

La modalità di lavoro più interessante è però senz'altro l'elaborazione in time-sharing; con essa più utenti possono utilizzare contemporaneamente lo stesso computer; ognuno lavora tramite un terminale collegato all'unità centrale e in modo interattivo. Ogni stazione permette una "sessione di lavoro"; questa inizia con il collegamento dell'utente (log in), che deve inserire in genere un codice identificativo e una parola d'ordine, e termina con lo scollegamento del terminale (log off).

Durante la sessione si possono richiamare comandi del sistema operativo, utilizzare programmi di utilità come editor, compilatori, ecc., eseguire programmi applicativi (di solito di tipo interattivo), e compiere qualsiasi altro tipo di lavoro (anche richiedere di eseguire un programma in modo batch).

Time-sharing significa condivisione di tempo; infatti, in questo tipo di elaborazione, la CPU viene assegnata alternativamente alle diverse sessioni di lavoro. Poichè le operazioni effettuate dall'uomo sono molto più lente di quelle effettuate dalla CPU, ogni utente ha l'impressione di avere sempre la CPU a sua disposizione.

In realtà, se ci sono molti utenti che lavorano e richiedono pesanti elaborazioni, il tempo di risposta del sistema può aumentare considerevolmente. L'utente può trovarsi, di conseguenza, a dover aspettare per ottenere la risposta del computer.

Schema di elaborazione in time-sharing

Schema di elaborazione in time-sharing

LO SWAPPING

Poichè i lavori sono interattivi, ognuno deve partire subito, appena ne viene richiesta l'esecuzione; per far ciò il programma deve essere caricato nella memoria centrale.

Se questa è completamente occupata da altri programmi bisogna far posto al nuovo arrivato riportandone qualcuno (che magari sta aspettando il completamento di un'operazione) in memoria di massa; questo procedimento viene chiamato swapping.

Lo swapping è quindi lo spostamento di un programma dalla memoria centrale al disco per lasciare spazio ad altri programmi. L'operazione di trasferimento dei programmi dalla memoria al disco si chiama swap-out; l'operazione contraria (trasferimento dei programmi dal disco alla memoria centrale) si chiama swap-in.

Lo swapping richiede un certo tempo di esecuzione, dato che richiede anche operazioni sulla memoria di massa che sono molto più lente delle operazioni della CPU; se deve essere eseguito spesso, perchè i lavori sono troppi, può causare un notevole rallentamento dell'attività del sistema.

Schema del procedimento dello swapping

Schema del procedimento dello swapping

I SERVIZI DEL SISTEMA OPERATIVO

Un sistema operativo capace di gestire la multiprogrammazione o il time-sharing è molto più complesso di uno che permette soltanto l'elaborazione in uni-programmazione; è infatti il sistema operativo che deve stabilire come assegnare le varie risorse del sistema ai processi che ne hanno bisogno decidendo, per esempio, in quale area di memoria caricare ciascun programma, a quale assegnare di volta in volta la CPU, ecc.

Deve inoltre svolgere funzioni di protezione per evitare che un programma possa accedere a zone di memoria riservate ad altri, o utilizzare file senza averne il permesso.

Più processi, inoltre possono richiedere nello stesso momento una risorsa che non può essere condivisa, per esempio una stampante; il sistema operativo deve quindi essere in grado di risolvere le situazioni di conflitto che si possono creare, permettendo a tutti i programmi di utilizzare in tempi diversi, in maniera ottimizzata, tutte le risorse di cui hanno bisogno.

LA GESTIONE DELLE RISORSE

Il sistema operativo comprende dei moduli per la gestione delle risorse (gestore della CPU, della memoria, delle periferiche, delle informazioni) che devono provvedere a stabilire a quale processo, tra quelli che la richiedono, assegnare la singola risorsa, procedere all'assegnazione e, al termine, gestire il rilascio della risorsa da parte del processo che l'ha utilizzata.

Per esempio, per assegnare un'area di memoria, una volta scelto il programma da caricare, il gestore della memoria deve stabilire quale zona di memoria utilizzare tra quelle a disposizione, copiare le istruzioni del programma nell'area assegnata e, quando il programma ha terminato l'esecuzione, rendere nuovamente sponibile quell'area per altri programmi.

Per poter prendere delle decisioni sull'utilizzo di qualsiasi risorsa il sistema operativo registra tutte le informazioni necessarie, mantenendole continuamente aggiornate: per ogni risorsa deve sapere se è libera o occupata, e, nel secondo caso, occupata da quale programma.

Il sistema operativo si occupa di tutti i problemi della gestione delle risorse; i programmi (e di conseguenza i programmatori e gli utenti) non devono preoccuparsi dei dettagli tecnici necessari per utilizzare una risorsa, ma soltanto delle operazioni che vogliono fare, in modo logico.

Per esempio per mandare in esecuzione un programma basta richiamarlo; è il sistema operativo che si preoccupa di assegnare la memoria necessaria. Se un programma utilizza un file deve solo specificare le operazioni che deve fare in modo logico, (per esempio leggere il terzo record); è sempre il sistema operativo che si preoccupa di realizzarle, identificando la posizione sul disco in cui si trova il record ed eseguendo fisicamente l'operazione.

I METODI DI ALLOCAZIONE DELLE RISORSE

Le risorse possono essere allocate in modo statico o in modo dinamico.

Una risorsa allocata in modo statico viene assegnata a un processo per tutta la durata dell'esecuzione del processo stesso e non può quindi essere utilizzata nel frattempo per altri lavori.

Una risorsa allocata in modo dinamico viene invece assegnata a un processo solo nel momento in cui è necessaria e rilasciata subito dopo.

Per fare un esempio, se un programma deve compiere delle operazioni su un file, non deve tenerlo occupato per tutta la durata del programma, ma soltanto mentre sta eseguendo le operazioni di lettura o scrittura di un record; quanto detto non vale per l'uso di una stampante che deve essere assegnata in modo statico, affinchè non si mescolino le righe di output di programmi diversi, che risulterebbero confuse tra loro.

Ci sono diverse tecniche di allocazione delle risorse; alcuni metodi sono abbastanza semplici ma non permettono di ottenere risultati molto efficienti; altri permettono di ottenere un rendimento migliore ma sono più sofisticati e quindi più difficili da realizzare.

LA GESTIONE DELLA CPU

Nei sistemi multiutente o multiprogrammati più persone possono lavorare contemporaneamente o più processi possono essere eseguiti nel medesimo tempo.

La CPU, però, può eseguire un'unica istruzione di un solo programma per volta; il lavoro contemporaneo su più programmi è solo apparente.

Il sistema operativo deve stabilire con un particolare algoritmo di schedulazione a quale programma assegnare la CPU di volta in volta.

Il modo più semplice è quello di assegnare la CPU in ordine ai programmi che l'hanno richiesta, dando la prcedenza al primo processo che ha effettuato una richiesta, poi al secondo e così via (tecnica FIFO, cioè di gestione di una coda). Un programma rilascia la CPU quando termina oppure quando si verifica un'interruzione; in tal caso viene riportato in fondo alla coda.

Altri metodi si possono basare su priorità assegnate ai programmi in modo statico (fissate per tutta la durata del programma), o in modo dinamico (variabili durante l'esecuzione in base al tempo di CPU utilizzato).

Schema dell'assegnazione dei programmi alla CPU

Schema dell'assegnazione dei programmi alla CPU

PROCESSI CPU BOUND E I/O BOUND

Vengono chiamati CPU bound i processi con poche operazioni di input/output, che utilizzano molto la CPU senza rilasciarla; al contrario vengono chiamati processi I/O bound quelli con molte operazioni di input/output, che quindi rilasciano spesso la CPU per attendere il completamento delle operazioni.

Un processo I/O bound rilascia spesso la CPU a favore degli altri processi in coda e può quindi godere di una priorità più alta senza allungare molto i tempi di risposta dei programmi a priorità più bassa.

LA GESTIONE DELLA MEMORIA

La memoria viene gestita da una routine del sistema operativo chiamata memory manager o gestore della memoria.

Gestire la memoria significa sapere quali zone di essa sono libere o occupate e decidere quale area assegnare a ogni programma che deve essere eseguito, facendo inoltre in modo da garantire che nessun programma possa invadere le zone assegnate agli altri programmi o al sistema operativo.

LE PARTIZIONI DELLA MEMORIA

Con il metodo delle partizioni la memoria viene suddivisa in parti, in ognuna delle quali può essere eseguito un programma.

Questa suddivisione può essere fatta dall'operatore al momento dell'accensione del sistema (partizioni statiche) o dal sistema operativo man mano che deve essere eseguito un programma (partizioni dinamiche).

Nel primo caso può restare molta memoria inutilizzata (se un programma di piccole dimensioni viene eseguito in una partizione molto ampia) o, al contrario, si può verificare che un programma non possa venire eseguito anche se c'è una partizione libera perchè è troppo grande rispetto alla memoria disponibile.

Il metodo delle partizioni dinamiche invece permette una maggiore efficienza; però, anche in questo caso, possono restare delle zone di memoria inutilizzate (problema della frammentazione della memoria).

Per recuperare le aree che rimangono libere tra un programma e l'altro si possono ricompattare tutti i programmi con il metodo della rilocazione.

LA PAGINAZIONE

La paginazione è un metodo di gestione della memoria che permette di caricare un programma in aree non contigue. Non serve quindi che ci sia un grosso spazio, ma è sufficiente che ve ne siano tanti piccoli che, sommati, danno un'area abbastanza grande per contenere il programma.

La memoria viene considerata suddivisa in parti di uguale dimensione (chiamate blocchi); ogni volta che si deve memorizzare un programma si occupano alcuni blocchi.

Il programma viene diviso in parti (chiamate pagine) della stessa dimensione dei blocchi di memoria.

Ogni pagina del programma viene memorizzata in un blocco di memoria; i blocchi di memoria utilizzati possono anche non essere in posizioni vicine.

Il sistema operativo mantiene continuamente aggiornate delle tabelle per sapere quali sono quelli liberi e per poter determinare quale blocco occupa ogni pagina di ciascun programma.

Per ogni programma viene creata una tabella (chiamata tabella di mappa di pagina) in cui al numero di ogni pagina del programma corrisponde l'indirizzo del blocco utilizzato per la memorizzazione.

LA MEMORIA VIRTUALE

Per memoria virtuale si intende la possibilità di usare molta più memoria di quella effettivamente disponibile; così si può mandare in esecuzione un programma anche se non c'è abbastanza memoria centrale libera per contenerlo.

Il trucco sta nell'utilizzare, per il programma in esecuzione, oltre alla memoria centrale anche una parte di quella di massa; è importante che la parte di programma che contiene le istruzioni in corso di esecuzione sia nella memoria centrale; il resto del programma rimane sul disco e viene portato in memoria centrale soltanto all'occorrenza, effettuando eventualmente degli scambi (swapping) tra memoria centrale e secondaria.

LA PAGINAZIONE DINAMICA

La paginazione dinamica è un metodo di gestione che utilizza la memoria virtuale.

Il programma è diviso in pagine, che devono essere memorizzate nei blocchi di memoria, ma che non devono essere tutte presenti contemporaneamente nella memoria centrale.

Le pagine che non vengono utilizzate possono rimanere sul disco finché non si deve eseguire un'istruzione contenuta in esse.

Quando serve una pagina che non è in memoria ma su disco, il sistema operativo deve provvedere a caricare la pagina in questione.

Se tutti i blocchi di memoria sono già occupati il sistema operativo deve provvedere a rimuovere una pagina per liberare un blocco. La scelta del blocco da liberare può essere fatta seguendo strategie diverse; si può eliminare la pagina che è presente in memoria da più tempo o utilizzare metodi di scelta più sofisticati che si basano sul tipo e sulla frequenza dei riferimenti che sono stati fatti alle pagine (per esempio possono essere scelte le pagine a cui non si accede frequentemente).

Gestione della memoria per paginazione

Gestione della memoria per paginazione

Spot

Spot

LA GESTIONE DELL'INPUT/OUTPUT TRAMITE RICHIESTA DI INTERRUZIONE

La gestione delle operazioni di input/output in genere sfrutta il meccanismo di gestione delle interruzioni.

La richiesta di un'operazione di input/output da parte del programma genera un'interruzione di tipo supervisor call; il controllo passa al sistema operativo che avvia l'operazione di input/output; in attesa del completamento dell'operazione la CPU viene assegnata a un altro processo e non resta quindi inattiva. Quando la periferica ha terminato l'operazione lo segnala con un'altra interruzione generata dall'hardware della periferica.

I CANALI

Il controllo delle operazioni di input/output può essere affidato a dei processori dedicati detti canali, che operano contemporaneamente alla CPU.

Il canale si occupa autonomamente di trasferire i dati e controllare i trasferimenti mentre la CPU può essere associata ad un altro processo.

Esistono canali (multiplexor) in grado di eseguire "contemporaneamente" più programmi: dopo aver avviato una periferica il canale può essere associato ad un'altra mentre la prima opera in modo autonomo.

[Figura: Gestione I/O tramite richiesta di interruzione. Se più programmi richiedono l'uso della stampante, a ognuno di essi viene associato un file su disco in cui vengono memorizzate di volta in volta le informazioni da stampare].

Gestione I/O tramite richiesta di interruzione

Gestione I/O tramite richiesta di interruzione

LE PERIFERICHE VIRTUALI

Le periferiche possono essere allocate in modo dedicato, cioè assegnate a un lavoro per tutta la sua durata, o in modo condiviso, cioè assegnando la periferica a più processi in modo dinamico per il tempo necessario ad effettuare una operazione di input/output.

Con l'allocazione dedicata la periferica rimane occupata durante l'intera esecuzione di un processo anche se viene utilizzata per piccoli intervalli di tempo; questo metodo risulta però necessario per periferiche che possono essere usate solo serialmente (come nastri o stampanti).

Per questo tipo di periferiche si può usare un metodo particolare (chiamato metodo a periferiche virtuali) che permette di simulare l'allocazione condivisa.

Un'operazione di input/output su una periferica virtuale non ha effetto realmente sulla periferica, ma agisce su un'area del disco che la simula (file di spool).

Per esempio, se più programmi richiedono l'uso della stampante, a ognuno di essi viene associato un file su disco in cui vengono memorizzate di volta in volta le informazioni da stampare. Solo quando un processo è terminato, il file di spool può essere mandato alla stampante e cancellato dal disco. Se la stampante è occupata, il file di stampa viene posto in una coda di stampa.

IL FILE SYSTEM

Il file system è il modulo del sistema operativo che si occupa della gestione delle informazioni. Il file system ha il compito di identificare e catalogare tutti i file presenti, gestire le operazioni su di essi, assegnare l'uso dei file ai programmi che li richiedono e gestire l'allocazione delle aree su disco per la loro creazione.

LE DIRECTORY

La directory è un file (memorizzato sul disco come qualsiasi altro file), il cui indirizzo è specificato nell'etichetta di volume, contenente un record descrittore per ogni file registrato sul disco.

Ogni descrittore contiene le informazioni necessarie per la gestione del file: nome e tipo di organizzazione, lunghezza e numero del record, informazioni per l'accesso ai record (indirizzo del primo blocco o elenco dei blocchi occupati, ecc.), informazioni relative alla protezione (tipo di accesso consentito, ecc.), data di creazione del file, data dell'ultima modifica, ecc.

La directory contiene anche un record per ciascuna area disponibile sul disco; la lunghezza del record in questo caso corrisponde a quella del blocco e il numero indica il numero di blocchi liberi contigui.

Spesso è possibile organizzare gerarchicamente le directory in una struttura ad albero. Esistono cioè più file directory e ogni descrittore può contenere il nome di un file o di un'altra directory (sottodirectory), partendo da una directory principale (directory radice).

Questa gestione risulta molto efficiente e agevola i meccanismi di ricerca di un file (poichè ogni directory ne contiene un numero limitato), permette di avere file con lo stesso nome in directory diverse e consente comunque di accedere ai file in qualsiasi directory.

ALLOCAZIONE DELLO SPAZIO SU DISCO

Lo spazio su disco può essere allocato per blocchi contigui, ma questo non è sicuramente il metodo più efficiente poichè crea diversi problemi.

In genere si preferiscono metodi che utilizzano blocchi in posizioni qualsiasi del disco, come l'allocazione a blocchi concatenati. I blocchi occupati da un file sono collegati tra loro in una lista concatenata, cioè in ogni blocco è presente un puntatore al blocco successivo.

Questo è il metodo utilizzato di solito per la memorizzazione dei file sequenziali; poichè per accedere a un blocco di un file bisogna scorrere tutti quelli che lo precedono, questo metodo non risulta però adatto ai file che devono permettere un accesso diretto.

Un altro metodo consiste nel creare per ogni file una tabella contenente la sequenza dei puntatori ai blocchi del file, che può essere memorizzata in uno o più blocchi (blocchi indice) concatenati tra loro.

Il sistema deve avere anche un metodo per riconoscere i blocchi liberi sul disco; un modo molto efficiente per gestire lo spazio disponibile è mediante la bit map, una sequenza di bit, uno per blocco, che indica se il blocco corrispondente è libero o occupato.

LE PROTEZIONI OFFERTE DAL FILE SYSTEM

Il file system offre diversi tipi di protezioni per i dati.

Innanzi tutto vi è la possibilità di associare a ciascun file una modalità di accesso che stabilisce quali siano le operazioni consentite.

Le modalità di accesso principali sono:

- ad accesso libero (sono consentite tutte le operazioni: lettura, scrittura, esecuzione),

- a sola lettura,

- a lettura/scrittura,

- a sola esecuzione.

Il controllo sull'accesso viene effettuato dal file system quando viene richiesta un'operazione sul file.

Un altro tipo di protezione è il controllo che il sistema operativo effettua per evitare che più programmi accedano contemporaneamente agli stessi dati causando problemi di aggiornamento.

Un record (o meglio un blocco, perchè è il blocco che è fisicamente interessato da un'operazione di input/output) può essere condiviso in fase di lettura, ma solo se non sono previste operazioni di aggiornamento.

Se un file è aperto anche in output l'accesso a un blocco letto da un programma viene impedito a un altro programma finché il blocco non viene rilasciato con un'istruzione di scrittura o con la lettura di un altro blocco dello stesso file.

Il file system può offrire qualche aiuto anche nella protezione contro guasti del disco. Per esempio, può riconoscere i blocchi difettosi del disco ed eliminarli dalla lista di quelli liberi.

Questi rimedi, però, servono solo nel caso di blocchi che non contengono informazioni. Se si guasta un blocco contenente dati, questi ultimi vengono persi; si può perdere un intero file se il blocco contiene il descrittore del file.

Struttura gerarchica di directory e file

Struttura gerarchica di directory e file

VALUTAZIONE DELL'EFFICIENZA DEI SISTEMI OPERATIVI

L'efficienza di un sistema operativo viene valutata in base alla quantità di programmi eseguiti in un certo tempo, in relazione alla potenza della configurazione hardware disponibile.

Un sistema operativo è più efficiente se, a parità di configurazione e prestazioni hardware, esegue un maggior numero di programmi in minor tempo.

Alcuni parametri per misurare l'efficienza di un sistema operativo sono:

- lo throughput, che misura la quantità di programmi svolti nell'unità di tempo (per esempio in un'ora). Dà una misura della velocità di lavoro;


              numero dei lavori serviti
throughput = ---------------------------
               tempo totale impiegato
- la percentuale del tempo in cui la CPU è stata occupata ad eseguire le istruzioni dei programmi, rispetto al tempo totale di completamento dei programmi. Dà una misura della quantità di tempo in cui la CPU rimane inattiva;

                     tempo di utilizzo della CPU
percentuale di CPU = ---------------------------
                            tempo totale
Con questo parametro l'efficienza di un sistema viene misurata in base al rapporto tra il tempo in cui la CPU sta lavorando sulle istruzioni di qualche processo e quello in cui la CPU è inattiva poiché non può essere assegnata a nessun processo.

Questo è un parametro di valutazione dell'attività complessiva del sistema; utilizzando metodi che aumentino la percentuale di utilizzo della CPU (come la multiprogrammazione) possono peggiorare le prestazioni di un singolo programma.

- l'overhead misura il tempo di CPU occupato per eseguire le routine del sistema operativo necessarie per gestire le risorse, a scapito dell'esecuzione delle istruzioni dei programmi utente.


           tempo di CPU utilizzato dal sistema operativo
overhead = ---------------------------------------------
                       tempo di CPU totale

Spot

Spot

LE SITUAZIONI DI STALLO

Più programmi possono richiedere contemporaneamente la stessa risorsa; si dice che i programmi sono in competizione per l'uso della risorsa.

Questo problema può portare a situazioni di stallo, in cui più programmi rimangono bloccati e nessuno può avanzare, perché le risorse che sarebbero necessarie per proseguire l'esecuzione sono già occupate e non possono venire rilasciate.

Per esempio, si può verificare uno stallo se un processo chiede una risorsa occupata da un altro e viceversa.

Per risolvere una situazione di stallo bisogna interrompere in qualche modo uno dei programmi che la causano, in modo che gli altri possano utilizzare le risorse che il programma teneva bloccate e proseguire.

Il programma può essere interrotto dall'operatore con un apposito comando del linguaggio di controllo oppure, nei sistemi più sofisticati, può essere il sistema operativo stesso a scegliere quale processo interrompere.

Schema della situazione di stallo

Schema della situazione di stallo

Spot

Spot

CpileMail_to_trapaninfo.itfw

gbm w3c ^up^

Web Trapanese eXTReMe Tracker

TP Comuni

Copyright (c) 2002 -   trapaninfo.it home disclaim

w

WhatsApp-Chat

Ultima modifica :