Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Domenico Cotroneo » 2.Alcuni Richiami


Richiami sulla struttura dei sistemi di calcolo

Sommario

  • Gestione delle Interruzioni
  • Gestione della comunicazione fra processore e dispositivi periferici
  • Gerarchia di memoria
  • Meccanismi di protezione

Architettura di un sistema di calcolo


Funzionamento di un Sistema di calcolo

La CPU governa l’accesso alla memoria e alle periferiche di I/O.

Quando la CPU avvia un’operazione di lettura/scrittura verso una periferica di I/O, dovrebbe permanere in un ciclo di polling fino a che l’operazione non sia terminata.

….in realtà, i dispositivi di I/O e la CPU possono operare concorrentemente.

Funzionamento di un Sistema di calcolo

Ad ogni dispositivo di I/O corrisponde il proprio controllore, dotato di un proprio buffer locale.

La CPU sposta i dati dalla/verso la memoria centrale verso/da i buffer locali, dopodichè continua con altre operazioni.

L’operazione di I/O ha luogo tra il dispositivo ed il buffer locale del controller.

Il controller informa la CPU del termine di una operazione generando un interrupt (di fine I/O).

Meccanismo di Interrupt: consente l’interruzione del normale ciclo di esecuzione della CPU.

Gestione degli Interrupt (meccanismo di base)

Il ciclo del processore viene modificato per verificare se ci sono interruzioni pendenti (segnale INT).

Se INT è alto,

  • viene interrotta l’elaborazione corrente e
  • si esegue una routine di gestione dell’interruzione (ISR o interrupt handler);

L’ISR gestisce l’interrupt in modo opportuno e restituisce il controllo al processo interrotto (o ad altro processo).

Infine, la CPU riprende l’esecuzione del processo interrotto.


Vantaggi degli Interrupt

Aumentano l’efficienza sfruttando la maggiore velocità della CPU rispetto alle periferiche.

Permettono al S.O. di intervenire durante l’esecuzione di un processo utente, per gestire le risorse di un calcolatore (CPU, Memoria, I/O).

Possono essere abilitate o disabilitate per mezzo di apposite istruzioni macchina (Set Interrupt – STI – e Clear Interrupt – CLI).

Classi di Interrupt

Interrupt Hardware (o interruzioni esterne)
Eventi hardware, non causati dal programma in esecuzione

  • Dispositivi di I/O (es. fine I/O);
  • Clock (scadenza quanto di tempo nei sistemi time-sharing).

Sono eventi asincroni rispetto all’elaborazione.

Interrupt Software (Trap)
Causato dal programma

  • eccezioni nel processore, generate durante l’esecuzione di un istruzione. Esempi sono una divisione per zero, o errori di indirizzamento;
  • invocazione di apposite istruzioni (int o svc – supervisor call – per la richiesta di servizi al S.O.)

Sono eventi sincroni rispetto all’elaborazione.

Gestione degli Interrupt (dettagli)

Un segnale di interrupt request (INT) viene inviato alla CPU.
La CPU termina l’esecuzione dell’istruzione corrente.
La CPU verifica la presenza del segnale INT e, in caso affermativo, invia una conferma (ACK) al device che ha generato l’interrupt.
La CPU salva sullo stack le informazioni necessarie a riprendere l’elaborazione interrotta.
I Registri critici da salvare sono:

  • Program Counter (PC);
  • Stack Pointer (SP);
  • Registro di Stato o Program Status Word (PS).

Gestione degli Interrupt (dettagli)

La CPU Seleziona l’interrupt handler appropriato tramite il vettore di interrupt.

Caricamento del PC con l’indirizzo iniziale dell’handler e del PS con il valore da caricare.

Queste 2 informazioni sono contenute nel vettore di interrupt.

Tutte le operazioni fin qui sono svolte  in hw


Gestione degli Interrupt (dettagli)

Salvataggio dello stato del processore sullo stack (informazioni critiche non salvate via hardware).

Gestione dell’interrupt
Lettura delle informazioni di controllo provenienti dal dispositivo ed eventuale nuova comunicazione col dispositivo.
Ripristino dello stato del processore (op. inversa alla 7).
Ritorno del controllo al processo in esecuzione.
Ripristino del PC e del registro di stato salvati sullo stack.


Tecniche di comunicazione di I/O

Tre modalità di comunicazione tra CPU e dispositivi di I/O:

  1. I/O programmato;
  2. I/O interrupt driven;
  3. DMA (Direct Memory Access).

I/O programmato (tecnica obsoleta)

La CPU esegue un’istruzione di I/O eseguendo un apposito programma di I/O.
Il programma di I/O (es. input dati):

  • prepara l’operazione di I/O scrivendo sui registri del controller del dispositivo.

Il dispositivo esegue l’azione richiesta e al termine scrive sui registri del controller i risultati (buffer e stato).
La CPU attende (busy waiting) il completamento dell’operazione testando periodicamente il contenuto di appositi registri di stato.
Infine la CPU sposta i dati di input dal buffer del controller alla memoria centrale.

La CPU deve attendere il completamento dell’operazione.

I/O interrupt- driven

