28
Accertamento dei prerequisiti 1 Che cosa indica la sigla Mbyte? a 1024 KByte b 1000 KByte c 1000 Byte d 1024 Byte 2 Per accedere a un’informazione in Memoria Centrale bisogna conoscere: a l’indirizzo della cella b il valore dell’informazione c l’indirizzo dell’istruzione d il valore del Program Counter 3 Definisci qual è il ciclo di esecuzione della CPU. 4 Che cos’è un registro? 5 Quale di queste sequenze ordina i seguenti dispositivi dal più veloce al più lento in termini di tempo di accesso? a DVD, Hard disk, RAM, cache b Hard disk, DVD, cache, RAM c cache, RAM, Hard disk, DVD d RAM, Hard disk, cache, DVD 6 Descrivi lo schema di von Neumann. 7 Un computer può funzionare anche senza Sistema Operativo. V F 8 In un processore, la velocità è data: a dal clock b dalla quantità di RAM c dalla grandezza dell’hard disk d nessuna delle precedenti 9 Quale tra i seguenti non è un SO? a UNIX b WINDOWS c OFFICE d LINUX I Sistemi Operativi Competenze Usare in modo consapevole un Sistema Operativo. Saper individuare le componenti coinvolte in un determinato processo. Conoscenze Conoscere l’importanza e il ruolo dei Sistemi Operativi. Conoscere la struttura e le componenti di un Sistema Operativo. Conoscere la classificazione e il funzionamento generale dei sistemi operativi. Conoscere la classificazione e i moduli di gestione delle risorse del sistema operativo. Conoscere le tecniche di gestione della CPU. Abilità Identificare e analizzare gli aspetti funzionali dei principali componenti di un sistema operativo. Scegliere il tipo di sistema operativo adeguato a un determinato ambiente di sviluppo. Applicare politiche di gestione delle varie risorse. Prerequisiti Conoscere la logica di funzionamento di un computer. Riconoscere le risorse hardware e software di un sistema di elaborazione. Conoscere la terminologia di base relativa a hardware e software. Sapere come si realizza un programma.

I Sistemi Operativi - simonepedrazzi.files.wordpress.com · I moderni Sistemi Operativi utilizzano interfacce sempre più amichevoli (user friendly), ma se ci dovessimo trovare in

Embed Size (px)

Citation preview

Accertamento dei prerequisiti

1 Che cosa indica la sigla Mbyte?a 1024 KByteb 1000 KBytec 1000 Byted 1024 Byte

2 Per accedere a un’informazione in Memoria Centrale bisogna conoscere:

a l’indirizzo della cella b il valore dell’informazione c l’indirizzo dell’istruzioned il valore del Program Counter

3 Definisci qual è il ciclo di esecuzione della CPU.4 Che cos’è un registro?5 Quale di queste sequenze ordina i seguenti

dispositivi dal più veloce al più lento in termini di tempo di accesso?

a DVD, Hard disk, RAM, cache

b Hard disk, DVD, cache, RAMc cache, RAM, Hard disk, DVDd RAM, Hard disk, cache, DVD

6 Descrivi lo schema di von Neumann.

7 Un computer può funzionare anche senza Sistema Operativo. V F

8 In un processore, la velocità è data: a dal clock b dalla quantità di RAM c dalla grandezza dell’hard disk d nessuna delle precedenti

9 Quale tra i seguenti non è un SO? a UNIX

b WINDOWS

c OFFICE

d LINUX

I Sistemi Operativi

Competenze

Usare in modo consapevole un Sistema Operativo.Saper individuare le componenti coinvolte in un determinato processo.

Conoscenze

Conoscere l’importanza e il ruolo dei Sistemi Operativi. Conoscere la struttura e le componenti di un Sistema Operativo. Conoscere la classificazione e il funzionamento generale dei sistemi operativi. Conoscere la classificazione e i moduli di gestione delle risorse del sistema operativo. Conoscere le tecniche di gestione della CPU.

Abilità

Identificare e analizzare gli aspetti funzionali dei principali componenti di un sistema operativo. Scegliere il tipo di sistema operativo adeguato a un determinato ambiente di sviluppo. Applicare politiche di gestione delle varie risorse.

Prerequisiti

Conoscere la logica di funzionamento di un computer. Riconoscere le risorse hardware e software di un sistema di elaborazione. Conoscere la terminologia di base relativa a hardware e software. Sapere come si realizza un programma.

I Sistemi Operativi

l Che cos’è un Sistema OperativoIl Sistema Operativo (operating system) è un insieme di programmi che governa e controlla l’uso delle componenti del sistema di elaborazione permettendo all’utente un utilizzo trasparente ed efficace delle risorse disponibili.

Con il termine risorsa si intende un elemento che può essere hardware (CPU, memoria centrale) o software (dati, programmi).

Molti studenti avranno già fruito dei servizi messi a disposizione dai Sistemi Operativi attualmente più diffusi su PC (Windows, Linux). Tramite questi Sistemi Operativi essi hanno potuto utilizzare le varie componenti hardware del sistema senza averne una cono-scenza approfondita. Infatti è stato possibile caricare in memoria centrale il programma da eseguire, attivare la CPU, richiedere la lettura di un dato memorizzato su memoria di massa, effettuare delle stampe. È il Sistema Operativo che si preoccupa di effettuare queste operazioni, frapponendosi tra la richiesta dell’utente e l’hardware della macchina (figura 1).

Non sempre l’utente conosce l’hardware della stampante, ma conosce i comandi specifici per farla lavorare: può non sapere se si tratta di una stampante ad aghi oppure una laser, se lavora in rete o in locale, ma sa che per stampare il contenuto di un file basta dare un comando al sistema.

l Gestione delle risorseUn’altra funzione del Sistema Operativo è quella di ripartire una risorsa che è fisicamente limitata (una sola CPU, la memoria centrale che ha una dimensione ben definita) fra le tante richieste possibili. Queste funzioni sono espletate tramite le politiche di gestione che defini-scono le norme scelte per una gestione razionale delle risorse.

Organizzazione dei Sistemi Operativilezione

1

!

Utente 1

Hardware

Sistema Operativo

Programmi applicativi

Utente 3 Utente 4Utente 2

figura 1 Il programma applicativo dell’utente può accedere all’hardware con l’aiuto del Sistema Operativo

Lezione 1 Organizzazione dei Sistemi Operativi

Questo semplice esempio aiuterà a comprendere meglio il problema.

l Le funzioniRicapitolando possiamo affermare che un Sistema Operativo:• funzionacomeinterfacciatral’utenteel’hardwaredellamacchinainmodochel’utente

non debba interagire direttamente con l’elaboratore;• gestiscelerisorsedelsistema(CPU, memoria centrale, periferiche, informazioni) rispettan-

do le politiche di gestione (figura 2).

l L’interfaccia o shellUn moderno Sistema Operativo è quindi in grado di gestire migliaia di tipi diversi di hardware, presentando sempre la stessa interfaccia agli applicativi, ultimamente in modo sempre più semplice ed efficiente. L’interfaccia è quella parte del SO che permette all’utente di utilizzare il computer, cioè di richiederne i servizi.

Hardware

GestioneGestioneGestionememoriacentrale

GestioneCPU

SISTEMA OPERATIVO

PROGRAMMI APPLICATIVI

informazioniperiferiche

figura 2 Il Sistema Operativo come gestore di risorse

esempio

L’insegnante possiede un libro che vuole regalare a uno studente della classe. Deve decidere quale sarà la regola da seguire avendo una risorsa limitata (un solo libro) ma tante richieste (gli studenti della classe). Una regola per ripartire la risorsa potrebbe essere:

• regalareillibroallostudentepiùbravo oppure• regalareillibroallostudentepiùbravoininformatica oppure• regalareillibroallostudentepiùbisognoso.

Scegliendo, fra quelle possibili, la regola che può risolvere meglio il problema (politica di gestione), tutte le volte che ci si troverà in quella situazione, seguendo la regola, si risolverà il problema.

I Sistemi Operativi

Le interfacce dei Sistemi Operativi possono avere caratteristiche molto diverse, anche se il loro compito rimane sempre quello di identificare la richiesta effettuata dall’utente nonché gli eventuali parametri a essa associati. Si possono distinguere tre approcci possibili basati, rispettivamente, sull’uso di menu, comandi e icone.

Le interfacce inizialmente più utilizzate sono state quelle a linea di comando, che presenta-no una linea evidenziata da un prompt, in cui si dovevano digitare i comandi del linguaggio di controllo dello specifico linguaggio, come nel caso del DOS.

