Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
1. Introduzione
Sistema operativo: è la parte software che si appoggia direttamente all’harware di cui ci fornisce
una visione più astratta.
Esso ha essenzialmente due obiettivi:
• Convenienza, ovvero rendere facile da usare l’hardware disponibile su una certa macchina
• Efficienza, ovvero eseguire programmi utenti e fare in modo di risolvere in maniera
semplice i problemi degli utenti, mantenendo il processore attivo il più possibile
Il sistema operativo ha 3 aspetti che possono essere considerati sue caratteristiche peculiari:
• Resorce allocator: un sistema che si occupa di gestire le risorse della macchina nel migliore
dei modi
• Control Program: tutte le attività eseguite non devono danneggiarsi tra loro
• programma sempre in esecuzione e che non termina mai
Kernel:
Storia. Una volta i sistemi di calcolo erano molto lenti, la memoria molto limitata e il sistema
operativo stava perennemente su essa.
1) Sistemi Batch.
Veniva eseguita una e una sola applicazione alla volta. Questo però presentava
un’ inconveniente: non c’è uno sfruttamento ottimale delle risorse per esempio
durante un’ operazione di I/O il processore rimane inattivo fino al termine.
Sergio Malavolti 2
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
2) Sistemi Batch Multiprogrammati
Per ovviare a questo inconveniente essi hanno la caratteristica di eseguire
più istruzioni contemporaneamente. Per esempio quando c’è un’ operazione
di I/O il processore, invece di rimanere in attesa, seleziona l’attività
successiva e la esegue fino a quando non termina l’operazione di I/O.
Successivamente il processore decide se riprendere l’attività precedente o se
continuare a eseguire quella corrente; questa decisione può essere
influenzata da diversi fattori, come ad esempio la priorità.La
multiprogrammazione è adatta per sistemi con grande quantità di memoria.
Ovviamente è necessario un meccanismo della gestione della memoria, in
modo che le operazioni di lettura e scrittura siano fatte sui processi corretti e
non su altri
3) Sistemi Time-Sharing. Attuano una forma di multiprogrammazione spinta, ovvero vengono
applicati context switch frequenti dal sistema operativo in modo da dare l’impressione all’utente di
avere la macchina in suo possesso. Questa idea è resa possibile dai processori che diventano più
veloci, le memorie più grandi e dall’introduzione di memorie secondarie.
Il sistema operativo assegna un quanto di tempo ad un’ attività: se essa entro la fine del quanto di
tempo non ha effettuato una richiesta di I/O il sistema operativo sottrae la CPU al processo e
l’assegna ad un altro. Col time-sharing diventa possibile l’interazione con la macchina perché non si
utilizzano più le schede perforate come nei precedenti sistemi; questo concetto oggi è utilizzato da
tutte le macchine.
4) Personal Computer. Con essi arriva una macchina dove l’idea principale, oltre l’efficienza, è
quella della convenienza, ovvero chiunque può utilizzare in maniera veloce e semplice la macchina
senza che gli siano richieste conoscenze approfondite. Sostanzialmente c’è un’interattività tra la
macchina e l’utente.
Tra gli altri aspetti importanti nei PC, che hanno fatto sì che la differenza tra essi e le altre macchine
sia diventata molto più piccola, troviamo:
• Sicurezza e protezione
• Utilizzati come server
• Utilizzati come rete
5) Sistemi paralleli. Sono macchine che hanno al proprio interno più di un processore, quindi c’è
più efficienza e un miglioramento del througput ovvero il numero di attività che sono portate a
termine per unità di tempo. La memoria centrale è una sola.
Sergio Malavolti 3
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
Essi si dividono in due categorie:
• Simmetrici: sulla macchina sono presenti più processori identici in grado di eseguire più
attività contemporaneamente. Un vantaggio di questi sistemi è la robustezza, ovvero se si
verifica un guasto sul processore ci sono comunque altri processori che possono essere
impiegati
• Asimmetrici: sulla macchina sono presenti più processori ma non identici, per esempio un
processore grande e altri piccoli processori secondari dedicati ad attività particolari.
6) Sistemi Real-Time. Ci sono attività che hanno dei vincoli di tempo forti che devono essere
rispettati, per sempio la riproduzione di un video multimediale.
Anche questi sistemi si dividono in due categorie:
• Hard real-time: i vincoli di tempo sono forti, nel senso se arrivano certi eventi importanti
devono essere eseguiti immediatamente e senza ritardi. Qui la gestione della memoria è
relativamente semplice (non viene impiegata la memoria virtuale)
• Soft real-time: hanno caratteristiche meno restrittive. I processi d’elaborazione in tempo
reale critici hanno priorità sugli altri processi e la mantengono fino al completamento
dell’operazione
7) Sistemi Distribuiti. Sono un’evoluzione dei sistemi paralleli. Si tratta di più macchine collegate
tra loro che possono scambiarsi i dati e cooperare. Ogni processore ha la sua memoria centrale.
Presentano diversi vantaggi:
• Resistenza ai guasti
• Condivisione di risorse anche fisicamente distanti tra loro
• Comunicazione
• Più copie del file system su tutte le macchine in modo tale che se vi sono guasti su una
macchina il file system viene mantenuto e comunque l’accesso è più veloce da macchina a
macchina.
Sergio Malavolti 4
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
2. Architettura del calcolatore
Bus. Formato da una serie di cavetti microscopici dove passano comandi e dati. E’ la strada
attraverso la quale il processore comunica con le altre unità.
Controller. Dispositivo costituito da un piccolo circuito che gestisce fisicamente l’hardware.
Siccome lavora a un livello molto basso deve essere a completa conoscenza dell’hardware della
periferica di cui si occupa. Nel caso dei dischi controlla i bracci del disco per arrivare alle
operazioni e dati richieste.
Buffer e altri registri. Sono associati ai vari controller e servono per memorizzare i dati che si
vogliono leggere o scrivere.
Driver. Parte del sistema operativo che dialoga col controller. I particolare deve essere aggiunto al
sistema operativo attuale per permettere il dialogo tra il controller e il dispositivo hardware. Per
mette al sistema operativo di mascherare la differenza tra le varie periferiche.
Processore. E’ la risorsa più importante della macchina che ne costituisce il vero cervello.
E’ costituito da due componenti importanti:
• L’ALU: unità nella quale vengono
effettuati i calcoli.
• Control Unit: esegue tutte le
funzioni tramite 3 comandi:
1. fetch = estrae l’istruzione
2. decode = interpreta l’istruzione
3. execute = esegue l’istruzione (che
può essere inviata all’ALU per
eventuali calcoli)
Sergio Malavolti 5
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
Pipelining. Tecnica parallelistica in base alla quale divido la CPU S1 S2 S3 S4 S5
T1 T2
in momenti e ad ogni ciclo della viene eseguita una parte di
un’istruzione. Ogni momento necessita del risultato prodotto dal
momento precedente.
Unità di Memoria.
• MAR: indica un indirizzo di memoria (1234)
• MDR: riporta i dati che si vogliono scrivere o
leggere sulla memoria
• Command: riporta l’istruzione che si vuole
scrivere in memoria (“write”)
Questi tre elementi costituisco un’ interfaccia attraverso
la quale il processore comunica attraverso la memoria.
Program Counter. Puntatore a una certa cella di memoria che contiene
l’istruzione che sarà eseguita al passo successivo
Istruction Register. Registro dove è presente l’istruzione attualmente
eseguita
Avvio PC. All’accensione del PC (detto BOOT) il sistema operativo viene caricato in memoria e
successivamente si metterà in ascolto per le istruzioni che devono essere eseguite.
Interrupt. E’ un segnale hardware che arriva al processore per comunicargli che il sistema
operativo deve intervenire perché si è verificato un evento, per esempio:
1) la terminazione di un’operazione I/O
2) una divisione per zero
3) un’istruzione che cerca di accedere a una locazione di memoria sbagliata
Quando arriva l’interrupt, se la CPU sta eseguendo un’attività, essa viene interrotta e salvata in
memoria per poi essere ripresa in seguito. A questo punto il sistema operativo tratta l’interrupt. Essa
che è
può avere un bit e alcune informazioni che mi indicano come localizzarla sull’interrupt vector,
un’insieme di indirizzi contenente l’interrupt che a sua volta punta alla procedura che deve essere
eseguita. Terminata, la CPU riprende il controllo del processo che stava eseguendo.
E’ importante che l’interrupt vector sia di proprietà del sistema operativo e che sia gestito
interamente da esso.
Mentre tratto un’interrupt ci può essere la possibilità che ne arrivino altre: a questo punto possiamo
valutarle per importanza.
Unità Input/Output. Possono essere gestite in due modi
• Sincrono: il processore testa in continuazione un bit sul controller per verificare se l’attività
di I/O è terminata. Questo metodo, utilizzato diverso tempo fa, è ovviamente svantaggioso
perché il processore perde tempo che potrebbe benissimo impiegare per svolgere altri
compiti.
• Asincrono: quando l’attività di I/O è terminata viene inviata un’interrupt per informarne il
processore senza bisogno che testi continuamente la situazione. In questo modo può
avolgere altro lavoro.
Sergio Malavolti 6
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
Per gestire questo meccanismo asincrono
con interrupt il sistema operativo utilizza
una tabella (Device Status Table) che mi
indica per ciascuna delle periferiche che
ho il suo stato e se eventualmente ci
sono code.
Memorie.
DMA. Se le interrupt sono troppo frequenti il tempo di gestione (overhead) diventa troppo alto e il
processore si ritroverebbe a eseguire solo quello. Il DMA è un dispositivo che fornisce un altro
modo di interazione del processore con le periferiche I/O. Sostanzialmente mi permette un
collegamento diretto tra una periferica veloce e la memoria centrale. C’è una sola interrupt che
informa la CPU del completamento dell’attività.
Svantaggio: competizione tra CPU e DMA per l’accesso alla memoria, in particolare quest’ultimo
può rubare cicli alla CPU.
Memoria RAM. Memoria abbastanza veloce, ma volatile, cioè perde il suo contenuto allo
spegnimento del PC. Di conseguenza serve una memoria permanente per contenere i dati
Memoria secondaria.
Costituita da vari piatti contenenti informazioni su entrambe le
superfici. Sono presenti dei bracci che si muovono sui vari
piatti per selezionare le informazioni
• Settore: circa 500 byte
• Track: insieme cilindrico dei settori
• Braccio: lento (movimento in millisecondi)
Gerarchia Memorie. Registri, cache, ram, dischi elettronici, dischi magnetici, dischi ottici, nastri
magnetici. I primi sono i più veloci e quindi più costosi mentre gli ultimo sono i più lenti ma anche i
più economici.
Memoria Cache. Tipo di memoria più veloce da utilizzare da parte del processore perché è più
vicina rispetto al processore stesso rispetto alla ram. Ne abbiamo una interna al cip del processore e
una esterna. Esistono per ragioni di efficienza. L’idea è avere una memoria abbastanza vicina al
processore che contenga le informazioni che hanno la più alta probabilità di essere eseguite in un
dato momento. Quando viene eseguita un’istruzione essa viene anche caricata sulla cache compresi
i dati che vengono utilizzati in modo che successivamente possano riessere utilizzati più
velocemente.
Sergio Malavolti 7
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
Esempio: se devo eseguire un loop un certo numero di volte, pago un pò all’inizio per trasferire i
dati dalla RAM alla cache, ma poi ho un guadagno perché tutti i dati (variabili e codice del loop)
sono già presenti sulla cache in modo tale da impiegare pochissimo tempo per utilizzarli.
Caching: questa tecnica viene chiamata tale e, oltre a un semplice loop. può essere applicata su
qualunque tipo di istruzione arbitraria.
Principio di località dei programmi. Se in un certo momento sto eseguendo una certa istruzione
su un certo insieme di dati, negli istanti successivi ho un’altra probabilità che le istruzioni
successive siano strettamente correlate a tali dati. Essi non cambiano in maniera brusca, ma in
maniera contigua. Sfruttando questo principio, anche tramite la cache, i sistemi operativi moderni
riescono quasi al 100% (generalmente 95-98%) a funzionare utilizzando solo la cache.
La cache complica la vita al sistema operativo in caso di multiprogrammazione time-sharing.
1) Perché quando si cambia processo la cache va aggiornata
2) Consistenza dei dati: il processore opera sui dati che trova più vicino. Se la CPU modifica il
valore il valore di una variabile sul livello più vicino al processore, tale valore non è
modificato negli altri livelli. Se quindi si presenta un problema devo andare a recuperare la
variabile su un altro livello e questa non sarà aggiornata e, di conseguenza, avrà un valore
diverso.
Protezione dell’hardware.
Vi sono alcune tecniche per monitorare e proteggere l’attività di controllo del sistema operativo
1) Dual-Mode: mi permette di sapere se, all’interno del processore, l’attività in esecuzione è del
sistema operativo o dell’utente. Vi sono attività rischiose che devono essere eseguite dal sistema
operativo per consentire che tutto venga fatto in maniera corretta, come operazioni I/O o modifica
di variabili residenti in memoria
C’è un bit che mi dice se l’attività in esecuzione è
del sistema operativo o dell’utente. Per esempio se
sto eseguendo un’attività il bit è settato a 1. Se
arriva un’interrupt che mi dice che deve essere
eseguita un’istruzione da parte del sistema operativo
il bit viene settato a 0
2) Protezione I/O. Le operazioni di I/O devono essere eseguite da parte del sistema operativo. Di
conseguenza sono dette istruzioni privilegiate.
3) Protezione memoria. Tutte le volte che accedo alla memoria il sistema
operativo deve verificare che le porzioni di istruzioni eseguite siano nelle
celle giuste. Esiste uno schema di base per controllare la memoria.
Le informazione sull’istruzione attualmente eseguita sono contenute in 2
registri presenti nella CPU:
1) Base Register: contiene l’indirizzo della locazione di memoria
2) Limit Register: contiene lo spazio assegnato all’istruzione da
eseguire
Sergio Malavolti 8
Appunti delle Lezioni di “Sistemi Operativi”. 2005-06
Scienze di Internet
Vengono effettutati 2 controlli:
1) Il primo per vedere se non occupiamo
una locazione di memoria sbagliata.
2) Il secondo per constatare che non siamo
oltre il limite della memoria richiesta.
4) Protezione CPU. Bisogna evitare che l’istruzione che viene eseguita rimanga sul processore per
sempre. Viene implementato un clock che mi invia dei tic regolari e un contatore che, ad ogni tic
del clock, viene automaticamente decrementato: quando raggiunge l valore 0 viene emessa
un’interrupt che dice al sistema operativo di togliere il controllo della CPU sul processo attualmente
in esecuzione e di selezionarne un altro.
System Call. Sono messe a disposizione dal sistema operativo per
eseguire queste istruzioni privilegiate e possono essere utilizzate
dai programmi utenti. Sono istruzioni che mi fanno intervenire il
sistema operativo per esempio quando un programma utente vuole
effettuare un’operazione I/O. Dipendono dall’architettura specifica
della macchina che stiamo utilizzando.
Funzionamento: quando voglio effettuare un’operazione I/O
invoco la system call e il controllo della macchina viene passato al
sistema operativo, che setta il bit dual-mode a “0”. Terminata
l’operazione il bit viene settato a “1” e il controllo ripassa
all’utente che continua ad eseguire il suo programma.
Esempio pratico di system call: supponiamo di analizzare cosa succede quando invochiamo una
semplice utility (programma di sistema che si appoggia al sistema operativo) che effettua la copia di
un file con la sintassi “cp file1 file2”.
• Vengono letti i nomi dei due file (intervengono system call per leggere l’input da tastiera).
• Viene effettuato l’accesso al primo file (anche qui viene fatta una system call perché
l’accesso è riservato al sistema operativo).
• Viene creato il file di output (occorre verificare che il file2 non esista già e il tal caso
decidere se procedere dialogando con l’utente o ignorando la cosa).
• Si entra in un ciclo dove i caratteri sono copiati dal file1 al file2 (anche questa è
un’operazione effettuata dal sistema operativo).
• Vengono chiusi entrambi i files.
Quando invochiamo una system call vengono passati dei parametri al sistem
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.