Sei sulla pagina 1di 2

Strutture dei sistemi di calcolo

Funzionamento del sistema di calcolo


Un moderno pc composto da una CPU e da un certo numero di controllori connessi attraverso un bus che permette
laccesso alla memoria condivisa del sistema.
Lavviamento dl sistema richiede la presenza di uno specifico programma iniziale detto bootstrap la cui funzione
consiste nellinizializzazione dei diversi componenti del sistema (registri CPU,).
Il programma di avviamento deve caricare nella memoria il S.O. e avviarne lesecuzione, perci individua e carica
nella memoria il kernel e viene avviato il primo processo delaborazione, linit, che attende che si verifichi qualche
evento che pu essere di tipo fisico o da un programma.
Nel primo caso si parla di interrupt e si tratta di segnali inviati alla CPU dai controllori attraverso al bus. I sistemi
operativi moderni sono caratterizzati dal fatto di essere guidati dagli interrupt: se non ci sono programmi o processi il
S.O. resta inattivo in attesa che accada qualcosa. Per ciascuno tipo di interruzione diversi segmenti di codice del
sistema operativo determinano lazione da intraprendere. Ogni qualvolta riceve un segnale di interruzione, la CPU
interrompe lelaborazione corrente e trasferisce lesecuzione a una fissata porzione di memoria. Questa locazione
contiene lindirizzo iniziale della procedura di servizio per quel dato segnale dinterruzione; una volta completata
lesecuzione della procedura la CPU riprende lelaborazione precedente.
In generale la tabella di puntatori contenente gli indirizzi delle procedure di servizio delle interruzioni mantenuta
nella memoria bassa. Laccesso allinterrupt vector avviene per mezzo di un indice codificato nello stesso segnale.
Se la procedura di gestione dellinterruzione richiede la modifica dello stato della CPU deve salvare esplicitamente lo
stato corrente, infatti, terminato linterrupt di carica il program counter lindirizzo di ritorno precedentemente salvato
Interruzioni di I/O
Per iniziare unoperazione di I/O la CPU carica i registri appropriati del controller del dispositivo con il quale intende
comunicare. Il controller a sua volta esamina il contenuto di questi registri allo scopo di determinare lazione da
compiere. Completato il trasferimento il controller informa la CPU del completamento emettendo un interrupt.
Il corso dellesecuzione pu seguire due percorsi distinti:
1. Sincrono: quando si restituisce il controllo al processo utente solo alla fine del completamento della richiesta;
2. Asincrono: si restituisce il controllo al processo utente senza attendere il completamento della richiesta I/O.
Quando la CPU attende sempre il completamento delloperazione al pi si ha una richiesta pendente alla volta.
Unalternativa migliore consiste nel avviare loperazione quindi proseguire con lelaborazione di altro codice. A
questo proposito il sistema operativo mantiene una tabella di stato di dispositivi (device status table) composta da
tanti elementi quanti sono i dispositivi connessi al calcolatore. In ciascuna tabella si fa riferimento al tipo di
dispositivo, al suo indirizzo e al suo stato (disattivato, inattivo, occupato). Se il dispositivo occupato si memorizza la
nuova richiesta insieme ai suoi dati; poich ci possono essere molte richieste per uno stesso dispositivo mantiene una
coda per ogni dispositivo I/O. Quando il controllore di un dispositivo invia un interrupt al sistema per richiedere un
servizio il sistema operativo individua il controllore del dispositivo che ha emesso il segnale quindi accede alla tabella
dei dispositivi, risale allo stato in cui il dispositivo si trova e modifica lelemento della tabella indicando loccorrenza
dellinterruzione.
Il principale vantaggio di tale schema di I/O asincrono un incremento dellefficienza del sistema. Durante il servizio
di una richiesta di I/O, la CPU pu proseguire nelle proprie elaborazioni o avviare I/O su altri dispositivi.
Accesso diretto alla memoria (DMA)
Le operazioni di I/O gestiste in modo asincrono generano segnali di interruzione di basso livello consentendo a quelli
pi urgenti di essere gestiti prima o addirittura di interromperli.
Il problema pu essere risolto con lausilio del DMA (direct memroy access). Una volta impostata larea di memoria. i
puntatori e i contatori del disposti di I/O, il controllore trasferisce un intero blocco di dati dalla propria memoria
direttamente alla memoria centrale o viceversa senza alcun intervento dalla parte della CPU. Per quanto riguarda le
operazioni di base della CPU il principio lo stesso. Quindi un elemento del S.O. detto driver di dispositivo imposta
gli appositi registri del controllore DMA affinch questo impieghi degli appropriati indirizzi di sorgente e destinazione
e la lunghezza del blocco da trasferire
Cache
Di norma le informazioni sono mantenute in ununit di memoria come la memoria centrale; al momento del loro uso
si copiano temporaneamente in ununit pi veloce la cache. Quando si deve accedere a una particolare informazione
innanzitutto si controlla se gi presente allinterno della cache; in tal caso si adopera direttamente la copia contenuta
nella cache, altrimenti si preleva dalla memoria centrale e la si copia nella cache poich potrebbe servire ancora.

Senza di essa la CPU dovrebbe attendere parecchi cicli prima che unistruzione sia prelevata dalla memoria. La
memoria centrale si pu considerare una cache per la memoria secondaria.
Coerenza
In una struttura gerarchica come quella delle memorie pu accadere che gli stessi dati siano mantenuti
contemporaneamente in diversi livelli di memoria.
Architettura di protezione
Protezione dellI/O
Allo scopo di impedire lesecuzione di operazioni illegali di I/O da parte dellutente si definiscono privilegiate tutte le
istruzioni di I/O in modo che lutente non possa usarlo direttamente ma attraverso il sistema operativo.
Cos per compiere unoperazione di I/O un programma utenti usa una chiamata di sistema per richiedere che il So
esegua loperazione per suo conto.
Protezione della memoria
necessario proteggere linterrupt vector da ogni possibile alterazione da parte di programmi utente. Inoltre
necessario proteggere dalla modifica anche le procedure dei servizi dei segnali dinterruzione contenute nel codice del
S.O.
Per separare lo spazio di memoria di ogni singolo programma serve la capacit di determinare lintervallo di indirizzi
in cui programma pu accedere e proteggere la memoria fuori di esso. Questa protezione si realizza impiegando due
registri: il registro di base (contiene il pi basso indirizzo di memoria fisica al quale il programma dovrebbe accedere)
e il registro di limite contrente la dimensione dellintervallo.