I comandi hanno una loro sintassi ben definita che viene usata da un modulo del Sistema Operativo chiamato interprete dei comandi; tale modulo analizza ogni comando ed esegue le azioni richieste (figura 3).

Nelle interfacce basate sull’uso di menu, l’utente non deve ricordare i nomi dei diversi pro-grammi che intende eseguire poiché ogni menu che appare sullo schermo include un elenco di funzioni (o classi di funzioni) eseguibili e, per ognuna di esse, viene fornita una breve descrizione nonché il nome del tasto da premere per richiederne l’esecuzione.

Attualmente le interfacce più diffuse sono quelle grafiche, le GUI (Grafichs User Interface), molto semplici e particolarmente adatte per utenti inesperti. Esse sfruttano la metafora del desktop, cioè della scrivania, su cui compaiono applicativi e programmi di uso frequente. Grazie al mouse si possono utilizzare icone, che rappresentano gli oggetti più comuni come: applicazioni, il cestino ecc.; barre degli strumenti: contenenti serie di pulsanti per eseguire in modo rapido alcune operazioni; finestre che contengono applicazioni o docu-menti e finestre di dialogo per consentire all’utente di seguire percorsi guidati e interagire con una determinata procedura.

Il primo Sistema Operativo commerciale con interfaccia grafica è stato messo a punto per i personal computer Macintosh della Apple negli anni Ottanta.Oggi le interfacce grafiche sono diventate uno standard per i Sistemi Operativi dei personal computer e sono molto utilizzate, oltre che nei Sistemi Operativi MacOS della Apple, anche in quelli di tipo Unix e in quelli della famiglia Microsoft Windows.

figura 3 Sistema Operativo DOS

verifica le tue conoscenze

1 Che cos’è un Sistema Operativo?

2 In che senso un Sistema Operativo gestisce le risorse?

3 Spiega la differenza tra un’interfaccia a linea di comando e a menu.

4 Descrivi gli elementi caratteristici di una GUI. Su quale metafora si basano?

Lezione 1 Organizzazione dei Sistemi Operativi

figura 5 Sistema Operativo Linux

figura 4 Sistema Operativo Windows

I moderni Sistemi Operativi utilizzano interfacce sempre più amichevoli (user friendly), ma se ci dovessimo trovare in difficoltà potremmo sempre consultare la guida in linea, che ci darà indicazioni sulle principali procedure e comandi (figura 4 e figura 5).

I Sistemi Operativi

lezione

2 Struttura e funzionamento di un Sistema Operativo

l Macchine virtualiCome abbiamo visto nella Lezione precedente la presenza del Sistema Operativo rende più semplice lavorare con il calcolatore in quanto fornisce un’immagine astratta di tutte le risorse disponibili, indipen-dentemente da come queste funzionino. L’utente lavora con una mac-china “virtuale” molto più semplice da gestire, formata da hardware più Sistema Operativo (figura 1).I programmi che compongono il Sistema Operativo sono suddivisi in livelli di tipo gerarchico. I moduli del livello più basso si appoggiano direttamente sull’hardware dell’elaboratore e costituiscono la più sem-plice macchina virtuale. I moduli di livello più alto possono richiamare solo moduli definiti nei livelli inferiori: così i moduli dei livelli superiori non colloquiano con l’hardware bensì con la macchina virtuale definita nel livello più basso.

Questo significa che macchine costruite su unità centrali diverse non possono avere gli stessi moduli del livello più basso.Con riferimento a una situazione come quella illustrata in figura 2 si può notare come la sostituzione dei moduli M1 e M2 sia sufficiente per far sì che il sistema possa essere portato su altre macchine. Infatti M3, M4 e M5 non vedono direttamente l’hardware e non risentono quindi del fatto che è cambiato. Essi faranno riferimento ai nuovi moduli M1 e M2 e non devono perciò essere modificati.

l PortabilitàIl grado di portabilità di un Sistema Operativo indica quindi la possibilità di utilizzare il Sistema Operativo su macchine con hardware diverso. Esso è tanto maggiore quanto mino-re è il costo delle modifiche necessarie.Se il Sistema Operativo è modulare i costi che si devono sostenere per spostarlo da una macchina all’altra sono contenuti perché è sufficiente modificare solo i moduli che interagi-scono con l’hardware, in questo caso il grado di portabilità è tanto maggiore quanto minore è il costo delle modifiche da apportare.

l Struttura e modalità di funzionamentoLa struttura del Sistema Operativo è basata sulle macchine virtuali, generate a partire dall’hardware e soddisfacenti i seguenti requisiti:• risolvereilproblemadell’utilizzodellevarierisorsedapartedeimodulideilivellisuperiori;• moltiplicareilnumerodeidispositividisponibiliinmododasoddisfarepiùrichiestedi

quelle che il sistema potrebbe soddisfare.

Il Sistema Operativo può quindi essere suddiviso in livelli in modo che ogni livello possa solo utilizzare per la sua esecuzione tutte le risorse disponibili nei livelli più interni. Questo modello, detto modello a buccia di cipolla (figura 3), rappresenta il SO come una serie di strati costruiti sopra l’hardware, costituenti ciascuno un modulo.

SISTEMA OPERATIVO

HARDWARE

figura 1 Macchina virtuale

HARDWARE

M1

M3 M4 M5

M2

figura 2 Moduli del SO

Lezione 2 Struttura e funzionamento di un Sistema Operativo

Partendo dall’interno e andando verso l’esterno possiamo individuare, per il Sistema Operativo i seguenti livelli:1. il nucleo;2. il gestore della memoria;3. il gestore delle periferiche;4. il gestore delle informazioni.

Il nucleo contiene le procedure di gestione della CPU e i programmi di risposta alle interru-zioni. Esso è quello più strettamente vicino alla macchina e dipende quindi dall’hardware. Il gestore della memoria contiene tutte le routine per gestire l’organizzazione della memo-ria centrale e operare sui singoli indirizzi delle celle di memoria.Il gestore delle periferiche contiene tutti i programmi per gestire le singole periferiche e assegnare i vari dispositivi ai singoli processi che li richiedono in base a una specifica politica di schedulazione.Il gestore delle informazioni contiene i programmi di gestione dei file, il file system, che permettono all’utente di non preoccuparsi delle problematiche della reale allocazione dei file su supporto magnetico.

l CaricamentoEsistono molti tipi di Sistemi Operativi che hanno differenti caratteristiche e funzioni: in ogni caso le routine che li costituiscono sono programmi eseguibili dalla CPU e come tali devono essere allocati in memoria centrale (zona dati e zona istruzioni).Non tutti i programmi che costituiscono il Sistema Operativo possono risiedere contempo-raneamente in memoria centrale perché ne occuperebbero troppa a danno dei programmi applicativi: solo il nucleo o kernel del Sistema Operativo (e cioè quei programmi che sono indispensabili per il funzionamento della macchina) è sempre residente in memoria centra-le; gli altri moduli risiedono normalmente in memoria di massa e sono portati in memoria centrale al momento del loro utilizzo. Ogni volta che si accende il computer il nucleo del SO viene caricato, mediante il bootstrap, in memoria RAM.Il bootstrap serve per la partenza iniziale del sistema: quando si avvia il sistema la CPU ese-gue il programma di bootstrap che ha il compito di controllare il funzionamento delle varie componenti e di caricare dalla memoria di massa alla memoria centrale un altro programma detto IPL (Initial Program Loading). L’IPL carica in memoria centrale il nucleo del Sistema Operativo, cioè quella parte che deve sempre risiedere nella memoria centrale, e provvede inoltre a inizializzare tutte le strutture dati necessarie ai moduli del Sistema Operativo. Terminate queste operazioni il sistema si pone in attesa di comandi da parte degli utenti.

HARDWARE

livello 4

livello 3livello 2livello 1

nucleogestione memoria centrale

gestione periferichegestione informazioni

programmi di spool, editor, compilatori....

programmi utente

figura 3 Modello a buccia di cipolla

I Sistemi Operativi

l Le varie tipologieEsistono molti tipi di sistemi operativi che hanno differenti caratteristiche e funzioni: in ogni caso le routine che li costituiscono sono programmi eseguibili dalla CPU e come tali devono essere allocati in memoria centrale (zona dati e zona istruzioni).Non tutti i programmi che costituiscono il sistema operativo possono risiedere contempo-raneamente in memoria centrale perché ne occuperebbero troppa a danno dei programmi applicativi: solo il nucleo del sistema operativo (ossia quei programmi che sono indispensa-bili per il funzionamento della macchina) è sempre residente in memoria centrale; gli altri moduli risiedono normalmente in memoria di massa e sono portati in memoria centrale al momento del loro utilizzo.Esistono vari modi per classificare i sistemi operativi basati su diverse caratteristiche.

