G. Frosini – Multiprogrammazione e Protezione Slide 1
SISTEMI MULTIPROGRAMMATI Sistema di elaborazione con un solo processore: può eseguire un solo programma alla volta; a divisione di tempo, può portare avanti in concorrenza l’esecuzione di più programmi Pa, Pb, Pc,… (i diversi programmi possono appartenere sempre allo stesso utente, ovvero a utenti diversi). si hanno in tal modo i sistemi di elaborazione multiprogrammati. G. Frosini – Multiprogrammazione e Protezione Slide 2
VIRTUALIZZAZIONE DEL PROCESSORE Supporti alla multiprogrammazione (virtualizzazione del processore): a ogni programma corrisponde una tabella di stato, che contiene (oltre ad altre informazioni) una copia dei registri del processore (registri virtuali); quando il processore reale passa dall’esecuzione di un programma Pa a quella di un altro programma Pb, avviene una commutazione di contesto; i valori attuali dei registri del processore vengono salvati nella tabella di stato relativa al programma Pa, e nei registri stessi vengono caricate nuove quantità prelevate dalla tabella di stato relativa al programma Pb; quando un programma va nuovamente in esecuzione, procede a partire dal punto di arresto precedente (il valore di EIP salvato individua l’istruzione successiva). si hanno tanti processori virtuali quanti sono i programmi che devono essere eseguiti, e ogni processore virtuale è caratterizzato dalla tabella di stato del relativo programma; un processore virtuale alla volta ha il possesso del processore reale. G. Frosini – Multiprogrammazione e Protezione Slide 3
G. Frosini – Multiprogrammazione e Protezione Slide 4 PROCESSI Programma in esecuzione su un processore virtuale: prende il nome di processo (o task), e la sua tabella di stato prende il nome di descrittore di processo (o di task). G. Frosini – Multiprogrammazione e Protezione Slide 4
SPAZIO DI INDIRIZZAMENTO DI UN PROCESSO (1) ha un proprio spazio di indirizzamento; questo può coincidere con lo spazio di indirizzamento del processore, oppure essere un suo sottoinsieme. Presenza di memoria virtuale: i processi hanno tutti un uguale spazio virtuale, differenti spazi fisici di memoria (memoria centrale e di massa), e stesso spazio fisico di I/O (questo non è virtualizzato). Commutazione di contesto: i descrittori dei processi hanno ciascuno un proprio registro CR3v che individua un proprio direttorio (i vari direttori sono tutti presenti in memoria fisica); commutazione del direttorio e quindi delle tabelle delle pagine; a parità di indirizzi virtuali, si hanno indirizzi fisici di memoria diversi. G. Frosini – Multiprogrammazione e Protezione Slide 5
SPAZIO DI INDIRIZZAMENTO DI UN PROCESSO (2) Situazione tipica: i processi hanno in comune la zona di memoria dove risiede il sistema operativo, e una zona di memoria per le comunicazioni fra i processi; queste zone hanno (comunemente) gli stessi indirizzi virtuali, a cui corrispondono gli stessi indirizzi fisici: nelle tabelle delle pagine dei singoli processi deve comparire, per uno stesso indirizzo di pagina virtuale, lo stesso indirizzo di pagina fisica. Oltre che singole pagine, i processi possono condividere un’intera tabella delle pagine, e quindi tutte le pagine individuate da quella tabella: nei direttori dei vari processi compare lo stesso indirizzo di tabella delle pagine. G. Frosini – Multiprogrammazione e Protezione Slide 6
GESTIONE DELLA MULTIPROGRAMMAZIONE Gestione dei processi effettuata dal sistema operativo; quando si ha una commutazione di contesto, in CR3 viene caricato un nuovo valore CR3v, con un conseguente cambio di memoria fisica; tutti i processi hanno nel loro spazio di indirizzamento, agli stessi indirizzi virtuali, le pagine relative al sistema operativo, per cui il cambio del valore di CR3 non è influente ai fini del sistema operativo stesso. G. Frosini – Multiprogrammazione e Protezione Slide 7
G. Frosini – Multiprogrammazione e Protezione Slide 8 PAGINE CONDIVISE (1) Pagina fisica condivisa: potrebbe anche corrispondere a una pagina virtuale avente indirizzo virtuale differente da processo a processo (nei descrittori di pagina dei vari processi, a indirizzi virtuali diversi, compare lo stesso indirizzo di pagina fisica). Ipotesi: i processi Pa e Pb riferiscono la stessa pagina fisica, il primo con indirizzo virtuale (di pagina) aaa e il secondo con indirizzo virtuale (di pagina) bbb. Contraddizione: se la pagina contiene al suo interno un indirizzo (virtuale) assoluto che si riferisce, per esempio, alla stessa pagina, questo deve essere allo stesso tempo sia aaa che bbb. Conclusione: una pagina condivisa, quando ha al suo interno degli indirizzi assoluti, deve avere necessariamente lo stesso indirizzo virtuale per tutti i processi. G. Frosini – Multiprogrammazione e Protezione Slide 8
G. Frosini – Multiprogrammazione e Protezione Slide 9 PAGINE CONDIVISE (2) Ipotesi: una pagina condivisa, sia che contenga codice che dati, ha sempre lo stesso indirizzo virtuale per tutti i processi. G. Frosini – Multiprogrammazione e Protezione Slide 9
DESCRITTORE DI PROCESSO NEL PROCESSORE PC individuato da un identificatore ID di 16 bit (multiplo di 8, con i 3 bit meno significativi uguali a 0), che costituisce anche l’identificatore del rispettivo processo. Identificatore di processo: utilizzato come indirizzo relativo all’interno di una apposita tabella (GDT: Global Descriptor Table) (come indice, se pensato diviso per 8); seleziona un’entrata di 64 bit (8 byte) che contiene l’indirizzo virtuale iniziale (base, di 32 bit) e lo spiazzamento relativo alla base dell’ultimo byte (limite, di 20 bit) del descrittore del processo (oltre ad altre informazioni). Base (indirizzo virtuale) e limite della tabella GDT: contenuti nel registro GDTR del processore. G. Frosini – Multiprogrammazione e Protezione Slide 10
G. Frosini – Multiprogrammazione e Protezione Slide 11 TABELLA GDT G. Frosini – Multiprogrammazione e Protezione Slide 11
G. Frosini – Multiprogrammazione e Protezione Slide 12 REGISTRO TR (1) Processore PC: presente un registro TR (Task Register), con una parte visibile che contiene l’identificatore del processo attualmente in esecuzione, e una parte nascosta (al programmatore), che contiene la base e il limite del descrittore di tale processo. Sistema operativo: quando effettua una commutazione di contesto, provvede a caricare in TR l’identificatore del nuovo processo tramite l’istruzione di caricamento LDTR; l’esecuzione di questa istruzione effettua anche il trasferimento nella parte nascosta di TR della base e del limite del descrittore del nuovo processo, prelevandoli dalla tabella GDT. Descrittore di processo: oltre a registri del rispettivo processore virtuale (registri generali, registro CR3, eccetera), contiene altre informazioni utili ai fini della gestione dei processi da parte del sistema operativo. G. Frosini – Multiprogrammazione e Protezione Slide 12
G. Frosini – Multiprogrammazione e Protezione Slide 13 REGISTRO TR (2) G. Frosini – Multiprogrammazione e Protezione Slide 13
MULTIPROGRAMMAZIONE E MEMORIA VIRTUALE Scelta della tabella delle pagine o della pagina vittima: tra quelle appartenenti al processo che ha causato il page-fault (rimpiazzamento locale); anche tra quelle degli altri processi (rimpiazzamento globale). Ipotesi di lavoro: rimpiazzamento globale; pagine condivise non rimpiazzabili. Routine per le statistiche: deve poter accedere ai descrittori che si trovano nel direttorio e nelle tabelle delle pagine presenti, relativamente a tutti i processi, allo scopo di leggere i relativi bit A e aggiornare le statistiche. Rimpiazzamento: ogni descrittore di pagina fisica, oltre alle informazioni viste in precedenza, deve anche memorizzare (nel caso in cui contenga una pagina rimpiazzabile) l’identificatore del processo (campo id_processo) a cui la pagina appartiene. G. Frosini – Multiprogrammazione e Protezione Slide 14
MULTIPROGRAMMAZIONE CON FINESTRA FM (1) Spazio di indirizzamento di ogni processo: presente la finestra FM (mappa la memoria fisica in memoria virtuale). Routine per le statistiche: può operare nel seguente modo: scorre i descrittori di pagina fisica e considera quelli relativi alle pagine fisiche che contengono direttori o tabelle delle pagine; per ogni descrittore di pagina fisica considerato, accede alla pagina fisica contenente quel direttorio o quella tabella delle pagine (dall’indirizzo del descrittore di pagina fisica ricava l’indirizzo fisico della corrispondente pagina e, grazie alla presenza della finestra FM, l’indirizzo fisico rappresenta anche l’indirizzo virtuale); per ogni descrittore contenuto nel direttorio o nella tabella delle pagine di cui al punto precedente e avente P uguale a 1, sia desp; esamina il bit A di desp; accede al descrittore di pagina fisica corrispondente all’indirizzo fisico contenuto in desp per aggiornare il contatore (dall’indirizzo fisico si ricava l’indirizzo del descrittore di pagina fisica). G. Frosini – Multiprogrammazione e Protezione Slide 15
MULTIPROGRAMMAZIONE CON FINESTRA FM (2) Routine di rimpiazzamento: il descrittore di pagina fisica contiene: per lo sgancio, i vecchi valori dei campi id_processo, ind_virtuale e ind_massa relativi alla pagina vittima; per l’aggancio, i nuovi valori dei campi id_processo (identificatore del processo in esecuzione, che ha generato page-fault), ind_virtuale (contenuto di CR2) e ind_massa; per lo sgancio e per l’aggancio, i descrittori di tabella delle pagine o di pagina vengono individuati nel seguente modo: il campo id_processo individua un descrittore di processo, e in questo il valore di CR3v; partendo da CR3v e dal campo ind_virtuale, si risale al descrittore di tabella delle pagine o al descrittore di pagina compiendo le stesse operazioni della MMU. G. Frosini – Multiprogrammazione e Protezione Slide 16
MULTIPROGRAMMAZIONE CON PROCESSI SPECIALI Non è efficiente posizionare nella memoria virtuale di tutti i processi tutte le tabelle di corrispondenza: possibile organizzazione in processi speciali e processi normali. Processi speciali: hanno il compito di effettuare le statistiche, di eseguire il rimpiazzamento e di compiere tutte le eventuali altre operazioni richieste per la gestione della memoria; hanno nel loro spazio di indirizzamento, sia MVs, le tabelle di corrispondenza di tutti i processi. Processi normali: non hanno nel loro spazio di indirizzamento nessuna tabella di corrispondenza. G. Frosini – Multiprogrammazione e Protezione Slide 17
COMMUTAZIONE HARDWARE (1) Commutazione fra processi: può essere ottenuta in modo efficiente via hardware, utilizzando il meccanismo di interruzione. Gate: ha un proprio tipo, specificato da un apposito campo del byte di accesso. tipo Interrupt/Trap; tipo Task (contiene l’identificatore ID di un processo). G. Frosini – Multiprogrammazione e Protezione Slide 18
COMMUTAZIONE HARDWARE (2) Interruzione con selezione (in base al tipo) di un gate di tipo Task: commutazione automatica fra processi; il processo attuale (processo uscente) viene sostituito con un nuovo processo (processo entrante), il cui identificatore è specificato dal gate. Descrittore di processo: deve avere una struttura prefissata, essendo manipolato interamente via hardware; la prima parola lunga contiene il cosiddetto campo link, in cui viene memorizzato un identificatore di processo; gli altri campi corrispondono, ordinatamente, a contenuti di ben determinati registri del processore (sono compresi i registri di controllo EIP ed EFLAG e il registro CR3). G. Frosini – Multiprogrammazione e Protezione Slide 19
COMMUTAZIONE HARDWARE (3) Azioni compiute: salvataggio in un registro di appoggio dell’identificatore del processo uscente, contenuto nella parte visibile di TR; salvataggio dei contenuti dei registri del processore nel descrittore del processo uscente, individuato dal contenuto della parte nascosta di TR; caricamento nella parte visibile di TR dell’identificatore del processo entrante, prelevato dal gate, e nella parte nascosta di TR della base e limite del descrittore del processo entrante stesso (prelevati dalla GDT); caricamento dei registri del processore con i nuovi valori prelevati dal descrittore del processo entrante, individuato dal contenuto della parte nascosta di TR; salvataggio dell’identificatore del processo uscente, contenuto nel registro di appoggio, nel descrittore del processo entrante (campo Link); messa a 1 del bit NT (Nested Task) del registro EFLAG; microsalto alla fase di chiamata. G. Frosini – Multiprogrammazione e Protezione Slide 20
COMMUTAZIONE HARDWARE (4) Processo entrante: diventa attivo a partire dalla situazione iniziale o dalla stessa situazione nella quale era stato precedentemente sospeso. Processo uscente: potrà di nuovo diventare attivo a partire dalla situazione in cui viene attualmente sospeso. Istruzione IRET: se il bit NT vale 1, provoca la commutazione inversa fra processi; il processo uscente è quello attualmente attivo e il processo entrante è quello il cui descrittore ha l’identificatore memorizzato nel descrittore del processo attualmente attivo (campo Link); la commutazione viene effettuata con una sequenza di azioni analoga a quella prevista per il meccanismo di interruzione; il bit NT viene azzerato prima che il contenuto del registro EFLAG del processore venga memorizzato nel descrittore del processo uscente. G. Frosini – Multiprogrammazione e Protezione Slide 21
COMMUTAZIONE HARDWARE (5) Il meccanismo automatico consente l’annidamento dei processi. G. Frosini – Multiprogrammazione e Protezione Slide 22
COMMUTAZIONE HARDWARE (6) Meccanismo di interruzione: se il gate coinvolto è di tipo Interrupt/Trap, pone a 0 il bit NT del registro EFLAG. Esecuzione di un processo per il quale il bit NT vale 1 (nel registro EFLAG del processore): arriva un’interruzione di tipo Interrupt/Trap; la routine che va in esecuzione, pur terminando con un’istruzione IRET, non provoca una commutazione di contesto; l’istruzione IRET stessa, ripristinando il vecchio valore del registro EFLAG, pone nuovamente il bit NT ad 1. G. Frosini – Multiprogrammazione e Protezione Slide 23
COMMUTAZIONE HARDWARE (7) Entrata della tabella GDT: contiene un bit B (busy); viene gestito dal meccanismo automatico di commutazione fra processi; ogni processo ha un solo descrittore, e quindi non può esservi ricorsione (diretta o mutua) dei processi stessi. Processo in esecuzione e processi sospesi per effetto di un’interruzione: hanno i rispettivi descrittori in una lista; se uno di tali processi venisse riattivato per effetto di una nuova interruzione, nel campo link del suo descrittore verrebbe scritta una nuova informazione, spezzando il collegamento della lista; al termine dell’esecuzione del processo, l’istruzione IRET provocherebbe la scrittura di nuove informazioni nel descrittore di tale processo (uscente), con conseguente distruzione delle informazioni esistenti. G. Frosini – Multiprogrammazione e Protezione Slide 24
COMMUTAZIONE HARDWARE (8) Processo attivato dal meccanismo di interruzione: deve essere libero (bit B a 0), e nel momento in cui viene attivato viene anche marcato come occupato (bit B a 1). Processo in esecuzione (e quindi occupato): rimane occupato quando viene sospeso per effetto di una nuova interruzione. Processo sospeso (e quindi occupato): se il suo identificatore è memorizzato nel campo link del processo in esecuzione, torna in esecuzione rimanendo occupato quando quest’ultimo esegue una istruzione IRET. Processo in esecuzione: viene marcato come libero dall’istruzione IRET, quando termina la sua esecuzione. G. Frosini – Multiprogrammazione e Protezione Slide 25
G. Frosini – Multiprogrammazione e Protezione Slide 26 LIVELLI DI PRIVILEGIO Processore: a seconda della configurazione di uno specifico registro, può trovarsi in due diversi stati di funzionamento (o livelli di privilegio), stato sistema e stato utente; lo stato sistema è superiore allo stato utente. G. Frosini – Multiprogrammazione e Protezione Slide 26
ISTRUZIONI PRIVILEGIATE Stato sistema: il processore può eseguire tutte le istruzioni. Stato utente: il processore può eseguire solo un sottoinsieme di istruzioni, quelle non privilegiate, e non può eseguire le altre istruzioni, quelle privilegiate. Programma in cui compare un’istruzione privilegiata: se il processore, quando si appresta ad eseguirla e si trova in stato utente, genera un’eccezione di protezione. Esempi di istruzioni privilegiate: istruzioni che coinvolgono i registri speciali del processore; istruzione di alt. Registro che memorizza lo stato del processore (registro CPL: Current Pribilege Level): rientra fra quelli speciali, e può essere modificato solo con istruzioni privilegiate. G. Frosini – Multiprogrammazione e Protezione Slide 27
G. Frosini – Multiprogrammazione e Protezione Slide 28 DIRITTI DI ACCESSO Descrittore di pagina: specifica, nel byte di accesso, il livello di privilegio per quella pagina (bit S/U). Accesso per prelevare istruzioni (fetch): lecito solo se il processore ha lo stesso livello di privilegio di quella pagina (CPL = S/U). Accesso per trattare operandi (read o write): lecito solo se il processore ha un livello di privilegio maggiore o uguale di quello della pagina (CPL >= S/U); consistente con i diritti di accesso alla pagina (R/W). Regole di protezione violate: il processore genera un’eccezione di protezione. G. Frosini – Multiprogrammazione e Protezione Slide 28
PILE E LIVELLI DI PRIVILEGIO Pile differenti per gli stati sistema e utente: una sola pila che si trovasse a livello sistema non sarebbe accessibile da stato utente; una sola pila che si trovasse a livello utente non sarebbe utilizzabile, per motivi di protezione, per informazioni concernenti lo stato sistema (il prelievo dalla pila, operazione di pop, non è distruttivo). Istruzioni che operano sulla pila (istruzioni che usano come registri di modifica ESP o EBP): livello di privilegio del processore uguale a quello della pagina (o delle pagine) utilizzata per la realizzazione della pila (CPL = S/U). Conseguenza: pagine private di ciascun processo si possono avere, oltre che a livello utente, anche a livello sistema. G. Frosini – Multiprogrammazione e Protezione Slide 29
CAMBIAMENTO DI PRIVILEGIO Processo: livello di privilegio memorizzato nel suo descrittore; quando va in esecuzione, il suo livello di privilegio viene trasferito nel registro relativo allo stato del processore; si hanno processi sistema e processi utente. Livello di privilegio di un processo: può venir modificato per mezzo del meccanismo di interruzione. Processo utente: può portarsi volontariamente a livello sistema, eseguendo un’istruzione INT (interruzione software), poiché intende mandare in esecuzione una routine di sistema operativo (primitiva) che fornisca servizi che l’utente non può (o non deve) effettuare autonomamente; può venir interrotto da una interruzione hardware, che manda in esecuzione un driver che, per le azioni che compie, deve avere livello di privilegio sistema. G. Frosini – Multiprogrammazione e Protezione Slide 30
PROTEZIONE NEL PROCESSORE PC (1) Codifica dello stato di funzionamento del processore: valore del registro CPL: 0 stato sistema, 1 stato utente. Livello di privilegio di una pagina: byte di accesso: valore del bit S/U: 0 stato sistema, 1 stato utente.; valore del bit R/W: 0 pagina solo leggibile, 1 leggibile e scrivibile. Relazione fra gli stati: stato sistema più privilegiato (logicamente) di stato utente, quindi maggiore, a prescindere dalla codifica. Direttorio e tabelle delle pagine, tabella GDT, tabella IDT, descrittori di processo, descrittori di pagina fisica: si trovano in pagine che hanno livello di privilegio sistema. G. Frosini – Multiprogrammazione e Protezione Slide 31
PROTEZIONE NEL PROCESSORE PC (2) Istruzioni di ingresso/uscita: possono essere o meno privilegiate; questo viene stabilito scrivendo un’opportuna configurazione nel campo IOPL (I/O Privilege Level) del registro EFLAG; ogni modifica di questo campo può essere effettuata solo se il processore si trova in stato sistema. Istruzioni di abilitazione o disabilitazione delle richieste di interruzione mascherabili: stesso livello di privilegio delle istruzioni di I/O (I/O sensitive) G. Frosini – Multiprogrammazione e Protezione Slide 32
INTERRUZIONI E PROTEZIONE (1) Descrittore di processo: contiene, in posizione prefissata (dopo una prima parola lunga relativa a un identificatore di processo) il puntatore ESPSv per la pila sistema. Registro TR: specifica base e limite del descrittore del processo attualmente in esecuzione, per cui la quantità ESPSv è accessibile dal meccanismo hardware di interruzione. Registro IDTR: contiene base e limite della tabella IDT. G. Frosini – Multiprogrammazione e Protezione Slide 33
INTERRUZIONI E PROTEZIONE (2) G. Frosini – Multiprogrammazione e Protezione Slide 34
INTERRUZIONI E PROTEZIONE (3) Gate di interruzione, contenuto in ognuna delle entrate della tabella IDT (massimo 256): può essere di tipo Interupt/Trap (bit I/T) o di tipo Task; nel primo caso contiene l’indirizzo virtuale della routine di interruzione; nel secondo caso contiene l’identificatore del nuovo processo (13 bit più significativi: i 3 bit meno significativi dell’identificatore non sono memorizzati nel gate ma valgono comunque 0); in ogni caso è presente un bit L (Livello di privilegio futuro). Byte di accesso: sono presenti un bit di presenza GP e un bit di privilegio GL. G. Frosini – Multiprogrammazione e Protezione Slide 35
INTERRUZIONI E PROTEZIONE (4) Interruzione: via hardware, viene esaminata l’entrata della tabella IDT specificata dal tipo dell’interruzione e vengono compiute sempre le seguenti azioni preliminari: esame del bit GP: se questo vale 0 generazione di una eccezione per tipo di interruzione non implementato; esame del bit GL: se trattasi di un’interruzione software o di un trap (per esempio, un’eccezione prodotta dall’istruzione INTO), GL deve essere minore o uguale a CPL, altrimenti viene generata una eccezione di protezione; se trattasi di interruzione hardware o di un fault (per esempio, un page-fult) GL può essere qualsivoglia. G. Frosini – Multiprogrammazione e Protezione Slide 36
INTERRUZIONI E PROTEZIONE (5) Elenco delle azioni per gate di tipo Interrupt/Trap. esame del bit L; se L è minore di CPL viene generata una eccezione per cambiamento di stato non lecito; se L è uguale a CPL (nessun cambiamento di stato): memorizzazione in pila dei valori attuali di EFLAG, CPL ed EIP; caricamento di CPL con L (operazione superflua) e di EIP con Indirizzo; azzeramento del flag TF se trattasi di un gate di Trap (IF non viene modificato), o di entrambi i flag TF e IF se trattasi di un gate di Interrupt; azzeramento del flag NT; microsalto alle microoperazioni di chiamata. G. Frosini – Multiprogrammazione e Protezione Slide 37
INTERRUZIONI E PROTEZIONE (6) se L maggiore di CPL (passaggio da stato utente a stato sistema): salvataggio in un registro di appoggio del valore attuale del registro ESP; caricamento in ESP del valore ESPSv prelevato dal descrittore del processo in esecuzione, tramite il registro TR; memorizzazione nella nuova pila di una prima parola lunga (non significativa) e del valore del registro ESP momentaneamente salvato; memorizzazione nella nuova pila dei valori attuali dei registri EFLAG, CPL ed EIP; caricamento di CPL con L e di EIP con Indirizzo; azzeramento del flag TF se trattasi di un gate di trap, o di entrambi i flag TF e IF se trattasi di un gate di interrupt; azzeramento del flag NT. microsalto alle microoperazioni di chiamata. G. Frosini – Multiprogrammazione e Protezione Slide 38
INTERRUZIONI E PROTEZIONE (7) Cambiamento di livello di privilegio: forma della nuova pila. G. Frosini – Multiprogrammazione e Protezione Slide 39
INTERRUZIONI E PROTEZIONE (8) Istruzione IRET: Se NT = 0 avvengono le azioni di seguito specificate: estrazione dalla pila attuale dei vecchi valori di EIP, CPL ed EFLAG; se il vecchio valore di CPL è uguale al valore attuale di CPL, allora: trasferimento dei vecchi valori di EIP, CPL (operazione superflua) ed EFLAG nei corrispondenti registri; altrimenti (il vecchio valore di CPL deve essere minore del valore attuale di CPL): trasferimento dei vecchi valori di EIP, CPL ed EFLAG nei corrispondenti registri, con conseguente ripristino del livello di privilegio utente; estrazione dalla pila attuale di due doppie parole e trasferimento della prima in ESP, con conseguente ripristino della pila utente. G. Frosini – Multiprogrammazione e Protezione Slide 40
INTERRUZIONI E PROTEZIONE (9) Interruzione (hardware o software): nuova quantità nel registro CPL; può provocare il passaggio da stato utente a stato sistema (e non viceversa). Ritorno da stato sistema a stato utente: può avvenire, alla fine della routine di interruzione, con l’esecuzione dell’istruzione IRET. G. Frosini – Multiprogrammazione e Protezione Slide 41
INTERRUZIONI E PROTEZIONE (10) Processo utente: non può darsi da solo un livello di privilegio superiore; può invocare solo routine di sistema (primitive) attraverso il loro numero d’ordine (ossia il tipo dell’interruzione); può essere interrotto da cause esterne, con una conseguente modifica automatica del livello di privilegio. Tabella delle interruzioni; deve essere posta a livello sistema. Routine di interruzione: per non avere eccezioni di protezione, deve trovarsi in pagine che hanno tutte un livello di privilegio uguale a quello in cui si è portato il processore. Incongruenze con il principio di protezione: meccanismo di interruzione che consenta di abbassare il livello di privilegio; sistema operativo che invoca una routine utente. G. Frosini – Multiprogrammazione e Protezione Slide 42
PROBLEMA DEL CAVALLO DI TROIA Processo utente: richiama una primitiva di sistema, passandogli come parametri indirizzi di variabili (buffer di memoria). Indirizzo trasmesso: potrebbe riferirsi a una pagina con livello di privilegio sistema; il processo in stato utente non può accedervi, ma, per dolo, intende accedervi con una primitiva di sistema, danneggiando i dati del sistema. Verifiche software da parte della primitiva: tramite la pila sistema, determinare il livello di privilegio CPL del chiamante; tramite le tabelle di corrispondenza, determinare il livello di privilegio della pagina a cui si riferisce l’indirizzo trasmesso; in caso di non consistenza, negare l’accesso. Situazione tipica: le pagine sistema hanno indirizzi virtuale che cominciano con 1, e non è quindi necessario accedere alle tabelle di corrispondenza. G. Frosini – Multiprogrammazione e Protezione Slide 43