La CPU esegue un’istruzione di I/O lanciando un apposito programma di I/O.
Il programma di I/O (es. input dati):

  • prepara l’operazione di I/O scrivendo sui registri del controller del dispositivo.

Il sistema operativo sospende l’esecuzione del processo che ha eseguito l’operazione di input ed esegue un altro processo.
Il dispositivo esegue l’azione richiesta, al termine scrive sul buffer del controller il risultato e segnala il termine dell’operazione attraverso interrupt.
Al ricevimento dell’interrupt, la CPU copia i dati dal buffer del controller alla memoria centrale, tramite la ISR apposita.

DMA- Direct Memory Access

Nei precedenti approcci, il processore spreca parte del suo tempo a gestire le interruzioni e trasferire dati dal controller alla memoria;
ciò è particolarmente oneroso quando si devono trasferire sequenze di dati, anziché un singolo dato.
Se il tempo necessario alla CPU per gestire un’interruzione è maggiore del tempo tra due interruzioni, si possono avere perdite di dati.

Soluzione: canale DMA.

  • Trasferisce blocchi di dati dal buffer direttamente in memoria centrale, senza l’intervento della CPU.

DMA- Direct Memory Access

La CPU invia al DMA:

  • richiesta di lettura o scrittura;
  • indirizzo del dispositivo di I/O;
  • locazione di partenza (IND) della memoria da cui leggere o scrivere;
  • numero di parole (CONT) da leggere o scrivere.

Completato il trasferimento, il DMA invia un interrupt alla CPU.


Struttura della Memoria

Memoria Centrale – insieme di registri; è il solo spazio di memorizzazione che può essere acceduto direttamente dalla CPU.
Memoria Secondaria –memoria non volatile con un’alta capacità di memorizzazione.
Dischi Magnetici – dischi ricoperti di materiale magnetico

  • Superficie del disco divisa in tracce e settori.
  • Il disk controller costituisce l’interfaccia fra disco e computer.

Gerarchia di memoria

Le memorie possono essere organizzate in una gerarchia.

  • Velocità
  • Costo
  • Dimensione

Caching

Uso di memorie veloci per conservare dati acceduti di recente.
Un concetto che si applica a vari livelli:

  • cache della memoria centrale;
  • cache del disco in memoria;
  • cache di file system distribuiti in file system locali.

Richiede una politica di gestione della cache:

  • dimensione della cache e dei blocchi;
  • una funzione di mapping del blocco nella cache;
  • algoritmi di sostituzione.

Problema della coerenza.

Caching (dettagli)

Ad ogni accesso in memoria, il processore controlla prima nella cache.
Se il dato è presente (cache hit), si accede direttamente alla cache, altrimenti (cache miss), si accede alla memoria centrale.
Il meccanismo di funzionamento sfrutta il principio di località dei riferimenti.
Elemento di cache:

\begin{tabular}{|l|c|r|}\hline V & Tag & Contenuto\end{tabular}

Contenuto: blocco di locazioni contigue della memoria centrale.
V: bit di validità, indica se il contenuto è valido.
Tag: identifica il contenuto con la parte comune a tutti gli indirizzi delle locazioni del contenuto.

L’accesso alla cache, con verifica della presenza del tag e validità del contenuto, avviene in parallelo (accesso associativo).

Protezione di memoria

Nei sistemi multiprogrammati e multiutente, più processi utilizzano contemporaneamente la memoria;
È necessaria la protezione di memoria per:

  • le risorse del S.O. (ad es. il vettore di interrupt);
  • lo spazio dei processi utente e del sistema operativo.

Per proteggere la memoria è possibile aggiungere all’hardware due registri che determinano l’intervallo degli indirizzi validi accessibili da un processo.

  • Registro Base – il più piccolo indirizzo di memoria fisica accessibile.
  • Registro Limite – contiene l’ampiezza dell’intervallo.

La memoria esterna a questo intervallo è inaccessibile.

Uso dei registri Base e Limite


Hardware per la protezione degli indirizzi (MMU)


Protezione del Hardware

I processori moderni presentano due stati di funzionamento:

  • User mode (o non privilegiato);
  • Kernel mode (o supervisore o privilegiato).

Per proteggere l’hardware, le istruzioni di accesso e modifica allo stato di una risorsa fisica (istruzioni privilegiate) devono essere eseguite in modo supervisore.
Le istruzioni privilegiate sono non interrompibili (le interruzioni vengono temporaneamente disabilitate con l’istruzione CLI, e poi abilitate con STI).

Esempi di istruzioni privilegiate

Istruzioni per la modifica dei registri base e limite.
Istruzioni per la modifica del registro di stato PS.

  • PS contiene anche il bit di stato utente o supervisore, e quindi non deve essere modificabile in modo utente;
  • una SVC non può quindi realizzarsi tramite una chiamata a procedura;
  • per questo motivo, le SVC si realizzano tramite interrupt software (istruzioniint del processore).

Istruzioni STI e CLI per l’abilitazione e disabilitazione delle interruzioni.

I materiali di supporto della lezione

P. Ancilotti, M.Boari, A. Ciampolini, G. Lipari, “Sistemi Operativi”, Mc-Graw-Hill (Cap.1, Par. 1.3)

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93