l Elaborazione a lotti (batch)Nell’elaborazione a lotti, i dati necessari all’elaborazione sono accumulati in una memoria ausiliaria durante un certo periodo di tempo: a una scadenza prefissata vengono elaborati tutti insieme (in un unico lotto) dai programmi applicativi (figura 1).

Per esempio la procedura che fornisce la stampa del cedolino paga di un dipendente preve-de un’elaborazione di questo tipo: i dati di input (ore di straordinario, giorni di ferie, per-messi) sono raccolti durante il periodo e sono poi elaborati tutti insieme alla fine del mese.I dati devono essere disponibili fin dall’inizio dell’elaborazione perché non si ha la possibi-lità di interagire con il programma durante la sua esecuzione. Proprio per questo non tutte le applicazioni sono adatte a questo tipo di elaborazione.

l Elaborazione interattivaL’elaborazione interattiva permette di colloquiare con il programma in esecuzione, influen-zando quindi l’elaborazione stessa; i dati in ingresso vengono elaborati non appena si ren-dono disponibili, fornendo subito i risultati.Questo tipo di elaborazione è stato reso possibile grazie all’impiego di terminali attraverso cui l’utente può colloquiare con l’unità centrale, inviando dati e comandi e ricevendo, entro breve tempo, risposte, risultati, messaggi.L’uso dei terminali consente all’utente di lavorare dal proprio posto di lavoro, come se l’uni-tà centrale fosse solo a sua disposizione: in realtà più utenti vengono serviti ripartendo fra

lezione

3 Tipi di Sistemi Operativi

dato 2

Raccolta dati

Elaboratore

Elaborazione

Output

Risultati

dato 1

figura 1 Sistema di elaborazione a lotti

di loro le risorse del sistema. Per gestire il colloquio tra CPU e terminali, il sistema operativo è dotato di opportune routine che prevedono l’interrogazione ciclica dei terminali: a turno essi potranno inviare o ricevere messaggi (figura 2).Procedure contabili, programmi per il calcolo degli stipendi e tutte le procedure a carattere periodico vengono realizzate con metodologie a lotti, mentre per procedure in cui è importan-te la tempestività dell’aggiornamento, come la gestione di un conto corrente bancario o la prenotazione dei voli, è preferibile la metodologia interattiva.Attualmente tutti i sistemi operativi prevedono entrambi i tipi di elaborazione, mentre in passato era possibile solamente l’elaborazione di tipo batch.

l Sistemi in multiprogrammazioneI sistemi operativi operano generalmente in multiprogrammazione, permettendo cioè di allocare piùprogrammiutenteinmemoriacentraleediripartirefraquestil’usodellerisorse(figura 3).

Quando un programma che impiega la CPU richiede un’operazione di I/O, cioè l’uso di una periferica (disco, stampante ecc.), l’elaborazione viene sospesa in attesa che termini l’I/O. Il processore, invece di atten-dere inattivo la fine dell’operazione, viene assegnato a un altro lavoro.L’esecuzione del programma sospeso (quando sarà terminata l’operazio-ne di I/O) potrà riprendere in un secondo momento quando il lavoro successivo è terminato o richiede anch’esso un’operazione di I/O.Dall’esterno si ha l’impressione che più programmi vengano eseguiti contemporaneamente: in realtà, essendoci una sola CPU, un solo pro-gramma utente risulta in esecuzione in un certo momento.Nella figura 4 è illustrato il grafico dell’utilizzo della CPU rispetto al tempo in un sistema monoprogrammato e nella figura 5 in un sistema multiprogrammato.

Lezione 3 Tipi di Sistemi Operativi

CPU

figura 2 Sistema interattivo

!

figura 3 Struttura della memoria centrale in un sistema in multiprogrammazione

Sistemaoperativo

Programma 1

Programma 2

Programma 3

Impiegoperiferica

Impiegoperiferica

Lanc

io P

1 TempoI/O

I/O

Fine

I/O

figura 4 Grafico dell’utilizzo della CPU in monoprogrammazione

Lanc

io P

1 Tempo

I/O

P1

I/O

P1

Fine

I/O

P1

Lanc

io P

2

I/O

P2

Fine

I/O

P2

I/O

P2

Fine

I/O

P1

I/O

P1

figura 5 Grafico dell’utilizzo della CPU in multiprogrammazione

I Sistemi Operativi

Per rendere indipendente la CPU dall’attività di ingresso e uscita dei dati, e quindi di fatto per poter realizzare la multiprogrammazione, sono stati introdotti gli elaboratori di canale che sono piccoli elaboratori in grado di eseguire le operazioni di trasferimento dei dati fra la memoria centrale e le periferiche e viceversa.Nel momento in cui il programma in esecuzione richiede un’operazione di I/O, la CPU av-verte l’elaboratore di canale che è necessaria la sua collaborazione e, mentre il canale esegue l’operazione richiesta, la CPU è libera di essere assegnata a un altro programma che già si trova in memoria centrale.Un particolare caso di multiprogrammazione è il multitasking: attualmente diffuso in tutti i sistemi operativi, esso permette al sistema di elaborare più applicazioni (chiamate appunto task) contemporaneamente.

l Sistemi in time-sharingLa soluzione di un sistema operativo in multiprogrammazione presenta ancora un inconve-niente: infatti se un programma non ha richieste di I/O monopolizza la CPU a danno degli altri che restano in attesa. Per ovviare a questo e per migliorare l’efficienza del sistema è stato introdotto il concetto di “quanto” temporale (o time slice), cioè un periodo di tempo durante il quale la CPU lavora per un programma. Scaduto tale periodo, anche se l’esecu-zione del programma non è terminata o se il programma non ha richiesto operazioni di I/O, la sua esecuzione viene sospesa a vantaggio di un altro programma in attesa di esecuzione.

Quindi se la CPU è gestita in time-sharing essa rimane assegnata a un programma finché:• ilprogrammatermina;• ilprogrammarichiedeun’operazionediI/O;• scadeiltimeslice.

Appena si verifica uno di questi eventi il controllo passa al sistema operativo che decide a quale, tra i programmi che si trovano in memoria centrale, spetta il prossimo time slice.

l Sistemi distribuitiSono quei sistemi in cui più CPU sono connesse tra loro (nodi del sistema) e cooperano nel raggiungimento di obiettivi comuni; ogni nodo aumenta le capacità di calcolo globale del sistema e ciò li contraddistingue dai SO multiprogrammati. Il SO non deve soltanto coordinare l’azione delle CPU ma deve anche integrarne le capacità di calcolo, per esempio un processo potrebbe essere in esecuzione su più CPU.Un SO di questo tipo deve fare in modo che ogni utente possa connettersi a una parte qualsiasi del sistema nello stesso modo, come se tutto fosse immediatamente disponibile. I SO distribuiti presentano alcuni vantaggi, quali:• condivisione delle risorse: come per esempio la stampante di un laboratorio;• velocità di calcolo: può essere distribuita tra le varie postazioni di un sistema;• affidabilità: se una postazione si guasta le altre postazioni possono farsi carico del suo

lavoro;• comunicazione: più postazioni collegate tra di loro possono facilmente scambiarsi

informazioni.

l Sistemi realtimeSono sistemi caratteristici delle applicazioni industriali in cui l’avanzamento dei processi è determinato dagli eventi esterni che determinano l’uso e l’utilizzo della CPU. In essi deve essere ben gestita tutta la parte riguardante le interruzioni e l’I/O, mentre meno importanza è data alla gestione della memoria, infatti i programmi devono essere sempre presenti in memoria centrale.

Lezione 3 Tipi di Sistemi Operativi

Sono molto importanti i brevi tempi di risposta. In particolare si parla di tempo reale stretto per i processi industriali e di tempo reale debole per le prenotazione di voli aerei.

l Sistemi dedicati e transazionali I primi sono utilizzati per i sistemi di elaborazione che devono effettuare delle azioni ripe-titive, come per esempio nei controlli di processi industriali.I secondi sono sistemi interattivi che consentono solo l’accesso e la modifica di archivi didati, come per esempio per le applicazioni bancarie.

