You are on page 1of 591
William Stallings NACI WIT STRUTTURA INTERNA PRINCIPI DI PROGETTAZIONE LL UNIVERSITA S@MMARIO PARTE PRIMA ELEMENTI DI BASE CAPITOLO 1 INTRODUZIONE AI SISTEMI DI ELABORAZIONE ........ 1.1 Blementi di base 1.2 Registri del processore .... 1,3. Esecuzione delle istruzioni 14 Interruzioni ... 1.5 La gerarchia della memoria 16 Memoria cache 17 Teeniche di comunicazione di UO . 18 Letture raccomandate .. 19 Problemi Appendice 1A Caratteristiche delle prestazioni delle Appendice 1B Gestione delle procedure ..... CAPITOLO 2 INTRODUZIONE AI SISTEMI OPERATIVI .... 2.1 Obiettivi ¢ funzioni dei sistem operativi 0 2.2 Evoluzione dei sistemi operativi. 23° Aspetti principal. eon ; 24 Caratteristiche dei sistemi operativi modern 25 Panoramica su Windows NT 2.6 — Sistemi UNIX tradizionali 2.7 Sistemi UNIX moderni - 28 — Iprossimi capitoli: Sommario 29 Letture raccomandate... 2.10 Problemi.......... Appendice 2A Internet ¢ risorse Web | “104 IV Sommano. PARTE SECONDA FRKUCESS! CAPITOLO 3 DESCRIZIONE E CONTROLLO DEI PROCE! 3.1 Stati dei processi . 3.2 Descricioni det provessi 3.3 Controllo dei processi 3.4 Gestione dei processi in UNIX SVR4 3.5 Sommario........ : 36 Letture raccomandate... 3.7 Problemi vs ‘CAPITOLO 4 THREAD, SMP E MICROKERNEL ... 4] 42 43 44 45 46 a7 48 Processi e thread .... Muitiprocessing simmetrico. Microkernet .. 7 ‘Thread e SMP in Windows NT Letture raccomandate Problemi CAPITOLO5 CONCORRENZA: MUTUA ESCLUSIONE E SINCRONIZZAZION! S.1 Principi della concorrenza.. 5.2. Mutua esclusione: approcei software 5.3. Mutua esclusione: supporto hardware 5.4 Semafori. - 5.5. Monitor ... : 5.6 Scambio di messaggi .. 3.7 Il problema dei lettori/serittor 5.8 Sommario .. 5.9 Letture raccomandate 5.10 Problemi...... CAPITOLO 6 CONCORRENZA: STALLO E STARVATIO! 6.1 Principi dello stallo 2 275 6.2 Prevenzione dello stallo - 283 63 Esclusione dello stallo.. 284, 6.4 Rilevamento dello stallo .. 6.5 Una strategia integrata per lo stallo .. 6.6 Il problema dei filesofi a tavola 6.7 | meccanismi di UNIX per fa concorrenza 6.8 Primitive per la sincronizzazione dei thread in Solari 6.9 Imeccanismi di Windows NT per la concorrenza ... 6.10 Sommario 6.11 Lettre raccomandate.... 6.12 Problemi.. = PARTE TERZA LA MEMORIA CAPITOLOT LA GESTIONE DELLA MEMORIA csesscssssssesoeesenen savsesnenennarrnenane 7.1 Requisiti della gestione della memoria 7.2. Upartizionamento della memoria . 7.3 Paginazione .... 7A Segmentazione .. 7.5 Sommario ... 7.6 Letture raccomandat 77 Problemi Appendice 7A. Caricamento e Link ‘CAPITOLO & LA MEMORIA VIRTUALE sssssesscererrseserer M7 8.1 Strutture hardware e di controllo . 347 8.2 ILsoftware del sistema operativo .. 369 83 Gestione della memoria di UNIX e Solaris. 390 8.4 Gestione della memoria in WindowsNT .. 3.5 Sommaric ... 8.6 — Letture raccomandate ... 8.7 Problemi... Appendice 8A Le tavole hash PARTE QUARTA LO SCHEDULING CAPITOLO 9 SCHEDULING MONOPROCESSORE sensssnnsonannenne ALL 9.1. Tipi di scheduling 412 9.2 Algoritmi di scheduling . 416 VI Sommario 9.3. Lo scheduling tradizionale di UNIX... 9.4 Sommario 9.5 Letture raccomandate 96 Probe Appendice 9A ‘Tempo di risposta CAPITOLO 10 SCHEDULING MULTIPROCESSORE E IN TEMPO REALE ... 10.1 Scheduling multiprocessore .. 10.2 Scheduling in tempo reale .. 10.3 Scheduling in UNIX SVR4 10.4 Scheduling in Windows NT 10.5 Sommario 10.6 Letture raccomandate 10.7 Problemi........... PARTE QUINTA INPUT/OUTPUT E FILE. CAPITOLO IL GESTIONE DELL'V/O E SCHEDULAZIONE DEL DISCO wsse. ILI Dispositivi di VO... 11,2 Organizzazione delle funzioni di 11.3 Progettazione di sistemé operativi. 11.4 Gestione di buffer di 1/0 .. ILS Schedulazione del disco M6 RAID. cece 11.7 La cache del disco 11.8 VO di UNIX SVR4 11.9 UO di Windows NT... N10 SomIMatio nnn 11.11 Letture raccomandate 11.12 Problemi senna Appendice 11A Dispositivi di memurizeazione a disco CAPITOLO 12 GESTIONE DEL FILE see. 12.1 Introduzione . : 12.2 Organizzazione ed accesso a file 12.3 Le directory di file 12.4 Condivisione di file oo. ccc nen 12.5 Organizzazione di record a blocchi 12.6 Gestione della memoria secondaria 12.7 Gestione dei file in UNIX . 128 ILfile system di Windows NT .. 12.9 Sommatio iu. . 12.10 Letture raccomandate 12.11 Problemi......... PARTE SESTA ‘SISTEMI DISTRIBUITI CAPITOLO 13 ELABORAZIONE DISTRIBUITA, CLIENT/SERVER E CLUSTER ... ‘CAPITOLO 14 GESTIONE DEI PROCESSI DISTRIBUITI 13.1 ILbisogno di un’architettura di protocollo 13.2 Llarchitettura del protocollo TCP/IP... 13.3. Llarchitettura di protocollo OST 13.4 Elaborazione client/server... 13.5. Scambio di messaggi distribuito ... 13.6 Chiamate di procedura remote ..... 13.7 Cluster... 13.8 Wolfpack di Windows NT 13.9. Solaris MC 13.10 Sommario ... 13.11 Letture raccomandate 13.12 Problemi 14.1 Migrazione dei processi ... 14.2. Stati globali distribuit 14.3 Mutua eselusione distribuits 14,4 Stallo distribuito .. 14.5 Sommario......... 14.6. Letture raccomandate 14.7. Problemi PARTE SETTIMA SICUREZZA CAPITOLO 15 SICUREZZA... 15.1 Minacee alla sicurezza 15,2. Protezione ..... Vill Sonmaria 15.3. Intrusi ... rar 15.4 Virus e relative minacce. 15.5 Sistemi fidati .. 15.6 Sicurezza di rete .. 15.7 La sicurezza in Windows NT... 158 Sommario....... 15.9 Letture raccomandate 15.10 Problemi 7 Appendice ISA. Cifratuia APPENDICE A ANALISE DELLE CODE .sescenen Al Perehé I’analisi delle code? A2~ Modelli dicode ..... A3 Code per singolo server A4 Code multiserver. AS Retidi code .... AG Esempi......... AT Altri modelli di coda. AS Lotture raccunmandate .. = Allegato A Quel tanto che basta di probabilita e statistica APPENDICE B PROGETTAZIONE ORIENTATA AGLI OGGETTI BI Motivazione .. B2 Concetti object-oriented. B.3 Benefici della progettazione orientata agli oggeti B4 CORBA 7 BS Letture raccomandate 776 APPENDICE C PROGRAMMAZIONE E PROGETTAZIONE DI SISTEM] OPERATIVI .. C.l_ Progetti per insegnare sistemi perativi .... C2 Nachos . C3 Progetti di programmazione C4 Assegnazione di letture e relazion: serrsmvee 777 m7 718 779 ss. 780 APPENDICE D OSP: UN AMBIENTE PER LA PROGETTAZIONE DI SISTEM OPERATIVI....... 781 D.i Panoramica D2 Aspetti i D3 Confronto con altri software des inati alla D4 La distribuzione del software di OSsP didattica di sistemi operativi D.S Mailing list di OSP.... D6 Progetti futuri APPENDICE E BACI: IL SISTEMA DI BEN ARI PER LA PROGRAMMAZIONE, CONCORRENTE..... EL Introduzione E,2 BACI 3 Esempi di programmi BACT E.4 — Progetti in BACT ......... E5 Miglioramenti del sistema BACI GLOSSARTO secsserseee BIBLIOGRAFIA INDICE ANALITICO.. sasssssecesarstnsanesesamemennnvanee BOD PREFAZIONE Oblettivi Questo libro tratta concetti, struttura e meccanismi dei sistemni operativi, ¢ si propone di presentare nel modo piit chiaro e completo possibile la natura ¢ le caratteristiche dei sistemi pit recent, ‘Tale obiettive rappresenta una sfida per diverse ragioni. In primo luogo, i sisterni di elabora- zione per i quali si progettano sistem operativi sono moltissimi e assai diversi tra loro: workstation asingolo utente e personal compuier, sistemi condivisi di medie dimensioni, grandi mainframe, supercomputer ¢ machine specializzate, come i sistemi in tempo reale, La dive! 2 non @ in relazione soltanto con la capacita e la velocita delle mavchiue, ma risiede nelle applicazioni ¢ nei requisiti di supporto del sistema, In secondo luogo, il rapido evolversi caratteristico dei sistemi di elaborazione non accenna a fermarsi, gran parte dei problemi chiave nella progetta- 7ione di un sistema operativo hanno una storia recente, e la ricerca in queste ed in nuove aree continua. Malgrado questa varieti e ritmo di cambiamento, determinati concetti fondamentali si applicano consistentemente ovunque, anche se in relazione allo sviluppo tecnologico del mo- mento e alle particolari esigenze applicative. Questo testo intende fomire una trattazione com- pleta dei fondamenti dell’ architettura dei sistem operativi, correlandoli alle attuali problematiche di progettazione e agli attuali sviluppi dei sistemi operativi. Ilettore potra acquisire una solida conoscenza dei meccanismi chiave dei sistemi operativi moderni, delle diverse alternative ¢ decisioni inerenti la progettazione dei sistemi operativi e del contesto entry cui funziona il sistema (hardware, altri programmi tema, programmi appli- cativi, utenti interatti vi). lL slstemi scelti come esemplo Questo testo si tipromette di fornire al lettore la conoscenza dell" architettura di base ¢ dei problemi d'implementazione dei sistem operativi contemporanei,e quindi una trattazione pura mente concettuale o teorica sarebbe fuori Luogo. Per illustrare i concetti ed esemplificare i pri XML Prefazione cipt di fondo, collegandoli alle scelte progettuali da adottare in cancreta, sia fatto riferimento a tre sistemi operativi: * Windows NT: un sistema singolo utente ¢ multitasking per personal computer, workstation € server. Essendo un sistema operative di nuova concezione, si avvale, in modo lineare ed efficace, di molti sviluppi recemtissimi della tecnologia dei sistemi operativi. tuno dei primi importanti sistemi operativi commerciali ad accogliere i princi tazione orientata agk oggetti. ¢ UNIX: un sistema operative multiutente, concepito in origine per minicomputer, ma imple- mmentato su un‘ampia gamma di macchine, dai potenti microcomputer ai supercomputer. La Versione cui soprattutto si fa rferimento in questo libro’ SVR4, dotata di numerose caratte- Tistiche fra le pitt attuali dei sistemé operativi, * Solaris: Ia versione commerciale di UNIX pid diffusa. Solaris include il multithread e altre Caratteristiche non presenti in SVR4 e nella maggior parte delle altre versioni di UNIX ‘Questi tre sistemi sono stati scelti per la loro rilevanza e rappresentativita, Adottando 1a strategia usata dallo stesso autore in Computer Organization and Architecture, le osservazioni Sui sistemi presi ad esempio compaiono ovunque nel testo, piuttosto che concentrate in un sin- golo capitolo 0 in un’appendice. Ad esempio, parlando della concorrenza, se ne deserivano i meccanisini in ciascuno dei tre sistemi modello e si esaminano le motivazioni delle relative scelte di progetto, valide per ciascun sistema. Questa strategia consente di evidenviare pronta- mente. con esempi concreti, i concetti esposti in un certo capitoio. A chi.é rivolto questo Ilbro Questo libro 2 rivolto ad un pubblico di studenti ¢ di professionisti teenici. Come libro di testo é stato formulato in vista di corsi universitari di sistemi operativi per Informatica, ln gegne- mia Informatica e Ingegneria Elettronica: Sono qui trattati infaéti tutti gli argomenti raccomandati da organizzazioni come IEEE ed ACM per i curricula universitari relativi alle tecnologie deli formazione. Pud essere utilizzato anche come testo di base per Vautoapprendimento. Organizzazione del testo I libro 2 organizzato in sette parti |. Elementi di base: offre una panoramica dell’architcttura ¢ dell organizzazione dei sistemi di claborazione, con particolare riguardo agli argomenti correlati alla progettazione dei siste- ‘mi operativi: questa prima parte presenta in sintesi anche i contenuti degli altri capitoi Prefazione XIN IL. Processi: analizza in dettaglio i processi, il multithread, il multiprocessing simmetrico (SMP) ei microkernel, e gli aspetti chiave della concosrenza in un singolo sistema, soffermandosi sui problemi della mutua esclusione ¢ dello stallo. TIL. La memoria: presenta un panorama complessivo delle tecniche di gestione delta memoria. IV. Lo scheduling: esamina ¢ confronta i vari approcei alla schedulazione dei processi, la schedulazione dei thread, la schedulazione SMP e quella dei sistemi in tempo reale, ¥. Input/Output e file: tratta i problemi relativi al controle delle funzieni di 7/0. Un"atten- zione speciale & dedicata all"/O del disco, fondamentale per le prestazioni de! sistema, quindi si affronta in generate il problema della gestione dei file VL. Sistemi distribuiti: passa in rassegna le pid significative linee di tendenza dell’elaborazio- ne di rete, in particolare TCP/IP, l'elaborazione client/server ¢ i cluster, ¢ deserive anche aleune delle pill rilevanti aree progettuali nello sviluppo dei sistemi operativi distribuiti VIL Sicurezza: esarnina i tipi di rischio ed i meccanismi per Ia sicurezza dei computer e deile reti. Un sommario pid) dettagliato del contenuto di ciascun capitolo si trova comungue alla fine el Capitol 2, Completano il volume un vasto glossario, una lista degli acronimi di uso pid frequente ¢ una bibliografia, Ciascun capitolo & corredato di esercizi ¢ di un elenco di letture integrative. Servizi Internet per docentil e studentl Esiste una pagina Web appositamente creata per accompagnare i Libro nell'edizione origina- le, che pud essere di aiuto a studenti e docenti. La pagina contiene link a siti interessant, lucid tratti dalle illustrazioni del libro in formato PDF (Adobe Acrobat), una serie di appunti per lezioni, che si possono usare come lucidi o come riassunti per student, nonch¢ le indicazioni per iscriversi alla mailing list del libro. L'indirizzo Web & hup://www.williamstallings.com. La mailing list stata creata affinché coloro che usano questo libro possano scambiare informa- zioni, supgerimenti ¢ domande fra di loro e con I'autore. Gli eventual erroti di stampao di altro genere, saranno elencati in una errata corrige disponibile allo stesso indirizz0 Progettl di sistema operative Molti docenti reputano fondamentale che un corso di sistemi operativi commprenda anche un progetto, 0 un insieme di progetti, grazie ai quali lo studente possa acquisire esperienza pratica e consolidare le nozioni apprese dal testo. Per quante riguarda le esercitazioni da proporre agli studenti, il supporto offerto da questo testo @ seniza confronti. Esso fornisce informazioni su te XIV Prefazione pacchetti software, utilizzabili per 'implementazione di progeui: OSP e NACHOS per svilup- pare componenti di un sistema operative, BACI per studiare i meccanismi della concorrenza. I] manuale per il docente contiene inoltre una serie di piceoli progetti di programmazione, sviluppabili in una settimana o due, inerenti un'ampia gamma di problematiche, che possono essere implementati in qualunque linguaggioe su qualsiasi piattaforma. Per maggiori dettagli, si consulti I’ Appendice C, Le novita della terza edizione La seconda edizione di questo libro risale al 1995, ¢ nel frattempo si sono prodotti continua- mente progressi ¢ innovazioni, che sono stati catturati al volo per questa nuova edizione, pur conservando il carattere di trattazione generale degli argomenti. Al fine di procedere ad un ag- giornamento, la seconda edizione del libro é stata rivista da diversi docenti che I’ avevano adot- tata come testo all’ epoca. In molti passi del testo la parte discorsivaé stata chiarita e sintetizzata, leillustrazioni migliorate e, dopo averli testati, sono stati inseriti anche numerosi nuovi esercizi. A parte queste modifiche, volte a migliorare lefficacia didattica e ad agevolare gli studenti, sono state introdotte in tutto il manuale anche innovazioni sostanziali, di cui le principali sono: Multithread: la trattazione & pitt ampia e comprende I"analisi dei thread a livello utentee a livello kernel, la schedulazione ¢ la migrazione dei thread. Anche la parte sul muttithread in Windows NT @ pill vasta, ed @ completamente nuova quella sul multithread in Solaris, ‘* Multiprocessing simmetrico (SMP): il discotso & molto pid completo ¢ riguarda anche, in modo pid dettagliato, la gestione di processi e la schedulazione dei processi e dei thread. © Microkernel: 12 sezione sul microkemel completamente nuova, © Cluster: negli uitimi anni, i cluster sone diventati un’ importante forma di organizzazione dei sistemi di elaborazione e dei sistemi operativi, percid & stata inserita un" apposita sezione sull‘argomento, assieme ad una trattazione sughi approcei di Windows NT Wolfpack ¢ di Solaris MC. + Progettazione orientata agli oggetti: anche sulla progettazione orientata agli oggetti il di- S) on rumnwerdoug 414. Capitolo 1 Introduzione al sistem’ ai etaborazione Quando il dispositi vo esterno é pronto ad accettare altri dati al processure un segmule di richiesta di inerruzione; il processore risponde sospendendo il pro- gramma corrente e saltando ad un programma di servizio per quel particolare dispositivo di VO, noto come interrupt handler (gestore di interruzione). Infine, dopo che il dispositive & stato servito, riprende ad eseguire il programma origingle. 1 punti nej quali avvengono queste interru- zioni sono indicati con x nella Figura 1.Sb. Dal punto di vista del programma utente, un interrupt é solo un'interruzione della normale sequenza di esecuzione: completata l'elaborazione dell’ interrupt, Pesecuzione riprende (Figura 1.6). Pertanto, il programma utente non deve contenere alcun codice speciale per gestire le interruzioni: processore € sistetiia Operativo sono responsabili della sua sospensjone e poi della ripresa della sua esecuzione dal punto in cui era stata interrotta. Per gestie gli interrupt, al ciclo dell’istruzione viene aggiunto if ciclo dé interruzione (vedi Figura 1.7), dove il processore controlla se sia avvenuta un’ interruzione, indicata dalla presenza dell’apposito segnale. Se non ci sono interruzioni in attesa, il processore passa al ciclo di fetch e preleva l"istruzione successiva del programma corrente; se c'@ un‘interruzione in attesa, jl processore sospende 'esecuzione del programma correnteed esegue una routine per la gestione dell inte rruzione. 1l programma di gestione degli interrupt in genere parte del sistema operati- vo. Tipicamente, questo programma determina la natura delPintertuzione ed esegue le azioni necessatie. Ad esempio, nel nostro caso, il gestore di interrupt determina quale modulo di VO abbia generato l'interruzione, ¢ pud sallare ad un programma che scrivera ulteriori dati in quel modulo di /O, Quando lg routine di gestione dell’ interruzione @ completata, il processore pud riprendere ad eseguire il programma utente dal punto in cui era stato interrotto. Programma utente Gestore deltfinterrapt Limerruzione avviene qui Figura 1.6 Zrasferimente del contrallo attraverso interruzioni 1.4 interruzioni 15, Ciclo di fete ‘Clelo di esecuzione Cicto di interruzlone Interruzioni abilltate Figura 1.7 Ciclo di istruzione con interrucioni Chiaramente, questo processo comporta un certo overhead, Per determinare 1a natura dell'interrupt ¢ per decidere le azioni appropriate, nel gestore de|{"interruzione occorre eseguite ‘un certo numero di istruzioni in pid. Tuttavia, poiché in attesa di un’ operazione di /O andrebbe perduta una quantitt di tempo relativaneale grande, & possibile utilizzare il processore con maggior efficienza, appunto servendosi delle interruzioni. Per stimare il guadagno in efficienza, esaminiamo Ia Figura £.8, che rappresenta un diagram- rma dei tempi basato sul flusso di controllo deite Figure 15a. 1.5b. Nelle Figure 1.5b ¢ 1.8 si assume che il tempo richiesto per le operazioni di 1/0 sia relativamente breve, inferiore al tempo necessario per completare l"esecuzione delle istruzioni comprese fra due operazioni di scrittura nel programma utente. 1lcaso tipico, special mente per un dispositive lento come una stampante, ® che Voperazione di VO richieda molto pid tempo rispetto all’esecuzione di una sequenza di istruzioni utente, La Figura 1.Sc illustra questo caso: il programma utente raggiunge la seconda chiamata WRITE prima che I'operazione di /O generata dalla precedente chiamata sia comple- tata, percid if programma utente rimane bloccato in quel punto, Completata la precedente oper zione di /O, ? possibile eseguire la nuova chiamata WRITE, e pud partire una nuova operazione di VO. La Figura 1.9 illustra le sequenze det tempi di esecuzione, come seuca use delle inter- ruzioni, Come si nota, si guadagna anche questa volta in efficienza; una parte del tempo di esecuzione dell" operazione di I/O si sovrappone all'esecuzione delle istruzioni utente. Elaborazione delle interruzioni Il verificarsi di un’interruzione genera una serie di eventi (tanto a livello del’hardware che del software), ilustrati nella Figura 1.10, Quando un dispositive completa un’ operazione di 1/0, si produce questa sequenza di eventi: 46 Capitolo 7 Introduzione ai sistemi ai elaborazione 1. Il dispositivo invia un segnale di interrupt al processore. 2. 11 processore, prima di rispondere alla richiesta, termina di eseguire listruzione corrente, ‘come indicato nella Figura 1.7. 3. Il processore controlla che si sia verificata un‘interruzione ¢ manda un segnale di acknowledgment (conferma) al dispositive che I’ha generata. L' acknowledgment permette al dispositive di rimnovere il sua segnale di interrupt. ——ee Tempo o @ tesa del ‘Operazione ‘Operazione processore aivo divo Operazione ® aivo Attesa del Operazione procassore ai Ty ® 4b) Con imterruzioni e[e[e[e|e|elelole| (a) Senza imtetruzioni Figura 1.8 Temporizzazione def programma: attesa di VO breve 44 Intemuzion! 47 4. Il processore si prepara a trasferire il controllo alla routine di interrupt. Per iniziare, deve salvate le informazioni necessarie a riprendere il programma corrente dal punto di interru- zione. L’informazione minima richiesta € costituita dal PSW ¢ dalla locazione dell'istruzio- ne successiva, contenuta nel program counter, che verranno salvati nello stack di sistema (vedi I’ Appendice 1B). 5. Mprocessore carica il program cuuutet cun la locazione di entrata della routine per ta gestio- ne dell’ interrupt, che risponderd a questa interruzione. A seconda deliarchitettura del com- oo oO @ oO ie di VO moe Operazione ai vO Attesa del © processors ‘Attesa dey | OPerazione ———— | Operazione ai VO i LO rocessore Attesa del ae processore ® (b) Con interruzioni (a) Senza interrucioni Figura 1.9 Temporizzazione del programma: attesa di I/O tunga 48 Capitol 1 introduzione ai sistemi ai elaborazione I controller del dispositivo altro hardware del sistema ‘genera urfinterruzione. Salva il resto dellinformazione sullo stato de! proceso I processore finisce di eseguise Fistruzione corrente Uprocessore segnala Ja ricezione dell interruzione Les state- del process: viene ripristinato 1 processore salva sullo stack Gi conteollo i registsi PSW © PC Ripristino 4 Tl provessore carica ‘un nuavo valore in PC aseconda dell'interruzione Figura 1.10 Semplice elaborazione dell ‘interruzione puter e del sistema operativo, 2 possibile avere un singolo programma, uno per ciascun tipo 4i intemnuzione, oppure uno per ciascun dispositive e ciascun tipo di internuzione. Se esiste pitt di una routine per la gestione dell’interruzione, il processore deve determinare quale chiamare, Questa informazione pud essere inclusa nel segnale di interrupt originale; diversa- mente, il processore invia una richiesta al dispositive che ha generato Pinterruzione per ottencre una risposta contenente |"informazione necessaria. Una volta che il program counter & state caricato, if processore continua con i successivo ciclo d'istruzione, che inizia con un fetch. Poiché il fetch dell’istruzione é determinato dal con- tenuto del program counter, il controllo viene trasferito al programma di gestione de!’ interrupt. 1.4 Interuzioni 49 Lresecuzione di questo programma si compone delle seguenti operazic 6. A questo punto, il program counter ¢ il PSW relativi al programma interrotto sono stati salvati sullo stack di sistema, Esistono perd altre informazioni considerate parte dello stato del programma in esecuzione: in particolare, occorre salvare il contenuto det registri del pracessure, che possono essere usati dal gestore dell'interruzione, ed altre eventuali infor- mazioni di stato (di cui si tratter’ nel Capitolo 3). Tipicamente, il gestore dell’interruzione inizieri salvando i contenuti di tutti irégistri sullo stack. La Figura 1.1 La presenta un sempli- ce esempio. Un programma utente viene interrotto dopo V'istruzione alla locazione N; il contenuto di tutti i registri, pil P'indirizzo dell*istruzione successiva (N+/), sone salvati sullo stack. Lo stack pointer viene aggiornato a puntare alla nuova cima dello stack e il program counter viene aggivmalo a puntare allinizio della routine di servizio dell"interru- zione, 7. SL gestore dell’interruzione pud ora procedere ad elaborare l'interrupt, esaminando I infor- mazione di stato relativa all’ operazione di VO, o altri eventi responsabili deit’interruzione, Pud inoltre mandare comandi aggiuntivi o acknowledgment al dispositivo di VO. 8 Completata Pelaborazione dell! interrupt, i valvri dei registri salvati sono reeuperati datlo stack ¢ rimemorizzati nei registri (ad esempio, vedi la Figura 1.11b), 9. 11 passo finale consiste nel recuperate i valori del PSW e del program counter dalla stack, Come risultato, yerra eseguita l'istruzione successiva del programma precedentemente in- terrotto. E importante salvare tutte le informazioni di stato relative al programma interrotto per poter- le poi ripristinare, in quanto "interrupt non é wna routine chiamata dal programma. Alcontrario, Vinterruzione pud avvenire in ogni momento ¢ in qualsiasi punto del programma utente in ese~ cuzione, pertanto essa 2 imprevedibile. Interruzioni multipie La rassegna appena conclusa ha riguardato unicamente le interruzioni semplici; tuttavia, & possibile che si verifichino interruzioni multiple. Ad esempio, un programma pud ricevere dati da una linea di comunicazione e stampare risultati: la stampante genera un’ interruzioné ogni volta che completa un‘operazione di stampa, mentre i} controller della linea di comunicazione genera un’ interruzione all’arrivo di ogni unita di dati, che potrehhe essere costituita di un singo- locarattere 0 di un blocco, a seconda della natura della comunicazione (line discipline). In ogni caso, & possibile che un’ interruzione di comunicazione avvenga mentre sene sta claborando una della stampante. Esistono due metodi per trattare le interruzioni multiple. II primo consiste nel disabilizare le interruzioni mentre yengono elaborate: il processore ignorer’ il segnale di richiesta di quell’ in- teuzivig, Nel caso in cui, durante Mclaborazione di un interrupt, se ne verifichi un seconde, generalmente questo rimane sospeso, el processore lo controller’ dopo aver abilitato fe interru- zioni. Pertanto, quando un programma utente é in esecuzione e si verifiea un interrupt, le inter- rurioni vengono disabilitate immediatamente. Completata la routine di gestione dell"interrupt, 18 — Caplole 1 Introduztone al sistera! ai etaborazione 1 controller del dispositive © altro hardware del sistema genera un‘interruzione Salva il resto- del!informazione sulio stato del process Il processore finisce Blaborazione dell imerruzione UL processore segnala la ricezione det! interruzione Lo state del processor viene ripristinatey UU processore salva sllo stack di controlio i registri PSW e PC Ripristine sei vecchi PSW e PC Hl processore carica tun nuova valore in PC a seconda dell'interruzione Figura 1.10 Semplice elaborazione dell ‘interruzione puter e del sistema operativo, & possibile avere un singolo programma, uno per ciascun tipo di interruzione, oppure uno per ciascun dispositive e ciascun tipo di interruzione, Se esiste pid di una routine per I gestione dell’ interruzione, il processore deve determinare quale chiamare. Questa informazione pud essere inclusa nel segnale di interrupt originale: diversa- mente, il processore invia una richiesta al dispositivo che ha generato Vinterruzione per otlenere una risposta contenente I’informazione necessaria. Una volta che il program counter & stato caricato, il processore continua con il successivo ciclo d'istruzione, che inizia con un fetch. Poiché i] fetch dell’istruzione é determinato dal con- tenuto del program counter, il controllo viene trasferito al programma di gestione dell" interrupt 4.4 Inteuzioni 19 Lesecuzione ji questo programma si compone delle seguenti operazioni: 6. A questo punto, il program counter ¢ i] PSW relativi al programma intertotto sono statt salvati sullo stack di sistema. Esistono perd altre inforimazioni considerate parte dello stato del programma in esecuzione: in particolare, occorre salvare il contenuto dei registri del processore, che possono essere usati dal gestore dell interruzione, ed altre eventuali infor- mazioni di stato (di cui si trattera nef Capitolo 3). Tipicamente, il gestore dell’interruzione jnizierd sal vando i contenuti di tutti i registri sullo stack. La Figura 1.1 La presenta un sempli- ¢e esempio. Un programma utente viene interrotto dopo Pistruzione alla locazione i contenuto di tutti i registri, pid lindirizzo delll'istruzione successiva (N+), sono salvati sullo stack. Lo stack pointer viene aggiomato a puntare alla nuova cima dello stack e il ‘program counter viene aggiornato a puntaré all’ inizio della routine di servizio dell interru- zione. 7. Il gestore dell interruzione pud ora procedere ad elaborure "interrupt, esaminando Vinfor- mazione di stato felativa all’ operazione di /O, 0 altri eventi responsabili dell'interruzione. Pud inoltre mandare comandi aggiuntivi o acknowledgment al dispositive di 7. 8 Completata I’claborazione dell‘interrupt, i valori dei registri salvati sono recuperati dallo stack e rimemorizzati nei registri (ad esempio, vedi la Figura 1.11b). 9. Il passo finale consiste nel recuperare i valori del PSW e del progeam counter dallo stack. Come risultato, verna eseguita I'istruzione successiva del programma precedentemente tertotto, E importante salvare tutte Ie informazioni di state relative al programma interrotto per poter- le poi ripristinare, in quanto interrupt non 2 wna routine chiamata dal programma. Al contrario, terruzione pud avvenire in ogni momento e in qualsiasi punto del programma utente in ese- cuzione, pertanto essa é imprevedibile. Interruzioni multiple La rassegna appena conelusa ha riguardato unicamente le interruzjoni semplici, tuttavia, & possibile che si verifichino interruzioni multiple. Ad esempio, un programma pud ricevere dati da una linea di comunieazione e stampare risultati: la stampante genera un‘interruzione ogni volta che completa un‘operazione di stampa, mente il controller della linea di comunieazione genera un “interruzione all'arrivo di ogni unit’ di dati, che potrebbe essere costituita di un singo- Jo carattere o di un blocco, a seconda della natura della comunicazione (line discipline). In ogni caso, & possibile che un’ interruzione di comunicazione ayvenga mentre se ne sta elaborando una della stampante, Esistono due metodi per trattare le interruzioni multiple. Il primo consiste nel disabilitare le imerruzioni mentre vengono elaborate: il processore ignorer’ il segnale di richiesta di quell” in- terruzione. Nel caso in cui, durante ’elaborazione di un interrupt, se ne verifichi un secondo, generalmente questo rimane Sospeso, e il processore lo controller’ dopo aver abilitato le interru- zioni, Pertanto, quando un programma utente @ in esecuzione c si verifica un imerrupt, Te inter- ruzioni vengono disabilitate immediatamente, Completata la routine di gestione dell’imerrupt, 20 Cepitolo 1 introduzione af sistemi di elaborazione N+1 Program Stack Pointer ‘Counter Nei y+L|_ Rem Programma Routine di servizio Stack di controtlo dell'utente dell'interruzione (a) Liinterruzione avviene dopo listruzione alla locazione N vel r a 5 Ura) Program on Stack Pointer = Registri Ye7 [__Retorn Programma Routine di servizio Stack di controllo dell'utente dell'interruzione () Ritomo dall'interruzione Figura 1.11 Cambiamenti nella memoria e nei registri dovutt ad un interruzione {e interruzioni vengono abilitate prima che si ripristini il programma utente ¢ il processore con- rolla se siano avvenuti ukesiori interrupt Sj tratta di un approccio semplice ed efficace, poiché gli interrupt sono gestiti in uno stretto ordine sequenziale (Figura 1.12a), che presenta tuttavia degli svantaggi, in quanto non tiene 1.4 Interruzion’ 21 conto della priorit’ relativa e nemmeno della criticita del fattore tempo. Ad esempio, occorre gestire rapidamente gli inputin arrivo dalla linea di comunicazione, per far spazio ad altri novi: primo gruppo di input non sia stato ancora elaborato, possibile perdere dei Gestore dell'interruzione X Gestore _ del'interrurione ¥ a) Elaborazione sequenziale delle interruzioni Gestore cogramma utente dellinterruzione X Gestore ~~ dell'interruzione ¥ (b) Elaborzione annidata delle interruzioni Figura 1.12 Tiasferimento del controlfa con interruzioni multiple 22. Capitoio 2 introduzione ai sistem di elaborazione Il secondo approccio consiste nel definire delle priorita, in modo che un*interruzione di pitt alta priorita interrompa a sua volta un gestore di interruzione a pit bassa priorita (Figura 1.12b). Consideriamo eome esempio un sistema con tre dispositivi di /O: una stampante, un disco ed una linea di comunicazione, con priorita crescenti 2, 4 e 5 rispettivamente. La Figura 1.13 jllu- stra una possibile sequenza. Un programma utente inizia al tempo 1 = 0; al tempo ¢ = 10 si verifica un interrupt della stampante: l"informazione del programma utente viene posta sullo stack di sistema ¢ l'esecuzione prose gue alla routine di servizio dell’internizione (ISR, Interrupt Service Routine). Durante tale esecuzione, al tempo t= 15 si verifiea un interrupt di comunica- zione, che viene preso in considerazione poiché la linea di comunicazione ha una priorita pid elevata della stampante. L'ISR della stampamte viene interrotto, il suo stato viene salvato sullo stack e l'esecuzione prosegue dall'ISR di comunicazione. Mentre questa routine é in esecuzio- he, si yerifica un interrupt del disco (t = 20) che, essendo di pill bassa priorita, viene semplice- mente rogistrato, mente ISR di comunicazione continua fino al sug naturale conpletaunento, Quando P'ISR di comunicazione & terminato, (f = 25), si ripristina lo stato precedente del processore, in altre parole l’esecuzione dell’ ISR della stampante. Comunque, prima che anche una singola istruzione della routine possa essere eseguita, i] processore considera l'interrupt del disco, che ha maggiore priorita, ed il controlllo passa quindi allISR del disco. Solo quando quest’ ultima routine viene completata (f = 35) si ripristina ISR della stampante, al termine de] quale (=40) il controtlo ritorna al programma utente. Programma utente ISRedella stampamie ISR di comnnicazione: Figura 1.13 Esempio di sequenza temporale di interruzioni multiple {TANE9O}

You might also like