l Prestazioni di un sistema operativoIl sistema operativo è costituito da moduli (che compongono il software di base) che devo-no essere eseguiti dalla CPU proprio come i programmi degli utenti (software applicativo).La CPU deve allora lavorare anche per quell’utente tanto esigente che è il sistema operativo,per cui ogni sofisticazione del sistema operativo comporta un maggior lavoro da parte dellaCPU. Un sistema operativo è tanto più efficiente quanto, a parità di configurazione hardwa-re, servirà il maggior numero di programmi nel minor tempo.Analizziamo ora alcuni parametri che possono dare una valutazione sull’efficienza di un sistema operativo.Attività della CPU (%CPU): indica, in percentuale, il tempo di utilizzo della CPU in rapporto al tempo di lavoro di tutto il sistema.

• Tcpu= Tempo di lavoro della CPU

• %CPU= Tcpu

Ttotale

• Ttotale= Tempo I/O + Tcpu

Throughput: indica la produttività del sistema, in quanto misura il lavoro che il sistemasvolge:

•N= numero di programmi utente

•throughput=N

Ttotale

•Ttotale=TempoI/O+ Tcpu

Per garantire l’efficienza del sistema operativo è necessario massimizzare i due parametri e invece minimizzare il rapporto tra il tempo speso dalla CPU per eseguire programmi di sistema operativo rispetto al tempo di lavoro totale della CPU, quindi:

Tcpu di SO

Tcpu totale

È necessario evitare che il sistema cada in system overhead, situazione nella quale la percen-tuale di utilizzo della CPU per eseguire programmi di sistema è troppo alta rispetto a uella dedicata all’elaborazione dei programmi utente.

1 Che parte del sistema operativo risiede in memoria centrale?

2 Perché si continuano a usare le elaborazioni a lotti?

3 Un sistema in time-sharing può essere multiprogrammato?

4 Che differenza c’è tra monoprogrammazione e multiprogrammazione?

5 Perché è stato introdotto il time-sharing?

6 Descrivi gli elementi caratteristici di un sistema realtime.

verifica le tue conoscenze

I Sistemi Operativi

l La CPULa componente principale dell’elaboratore, e anche la più costosa, è la CPU (Central Pro-cessing Unit). Tutti i programmi hanno bisogno della CPU per essere eseguiti, ma questa è unica e quindi viene “contesa” dai vari processi in esecuzione. Riveste allora particolare importanza quella parte del sistema operativo che si occupa dell’assegnazione della CPU ai singoli lavori che ne richiedono l’uso.

Le funzioni che questi moduli devono svolgere sono:• mantenereaggiornatolostatodelprocessore(libero/occupato);• decidereaqualeprocessoassegnareilprocessorequandosenepresentilanecessità;• assegnareilprocessorealprocessoscelto;• riprendereilcontrollodelprocessorequandoilprocessoèterminatoosospeso.

Prima di procedere chiariamo meglio alcuni termini che spesso, e a torto, vengono usati come sinonimi.

La ricetta di cucina descritta nel ricettario è un programma che diverrà processo quando, assegnate tutte le risorse (sono a disposizione tutti gli ingredienti), sarà effettivamente ese-guita dal processore (il cuoco).

l Gestire i processiLa gestione dei processi è affidata a quei moduli del sistema operativo (SO) che formano il nucleo (kernel) e che sono sempre residenti in memoria centrale.Fanno parte del nucleo:• schedulatoredeilavori;• schedulatoredeiprocessi;• controlloredeltraffico;• gestoredelleinterruzioni;• proceduredisincronizzazioneecomunicazionetrapiùprocessinecessarieperloscam-

bio di dati e informazioni.

Un lavoro che deve essere eseguito può trovarsi, in ogni istante, in uno “stato”, cioè in una condizione particolare determinata dalle esigenze del lavoro stesso e dallo stato globale del sistema (cioè le altre componenti hardware e software).Proviamo a considerare come esempio di lavoro che deve essere svolto quello di effettuare un viaggio in aereo. Lo stato indica la situazione in cui si trova il passeggero ed è determi-nato non solo dalle esigenze del passeggero, ma anche dalle condizioni esterne: per esempio si trova all’aeroporto in attesa dell’imbarco e l’aereo può essere pronto oppure deve ancora arrivare ed è in ritardo, oppure è in volo, oppure ancora si trova in un aeroporto di transito per uno scalo o, finalmente, è arrivato a destinazione.

Ogni stato corrisponde a una situazione in cui si trova il programma da eseguire (è in esecuzione, è in attesa della stampante ecc.): il passaggio da uno stato all’altro è deciso dal sistema operativo sulla base delle politiche di schedulazione.A ogni passaggio corrisponde una transazione che è effettuata tramite l’esecuzione di uno spe-cifico programma del sistema operativo (controllore del traffico).

lezione

4 Gestione della CPU

!

Programma

È un insieme statico di istruzioni, cioè un’entità passiva, che descrive le azioni da compiere.

Processo La nozione di processo, o task è emersa all’inizio degli anni ‘60 insieme allo sviluppo dei primi si-stemi multitasking; è un’entità attiva che rappresenta l’esecuzione delle azioni specificate dal programma; un processo in esecuzione avanza il proprio stato. Il processo è il lavoro, o job, associato alla risorsa che ha richiesto e rappresenta l’evoluzione dinamica di un programma. Pertanto un processo è un programma dotato del suo codice, dati, stack, program counter, un suo stato e molte altre eventuali informazioni.

l Stati di un processoUn lavoro può trovarsi in uno dei seguenti stati:• hold: il lavoro è stato proposto al sistema. Esso è in attesa di esecuzione e si trova in

memoria di massa;• ready: il programma è diventato processo e si trova in memoria centrale, pronto per

essere eseguito;• run: il processo è in esecuzione (ricordiamo che in ogni istante un solo processo si trova

in questo stato);• wait: il processo è in attesa (per esempio deve attendere la fine di un’operazione di I/O);• end: il processo è terminato.

A ogni stato è associata una lista che contiene l’elenco di tutti i processi che si trovano in quel particolare stato in quel momento.La figura 1 illustra il diagramma di stato di un programma.

Per meglio capire gli stati in cui può trovarsi un processo seguiamone la storia, dal momen-to in cui il lavoro è proposto al sistema a quello in cui termina la sua esecuzione.Quando un lavoro è stato proposto al sistema si trova nello stato di hold: al momento op-portuno un programma del sistema operativo (schedulatore dei lavori) dovrà scegliere, tra tutti i programmi che si trovano in questo stato, quale portare in memoria centrale (stato di ready – transizione 1: hold-ready). Per poter compiere queste operazioni lo schedulatore accede alla lista di hold che contiene un JCB (Job Control Block) per ogni programma in questo stato. Generalmente un JCB contiene:• l’identificativodelprogramma;• l’occupazioneespressainKbyte;• l’indirizzodicaricamentosumemoriadimassa;• gliidentificatoridelleperiferiche;• ilpuntatorealJCBsuccessivo.

Una volta individuato il programma da caricare, un altro modulo del sistema operativo (controllore del traffico) elimina il suo JCB dalla lista di hold e inserisce un nuovo PCB (Process Control Block) nella lista di ready.

Lezione 4 Gestione della CPU

HOLD READY

WAIT

END1

2

4

6

3

5

RUN

figura 1 Diagramma di stato di un programma

I Sistemi Operativi

Nella figura 2 si ha la lista di hold e di ready con alcuni processi. Se lo schedulatore sceglie il processo A dalla coda di hold per farlo passare in quella di ready, il controllore del traffico provvederà a creare una situazione come quella della figura 3.

Generalmente un PCB contiene: • lostatoincuisitrovailprocesso(run,ready,wait);• l’identificatoredelprocesso;• ilregistrodisalvataggio;• l’indirizzodicaricamentoinmemoriacentrale;• gliidentificatoridelleperiferiche;• fileaperti;• ilpuntatorealPCBsuccessivo.

Quando la CPU è libera, lo schedulatore dei processi sceglie quale, fra i processi che si trovano nello stato di ready, mandare in esecuzione assegnandogli la CPU (transizione 2: ready-run).Questa volta il controllore del traffico deve modificare lo stato contenuto nel PCB del pro-cesso portandolo in run.Quando il processo è in esecuzione si possono verificare alcuni eventi che portano a liberare il processore. Questi eventi sono:1. terminazione del processo in esecuzione;2. scadenza time slice;3. richiesta di operazione di I/O.

1. Quando viene eseguita l’istruzione di fine, il processo passa nello stato di end (transi-zione 6: run-end). Per il SO questo processo non esiste più e quindi deve provvedere a eliminare il suo PCB e a dichiarare libera la memoria centrale che occupava.

2. Se durante l’esecuzione viene esaurito il quanto temporale, il processo che era in ese-cuzione deve liberare il processore. Lo stato contenuto nel PCB viene portato in ready (transizione 4: run-ready).

3. Se durante l’esecuzione il processo richiede un’operazione di I/O, esso viene portato nel-lo stato di wait perché per proseguire deve aspettare la fine dell’operazione (transizione 3: run-wait). Solo quando questa operazione è terminata il processo potrebbe tornare nello stato di run, ma poiché la CPU potrebbe essere occupata con un altro processo, esso dovrà prima ritornare nello stato di ready (transizione 5: wait-ready).

1° elemento

1° elemento

lista HOLD

lista READY

B C

H L M A

1° elemento

1° elemento

lista HOLD

lista READY

A B C

H L M

figura 2 Lista di HOLD e READy

1° elemento

1° elemento

lista HOLD

lista READY

B C

H L M A

1° elemento

1° elemento

lista HOLD

lista READY

A B C

H L M

figura 4 Passaggio di un processo dalla lista di HOLD a quella di READy

verifica le tue conoscenze

1 Che differenza c’è tra programma e processo?

2 Quali sono gli stati in cui può trovarsi un processo?

3 Un processo può passare da “wait” a “run”?

4 Che cosa si intende per politica di schedulazione?

l Politiche di schedulazioneAbbiamo visto che uno dei compiti principali del SO è quello di assegnare una risorsa a un processo e sappiamo che questo avviene seguendo l’opportuna politica di schedulazione definita dallo schedulatore dei lavori e dallo schedulatore dei processi.Lo schedulatore dei lavori deve individuare quale lavoro può avanzare nello stato di ready tra tutti quelli presenti nella lista dei lavori in stato di hold.Prima di tutto bisogna verificare che siano disponibili tutte le risorse che devono essere as-segnate al lavoro e in particolare, attraverso il gestore della memoria, deve essere controllata la disponibilità di spazio in memoria centrale. Tra tutti i lavori che hanno queste caratteri-stiche bisognerà effettuare una scelta e a questo scopo sono state definite diverse politiche:• FIFO: i lavori sono ordinati nella lista in ordine di arrivo. Il primo lavoro inserito nella

lista sarà il primo a passare dallo stato di hold allo stato di ready. È una politica molto semplice da gestire, ma non permette una reale ottimizzazione delle risorse;

• priorità statica: a ogni lavoro è assegnato un valore (priorità) che indica il livello di importanza del lavoro. La priorità è memorizzata nel JCB di ciascun lavoro e può essere assegnata dal responsabile del centro che conosce le esigenze delle varie applicazioni. Lo schedulatore dei lavori sceglierà allora il lavoro che ha la priorità maggiore: tra quelli con pari priorità potrà essere usata la politica FIFO;

• priorità dinamica: affinché non ci siano lavori che permangono troppo tempo in coda perché ce ne sono altri con priorità maggiore, il sistema operativo aumenta il valore della priorità in funzione del tempo di permanenza del lavoro in coda. Per poter attuare questa politica è necessario inserire nel JCB un’informazione che indichi il momento di inserimento del descrittore nella lista, cioè il tempo in cui è stata richiesta l’esecuzione del programma.

Lo schedulatore dei processi si occupa di assegnare la CPU a un processo, cioè deve decidere a quale processo in stato di ready assegnare il processore; esso è in grado di compiere questa funzione secondo politiche differenti.La più utilizzata è il round robin dove il processore viene assegnato a turno, per un inter-vallo di tempo stabilito, ai processi nell’ordine in cui questi ne hanno fatto richiesta. La coda è gestita con il metodo FIFO e quindi tutti gli inserimenti provenienti dalla coda di hold, dalla coda di wait o quelli causati dall’esaurimento di un time slice avvengono al fondo (figura 4).

Lezione 4 Gestione della CPU

End

WaitLista dei processi

Arrivi dallo stato di hold

Arrivi dallo stato di wait

Lavori che necessitano altri time slice

CPU

figura 4 Round robin

I Sistemi Operativi

l Gestire la memoriaUn programma, prima di essere eseguito, deve essere caricato nella memoria centrale: gli deve cioè essere assegnata una certa quantità di byte di memoria centrale in grado di conte-nere la sua zona dati (le variabili) e la sua zona istruzioni (scritte in linguaggio macchina).

Per zona dati si intende quella parte del programma dove sono state definite le variabili e che dovrà contenere i valori che queste assumeranno durante l’esecuzione. Per zona istruzioni si in-tende la parte del programma che contiene le istruzioni operative.

Non sempre è possibile avere una distinzione così netta tra le diverse parti perché alcuni linguaggi non obbligano a tenere separate le due parti.

Definiamo spazio degli indirizzi di un programma la zona di memoria centrale formata da zona datipiùzonaistruzioni(figura 1).

Il gestore della memoria (memory management) è formato dai moduli del sistema operativo che si occupano di:• tenereaggiornatolostatodiognilocazionedimemoria(liberaooccupata);• assegnarelamemoriacentraleaiprocessichenefannorichiesta;• gestireilrecuperodellamemoriacentralequandounprocessotermina.

Poiché la memoria centrale è una risorsa limitata, processi molto onerosi potrebbero non essere eseguibili. Con la tecnica della memoria virtuale invece si possono accettare lavori di qualsiasi dimensione (che vengono parcheggiati in memoria di massa) portando però in memoria centrale solo quelle porzioni che devono essere eseguite.È come avere a disposizione una memoria di capacità di gran lunga superiore a quella ef-fettiva (ecco perché virtuale).

Esistono due tecniche per la gestione della memoria virtuale:• richiestadipagine;• segmentazione.

Vediamo ora nel dettaglio le due tecniche appena enunciate.

lezione

5 Gestione della memoria centrale

!

!

ZONA DATI

ZONAISTRUZIONI

PROGRAMMA SPAZIODEGLI

INDIRIZZI

figura 1 Spazio degli indirizzi di un programma

Lezione 5 Gestione della memoria centrale

l La richiesta di pagineIl meccanismo della paginazione prevede che la memoria centrale sia suddivisa in blocchi aventi tutti la stessa dimensione e lo spazio degli indirizzi di un programma è suddiviso logicamente in parti chiamate pagine. I blocchi hanno la stessa dimensione delle pagine (in genere multipli di 2k) e l’allocazione del programma avviene quando in memoria centrale esiste almeno un blocco libero.Mentre le pagine sono logicamente contigue, i blocchi di memoria centrale in cui verranno caricate possono non esserlo. Il sistema operativo deve gestire alcune tabelle di abbinamen-to: la tabelle delle pagine e la tabella dei blocchi. La figura 2 illustra un esempio di memoria centrale organizzata a blocchi con le relative tabelle.

Per poter assegnare i blocchi alle pagine è necessario trasformare gli indirizzi relativi delle variabili e delle istruzioni contenuti nelle pagine in indirizzi assoluti, in funzione dell’indi-rizzo di caricamento del blocco.

La gestione della memoria virtuale a richiesta di pagine prevede che in ogni istante non tutte le pagine abbiano associato un reale blocco fisico in memoria, cioè non tutte le pagine sono fisicamente caricate in memoria centrale. Opportuni algoritmi del sistema operativo scelgo-no quali pagine caricare in memoria fin dall’inizio. Se durante l’esecuzione l’istruzione da eseguire si trova in una pagina non presente in memoria centrale, viene generata un’interru-zione per mancanza di pagina (page fault) e viene richiesto al sistema operativo di provvedere al suo caricamento dalla memoria di massa.

Quando il sistema operativo deve caricare una pagina nella memoria centrale si possono verificare due casi.

Caso 1: nella memoria centrale ci sono blocchi liberi (e questo è facilmente desumibile dalla tabella dei blocchi). In questo caso il sistema operativo può caricare effettivamente la pagina dalla memoria di massa alla memoria centrale (questa operazione si chiama swap in).Caso 2: nella memoria centrale non ci sono blocchi liberi. In questo caso, prima di carica-re la pagina, e quindi poter effettuare tutte le operazioni del punto precedente, il sistema operativo deve scegliere, fra tutte le pagine presenti nella memoria centrale quale trasferire nella memoria di massa per liberare un blocco (questa operazione si chiama swap out). Per scegliere quale sarà la pagina “vittima”, il sistema operativo deve seguire una politica di

figura 2 Memoria centrale organizzata a blocchi

n. blocco pgm-id

1 2 3 4 5 6 7 8 9 10 11

SO

PG1

PG1PG1

PG3

PG2PG2

Memoria centrale

pgm-id n. pagina n. blocco

PG1PG1PG1PG2PG2PG3

012010

2 4 51011 7

Tabella delle pagine

n. blocco ind stato

1 2 3 4 5 6 7 8 9101112

1.0001.0021.0041.0061.0081.0101.0121.0141.0161.0181.0201.022

liberooccupatoliberooccupatooccupatoliberooccupatoliberoliberooccupatooccupatolibero

Tabella dei blocchi

I Sistemi Operativi

gestione definita attraverso gli algoritmi di rimpiazzamento che hanno notevole importanza per l’efficienza del sistema.Dato che le operazioni di swap comportano trasferimenti di pagine da memoria di massa a memoria centrale e viceversa, sono molto costose in termini di tempo perché interessano le periferiche che operano in tempi ben più lunghi rispetto all’unità centrale. È quindi op-portuno scegliere come pagina “vittima” una che, presumibilmente, non servirà per lungo tempo.

Le strategie adottate più frequentemente dagli algoritmi di rimpiazzamento sono due:• FIFO: viene rimpiazzata la pagina che da più tempo risiede in memoria centrale, cioè la

più vecchia. La prima pagina a entrare sarà la prima a uscire in caso di necessità.• Algoritmo LRU (Last Recently Used): viene rimpiazzata la pagina che da più tempo

non è usata poiché presumibilmente non sarà richiesta entro breve tempo.

La copia della pagina dalla memoria centrale alla memoria di massa andrà fatta solamente se la pagina ha subito modifiche (per esempio se è cambiato il valore di una variabile). In caso contrario non sarà necessario effettuarla poiché sia la pagina in memoria centrale sia quella in memoria di massa sono identiche. Ciò permette di risparmiare tempo ed è un ulteriore criterio di cui tener conto nella scelta della “vittima”.

l La segmentazioneIn un sistema a memoria virtuale basato sulla segmentazione il programma viene diviso in porzioni, dette segmenti, che corrispondono a unità logiche definite dal programmatore come per esempio un array, una tabella, una routine.Lo spazio degli indirizzi di un programma si può allora pensare composto da diversi seg-menti che vengono caricati in memoria centrale solo quando se ne presenta la necessità.

Per esempio nella figura 3 possono essere individuati cinque segmenti (Tab1, Tab2, Main, Proc1 e Proc2) che saranno caricati in memoria centrale solo se richiesti dall’esecu-zione.La corrispondenza fra indirizzo relativo e locazioni fisiche di memoria centrale (indirizzo assoluto) è stabilita attraverso l’indicazione del segmento. Ogni indirizzo relativo è formato da due parti: numero del segmento e numero di byte all’interno del segmento (displace-ment, figura 4).

PROGRAMMA

TAB1

TAB2

MAIN......................................

PROC1......................................

PROC2......................................

ZONADATI

ZONAISTRUZIONI

figura 3 Suddivisione di un programma in segmenti

Quando è richiesta l’esecuzione di un programma inizialmente viene caricato nella memo-ria centrale solo il segmento che contiene il programma principale (main). Ogni volta che durante l’esecuzione viene fatto riferimento a un sottoprogramma o a una struttura dati contenuti in un altro segmento, questo viene caricato dalla memoria di massa alla memoria centrale (dynamic loading) e in questo momento avviene il collegamento con il segmento che lo ha richiamato (dynamic linking).Se un processo fa riferimento a un segmento che non è presente nella memoria centrale viene generato un interrupt (segment fault) e il sistema operativo deve provvedere al suo caricamento. Si può anche usare una tecnica combinata fra pagine e segmenti, che permette di ridurre alcu-ni degli inconvenienti presenti nelle due tecniche considerate separatamente (figura 5).

Le tecniche della richiesta di pagina e della segmentazione si possono combinare consi-derando i segmenti composti da più pagine e, invece di pensare a un segmento come a un singolo blocco di memoria, lo si suddivide logicamente in pagine di dimensioni prefissate. La memoria è divisa in blocchi aventi la stessa dimensione delle pagine.

Lezione 5 Gestione della memoria centrale

1 Che cos’è la memoria virtuale?

2 In che cosa differiscono la segmentazione e la paginazione?

3 Quali sono gli algoritmi di rimpiazzamento?

4 Segmentazione e paginazione possono coesistere?

verifica le tue conoscenze

NUMEROSEGMENTO DISPLACEMENT

figura 4 Indirizzo relativo

SPAZIO DEGLI INDIRIZZIPROGRAMMA PRG1

SEGMENTO 1

SEGMENTO 2

PAGINA 1

PAGINA 2

PAGINA 4

PAGINA 1

PAGINA 2

SO

MEMORIA CENTRALE

figura 5 Gestione combinata

I Sistemi Operativi

l Collegare la CPU con le perifericheLe periferiche sono normalmente collegate con la CPU tramite interfacce. Il sistema mette a disposizione un’area (buffer o registro dati) destinata a parcheggiare i dati pro-venienti dall’elaboratore e diretti verso la periferica e viceversa; tale area serve per garantire l’indipendenza tra i tempi di lavoro delle varie componenti che hanno ca-ratteristiche ben diverse. Poiché i tempi di elaborazione della CPU sono notevolmente superiori rispetto a quelli di una periferica, è necessario realizzare un meccanismo di sincronizzazione per evitare situazioni di errore.

Scopo del registro dati è quello di rendere asincrono il modo di operare delle periferiche rispetto al modo di operare dell’elaboratore (figura 1).

Per realizzare l’operazione di scrittura la CPU pone i dati, da stampare o da visualizzare nel buffer, che la periferica è in grado di prelevare secondo i suoi tempi di lavoro. È necessario che queste operazioni siano sincronizzate: la CPU non può inserire dati nel buffer se questo è già pieno e d’altro canto la periferica potrà prelevarli soltanto se il buffer non è vuoto.

Per controllare queste attività, all’interfaccia è associata un’unità di controllo il cui compito è quello di:• generareisegnalidicontrollocheservonoafarfunzionarelaperiferica(perunastam-

pante, per esempio, per far avanzare la carta o spostare il carrello);• memorizzarelostatodellaperiferica(libero/occupato);• generareisegnalidiinterruzioneperavvertirelaCPUchelaperifericahaconclusolasua

operazione;• controllare che il trasferimento delle informazioni dalla periferica all’unità centrale e

viceversa avvenga senza errori.

Il registro dati comunica con l’unità centrale attraverso il bus dei dati, mentre l’unità di con-trollo comunica attraverso il bus dei segnali di controllo.Al momento di una richiesta di operazione di I/O la CPU invia all’unità di controllo asso-ciata all’interfaccia il segnale di avvio. A questo punto l’unità di controllo dell’interfaccia gestisce il trasferimento attivando la periferica che preleva le informazioni dal registro dati. Al termine dell’operazione l’unità di controllo dell’interfaccia invia alla CPU l’interrupt di fine I/O (figura 2) .

lezione

6 Gestione delle periferiche

REGISTRODATICPU

PERIFERICA

figura 1 Collegamento tra CPU e periferica con l’uso del registro dati

Interrupt È il meccanismo mediante il quale vengono comunicati alla CPU alcuni eventi ben precisi.

verifica le tue conoscenze

l Periferiche virtualiLe periferiche sono generalmente dedicate, di volta in volta, a un singolo processo in esecu-zione, costituendo di fatto un “collo di bottiglia” per l’efficienza del sistema. Se per esempio la stampante è assegnata a un processo, tutti gli altri che la richiedono dovranno attendere la conclusione del processo in esecuzione per poter avanzare. Per ovviare a questo proble-ma, alle periferiche reali vengono associate le aree su disco che costituiscono periferi-che virtuali. L’operazione di scrittura sulla stampante corrisponde a un’operazione di scrittura sul disco che, essendo una periferica condivisa, può essere ripartita fra i vari processi. Quan-do termina il processo che ha utilizzato la pe-riferica virtuale, tutte le informazioni presenti sul disco possono essere trasferite, senza in-terruzione, sulla periferica reale.Un esempio di tale applicazione è mostrato in figura 3. La tecnica di associazione fra periferiche virtuali e periferiche reali viene chiamata tecnica di spool (Simultaneous Peri-pheral Operation On Line) o spooling; la peri-ferica virtuale è detta disco di spool.

1 A che cosa serve il registro dati?

2 Come si collega una periferica alla CPU?

3 Che cos’è lo spooling?

4 Perché una periferica dedicata è un “collo di bottiglia”?

Lezione 6 Gestione delle periferiche

PERIFERICA

CPU

REGISTRODATI

UNITÀDI

CONTROLLO

BUS DATI BUS DATI

BUS SEGNALI BUS SEGNALI

figura 2 Collegamento tramite interfaccia

esempio

Se durante l’esecuzione il processo PR1 deve stampare una riga, lo farà nella propria stampante virtuale SP1. Quando il processo PR2 dovrà stampare, potrà farlo sulla stampante virtuale SP2 anche se PR1 non ha ancora terminato la stampa. Quando PR1 avrà terminato ed effettuerà un’operazione di chiusura, allora il contenuto di SP1 verrà inviato, riga per riga, alla stampante reale.

SP1

SP2

SP3

PR1

PR2

PR3

Area di spool

figura 3 Esempio di uso dello spooling

I Sistemi Operativi

l Gestire la memoriaL’insieme dei programmi del sistema operativo preposto alla gestione delle informazioni memo-rizzate sulle memorie di massa costituisce il file system.

Il file system consente all’utente di utilizzare gli archivi memorizzati sulla memoria di massa senza preoccuparsi dell’effettiva modalità di memorizzazione e di tutti i problemi connessi con tale utilizzo, facendo riferimento ai file solo con nomi simbolici. È il file system che regola l’allocazione, il reperimento e la protezione dei file sulle memorie di massa.

In particolare esso deve: • catalogaretuttiifilepresentisullamemoriadimassautilizzandoopportunetabelleme-

morizzate sulla memoria di massa stessa;• assegnarel’usodiunfilefornendoagliutentimeccanismidiprotezionesull’accesso;• gestireinmodoottimalelospaziodisponibilesullamemoriadimassaperdeterminarein

quale punto memorizzare nuove informazioni;• liberarelarisorsaquandononèpiùnecessaria.

l DirectoryPer catalogare i file presenti sulla memoria di massa, il file system utilizza un file (file directory) memorizzato anch’esso sulla memoria di massa in una posizione fissa e nota al si-stema operativo (normalmente sulla traccia 0), che contiene le informazioni riguardanti tutti i file presenti sul supporto. Per ogni file viene inserito un record nella directory che contiene queste informazioni:

dove si intende:id-file è l’identificativo del file;lung.rec è la lunghezza record;n.rec è il numero record;indirizzo è l’indirizzo primo blocco;accesso è l’accesso permesso (solo lettura, lettura e scrittura);creazione è la data creazione;modifica è la data ultima modifica.

lezione

7 Gestione delle memorie di massa

!

id-file lung. rec n. rec indirizzo accesso creazione modifica

La directory viene aggiornata dal file system ogni volta che si crea, si can-cella o si modifica un file: per sveltire queste operazioni, la directory è porta-ta nella memoria centrale sotto forma di tabella. I moderni file system usano un siste-ma gerarchico di directory strutturato ad albero nel quale si possono definire sottodirectory per raggruppare i file. Per esempio nei sistemi operativi Win-dows e Unix è possibile raggruppare i file per argomento inserendoli nelle va-rie sottodirectory come illustrato nella figura 1.

l La FatL’accesso al disco è regolato dalla File Allocation Table, detta anche FAT, che è stata svilup-pata per MS-DOS e successivamente utilizzata nei Sistemi Operativi Microsoft Windows. È un sistema abbastanza semplice ed è supportato da quasi tutti i Sistemi Operativi moderni.Nella FAT per ogni file sono memorizzati il settore di partenza, la dimensione in byte e altre informazioni che possono variare da un file system a un altro.Esistono varie versioni di FAT e in base a quanti bit sono allocati per numerare i blocchi del disco si avrà: FAT12, FAT16, FAT32. Un’unità FAT può essere divisa in quattro aree: area riservata, tabella di allocazione dei file, directory radice e area dei file.Il file system quando effettua le operazioni di lettura, scrittura, cancellazione e inserimento di un file modifica o aggiunge una riga nella FAT.La FAT viene memorizzata dal Sistema Operativo su disco e, durante l’elaborazione, viene trasferita nella RAM.

l ProtezioneUn semplice meccanismo di protezione dei file è quello di inserire nella directory l’infor-mazionerelativaaltipodioperazionipermessesuidaticontenutinelfile(R=lettura,W=scrittura,RW=letturaescrittura).Inquestomodoatuttigliutentièpermessolostessotipodi accesso: in genere può invece capitare che lo stesso file debba godere di protezioni diverse a seconda dell’utente che lo usa.Per esempio si può utilizzare una matrice di controllo: ogni casella della matrice contiene un’informazionerelativaallapossibilitàdiaccesso(N=accessovietato,R=solo lettura,W/R= letturaescrittura)dapartedell’utentecheequivaleaunacolonnaper il filechecorrisponde alla riga. Per esempio:

utente 1 utente 2 utente 3 utente 4

FILE 1FILE 2FILE 3

RW/RW/R

RW/RR

RNW/R

RRR

Un simile metodo, anche se molto sofisticato e sicuro, richiede molto spazio. Una notevole riduzione nello spazio di memoria occupato si ottiene introducendo l’uso di una parola chiave che viene associata a ogni file. Può accedere al file solo chi conosce la parola chiave.In alcuni sistemi come Unix vengono definite solo tre classi di accessi (User, Group, Others), cioè l’utente proprietario del file, un utente appartenente a un certo gruppo, un utente qualsiasi.

Lezione 7 Gestione delle memorie di massa

SOTTODIRECTORY 1

SOTTODIRECTORY

SOTTODIRECTORY N FILE 1

FILE 2 FILE N

ROOT

figura 1 Struttura ad albero delle directory

Per quanto riguarda il file

contenente gli stipendi dei dipenden-ti di un’azienda solo un responsabile potrà avere l’accesso in scrittura per modificare lo stipendio dei dipen-denti, tutti gli altri utenti avranno solo l’accesso in lettura o addirittura accesso vietato.Il controllo dell’accesso viene allora gestitoconmetodipiùcomplessicheutilizzanostrutturedatipiùadatteallo scopo.

I Sistemi Operativi

In presenza di un DBMS il controllo degli utenti che accedono ai file che costituiscono la base dati e la protezione dei dati dagli accessi non autorizzati sono affidati allo stesso DBMS, che rappresenta quindi un’estensione del file system.

l allocare spazio su discoIn modo molto intuitivo siamo soliti considerare un file come una sequenza di record logici contigui. Se fisicamente i record fossero così memorizzati sorgerebbero notevoli problemi al momento dell’inserimento di record in un file già esistente in quanto sarebbe necessario dichiarare, in fase di creazione del file, quanto spazio è necessario per memorizzare l’intero file in modo che il sistema operativo riservi la porzione di disco adeguata. È anche prevedibile che non tutto lo spazio richiesto sarà poi realmente utilizzato con conseguente spreco di me-moria. Inoltre in memoria potrebbe non esservi un numero sufficiente di byte liberi contigui.Per risolvere questi problemi è importante rilevare la differenza tra la struttura logica di un file e la sua struttura fisica.Mentre logicamente i record sono uno di seguito all’altro, fisicamente possono essere me-morizzati in maniera discontinua, nel senso che i record del file possono essere allocati in blocchi fisici separati.

Ogni blocco fisico contiene, oltre ai record logici in esso memorizzati, il puntatore al blocco logicamente successivo. Per poter reperire agevolmente le informazioni contenute in un file è quindi sufficiente inserire nella directory di base l’indirizzo del primo blocco fisico; l’in-dirizzo del blocco successivo è definito attraverso il puntatore contenuto nel blocco stesso (figura 2).

Questo tipo di allocazione, detta a blocchi concatenati, risulta valida per memorizzare file sequenziali, dove è comunque sempre necessario scandire il file dall’inizio per trovare un’informazione.

Nel caso di file ad accesso diretto questa organiz-zazione risulta inadeguata. Una soluzione deriva dall’uso di un file (chiamato indice dei blocchi), me-morizzato sulla memoria di massa che contiene per ogni file la sequenza dei puntatori ai vari blocchi del file. Nella directory di base è inserito il puntatore al file indice dei blocchi. Quando il file è aperto, il file indice viene portato in memoria centrale. L’accesso diretto consiste allora in una ricerca nel-la tabella indice per poi passare direttamente alla lettura del blocco che contiene il record voluto (figura 3).

5

6

10

8

DIRECTORY

NOME IND LUNG

SOLE 5 4

10 2

43 5

76 8

109 11

figura 2 Allocazione a blocchi concatenati

DIRECTORY

NOME IND LUNG

LUNA 6 310 2

43 5

76 8

109 113, 7, 10 INDICE DEI BLOCCHI

figura 3 Allocazione per indici

Per gestire agevolmente lo spazio libero il file system deve avere una tabella con l’indicazio-ne dei blocchi liberi da poter reperire. Questa tabella (che viene chiamata bit map) in realtà è un insieme di bit dove ciascun bit corrisponde a un blocco: se l’i-esimo bit vale 0 l’i-esimo blocco è libero, se l’i-esimo bit vale 1 l’i-esimo blocco è occupato.

l Gestione operazioniRicordiamo, come già descritto nel primo volume, che il tempo per la lettura o scrittura di un record fisico (o blocco) è dato da:

TI/O=T

SEEK + T

LATENZA + T

TRASFERIMENTO

dove:• T

SEEK indica il tempo necessario per lo spostamento della testina sulla traccia contenente

il blocco richiesto;• T

LATENZA indica il tempo che intercorre da quando la testina è posizionata sulla traccia a

quando passa il settore richiesto;• T

TRASFERIMENTO indica il tempo necessario per la lettura o scrittura del blocco.

Le richieste di lettura e scrittura vengono inserite in una coda che può essere gestita con diverse politiche:• FIFO:sitrattadellagestionepiùsempliceincuilerichiestevengonogestiteinordinedi

arrivo senza ottimizzazioni;• SSTF(ShortestSeekTimeFirst):vienegestitalarichiestachenecessitadelminortempo

di seek. Con questa politica si ottimizzano i tempi di accesso, anche se si privilegiano le richieste che fanno riferimento alle tracce situate nelle posizioni centrali a scapito di quelle in posizioni periferiche;

• SCAN: con tale politica si sceglie la richiesta che necessita del minor tempo di seek nella direzione corrente. La direzione corrente viene cambiata o quando si raggiunge la traccia più esterna (o quella più interna) o quando non ci sono più richieste in coda in quella direzione. Questa politica ottimizza i tempi di lettura/scrittura, ma non è equa perché favorisce le richieste che interessano le tracce situate vicino alle due estremità del disco (vengono scandite due volte, avanti e indietro in tempi ravvicinati);

• C-SCAN:conquestotipodischedulinglerichiestevengonoevasesolomentrelatesti-na sta procedendo in una direzione (il ritorno all’altra estremità avviene senza accessi). Questa politica è più equa della SCAN perché ogni zona del disco è scandita con la stessa periodicità, ma è meno efficiente.

Lezione 7 Gestione delle memorie di massa

1 A che cosa serve la directory?

2 Quali sono le funzioni del file system?

3 Come può avvenire il controllo degli accessi a un file?

4 Come vengono memorizzati i blocchi di dati in memoria di massa?

verifica le tue conoscenze

esempio

00101110000I blocchi 1, 2, 4, 8, 9, 10, 11 sono liberi.

I Sistemi Operativi

sintesi

lezione 1 Organizzazione dei Sistemi OperativiIl Sistema Operativo è la spina dorsale di un sistema di elaborazione. Si tratta di un in-sieme di programmi che permette di gestire l’hardware e tutte le risorse del sistema di elaborazione, occupandosi inoltre di interfacciarsi con l’utente. L’hardware insieme al sistema operativo crea la “macchina virtuale” che permette all’utente di lavorare.

lezione 2 Struttura e funzionamento di un Sistema Operativo

Il grado di portabilità di un SO indica la possibilità di utilizzarlo su macchine con hardware diverso. Il SO si basa su macchine virtuali ed è organizzato secondo il mo-dello a cipolla. I livelli principali sono: il nucleo, il gestore della memoria, delle peri-feriche e delle informazioni.

lezione 3 Tipi di Sistemi OperativiI sistemi possono diversificarsi in base al modo con cui i dati sono elaborati (in modali-tà batch o interattiva). Vi sono poi diversi tipi di sistema operativo (monoprogrammati, multiprogrammati e in time sharing).

lezione 4 Gestione della CPUIl processore è la risorsa più costosa dell’elaboratore tra quelle che devono essere ripar-tite fra più programmi. Un programma, prima di ottenere la CPU e di utilizzarla per il tempo stabilito (time slice), può trovarsi nei diversi stati (hold, ready, run, wait, end). Esistono diversi metodi per scegliere quale programma può passare dalla memoria di mas-sa alla memoria centrale e diversi metodi per scegliere quale processo può usare la CPU.

lezione 5 Gestione della memoria centraleLa memoria centrale ha una capacità limitata: se più programmi vi devono risiedere, il sistema operativo deve utilizzare particolari tecniche per poterla ripartire fra tutte le ri-chieste. Vengono quindi illustrate le tecniche comunemente usate per la gestione della memoria centrale in ambiente monoprogrammato e multiprogrammato (partizioni, pa-ginazione, memoria virtuale).

lezione 6 Gestione delle perifericheEsistono diverse modalità di collegamento tra CPU e periferiche anche se il modo più usato è quello delle interfacce. Per evitare che una periferica venga usata solo da un pro-cesso si usa la tecnica delle periferiche virtuali.

lezione 7 Gestione delle memorie di massaVengono illustrate le problematiche che un sistema operativo deve risolvere quando deve gestire le informazioni memorizzate sulle memorie di massa (catalogazione e protezione dei file, allocazione dei file sui supporti e assegnazione dello spazio libero).

I Sistemi Operativi

domande per l’orale

unità I Sistemi Operativi1 A che cosa serve un sistema operativo?

➞ L1

2 Che cosa si intende per “macchina virtuale”?

➞ L2

3 Descrivi come vengono eseguiti i programmi in un sistema multiprogrammato e in time-sharing.

➞ L3

4 Disegna il diagramma di stato di un processo.

➞ L4

5 Come funziona la gestione della memoria centrale per paginazione?

➞ L5

6 Che cos’è l’area di spool?

➞ L6

7 Come si possono memorizzare i file su disco?

➞ L7

8 Come avviene l’accesso ai file su disco?

➞ L7

Ripasso MP3

I Sistemi Operativi

in English, please

FIFO scheduling: a scheduling policy which schedules tasks in the same order in which they enter the ready state. FIFO Page Replacement: a strategy which replaces the page which has been in memory for the longest time. GUI: Graphical User Interface. LRU Page Replacement: a strategy which replaces the page which has not been used for the longest time. Multiprocessing: the simultaneous execution of two or more computer programs or sequences of instructions. See parallel processing. Multitasking: mode of operation that provides for the concurrent, or interleaved, execution of two or more tasks, or threads. Synonymous with multithreading. Operating System: software that controls the running of programs; in addition, an operating system may provide services such as resource allocation, scheduling, I/O control, and data management. Although operating systems are predominantly software, partial hardware implementations are possible. Page fault: an interrupt generated when a program references a page that is not currently resident.

Process: the operating system concept of a (dynamic) instance of a program in execution. Program: a static set of instructions which can be used as the basis for a process.Ready list: an operating system data structure which contains all of the ready processes in the system. Real time system: a system which must respond in real time to changing conditions. Round Robin scheduling: a scheduling policy which schedules tasks in a fixed circular order. Scheduler: the part of an operating system which assigns resources to processes, tasks, or threads. Spool: simultaneous peripheral operations online. Swapping: the process of copying a memory image to secondary storage and making the memory space available for other usage. Task: in a multiprogramming or multiprocessing environment, one or more sequences of instructions treated by a control program as an element of work to be accomplished by a computer. Virtual memory: memory simulated in software by swapping with a disk file.

Glossary

The operating system (OS) is the backbone of a processing system: without it the hardware could not be used. The most used terms used of an OS are resource, process and scheduling policy. The various ways in which the data is processed allow us to subdivide operating systems into Batch and Interactive. The most common types of operating systems are: monoprogramming multiprogramming and time sharing.The processor is the computer’s most important resource and needs to be shared among the programs which require its use. Main memory has a limited capacity: if several programs

need to be resident in memory, the operating system needs to use special techniques to be able to share the memory among all the requests. The most commonly used technique is to use virtual memory.There are various ways of connecting the CPU and peripheral devices, of which the most common is the use of interfaces.Finally, an operating system aims to resolve the problems that a computer needs to tackle in order to manage the information stored in mass memories, such as the cataloguing and protection of files, the allocation of files to supports and the allocation of free space.

Abstract

OPerATInG SySTem

Questions

1 What is an Operating System?

2 What are the principal types of Operating Systems?

3 What is swapping?

4 What is a page fault?

5 How is file protection managed?

6 How is disk space allocated?

Glossario