G. Frosini – Multiprogrammazione e Protezione Slide 1

Slides:



Advertisements
Presentazioni simili
memoria gestita staticamente:
Advertisements

Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
Le funzioni in C++. Introduzione  Spesso alcuni gruppi di operazioni vengono ripetute in diverse parti all’interno del medesimo programma  Si pensi.
IL PROCESSORE I MICROPROCESSORI INTEL Il microprocessore è un circuito integrato dotato di una struttura circuitale in grado di effettuare un determinato.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Sistemi Operativi : Gestione della Memoria Anno Scolastico 2012/2013 Un sistema operativo è un programma o un insieme di programmi che garantisce e permette.
Il Sistema Operativo. Sistema Operativo (Software di base) Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità.
Gestione delle configurazioni Configuration management (CM) E` un processo che controlla le modifiche fatte a un sistema e gestisce le diverse versioni.
IL SISTEMA OPERATIVO (seconda parte) PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI.
Programmare “per gioco” SCRATCH Lo programmerò. Programmerò solo per lei.
Informatica - CDL in Scienze Politiche e delle Relazioni Internazionali A.A Architettura di un calcolatore Ing. Simona Colucci.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
CONTROLLO DELLA CONCORRENZA
LA CLASSIFICAZIONE DIMENSIONI DEL CONCETTO DI CLASSIFICAZIONE (Marradi, ) classificazione a: operazione intellettuale con cui l’estensione di.
IL SOFTWARE (FPwin 6.0).
“Vivere insieme” – Lezione6
Sistemi operativi.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Architettura e funzionalità
Sicurezza e protezione
G. Frosini Memoria virtuale Slide 1
BUS PCI G. Frosini Bus PCI Slide 1.
La rappresentazione delle informazioni
Sistema di Analisi e di Acquisizione
LE ARCHITETTURE NON VON NEUMANN
I microprocessori Il microprocessore è un circuito integrato costituito da silicio. Il microprocessore svolge fondamentalmente due funzioni: sovraintende.
10. Programmazione Ricorsiva Ing. Simona Colucci
Cammino dei Dati (Datapath)
G. Frosini Interruzioni Slide 1
DMA (BUS MASTERING PCI)
Unità di apprendimento 7
GPT Vs. MBR Vantaggi introdotti dalla formattazione con la tabella delle partizioni GPT.
CALCOLATORI ELETTRONICI Anno Accademico
CORRISPONDENZA C++ ASSEMBLER
Macchine sequenziali Capitolo 4.
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Istruzioni per il nuovo sistema di acquisizione dati
SAS® OnDemand for Academics SAS Studio
analizzatore di protocollo
Architettura dei calcolatori
Database
Italsoft srl Guida allo Sportello Italsoft srl
Introduzione L’8254 è un interval timer event/counter, progettato per risolvere i problemi del controllo del timing, comuni ad ogni microcomputer. E’ costituito.
Controllo e microprogrammazione
Processi e Thread Meccanismi di IPC (1).
Programmazione e Laboratorio di Programmazione
Richiesta Accreditamento dei Soggetti Attuatori
Scheduling in Linux (Kernel 2.4 e 2.6)
Ricorsione 16/01/2019 package.
Codici rilevatori di errori
Definizione di linguaggio di programmazione
Esercitazione su Instruction Level Parallelism
Processi e thread in Windows 2000
Italsoft srl Guida allo Sportello Italsoft srl
Excel 3 - le funzioni.
Parti interne del computer
Unico 2009 – Esempi per la crisi
Programmazione e Laboratorio di Programmazione
Portale Acquisti Alperia
Array e Stringhe Linguaggio C.
Programmazione e Laboratorio di Programmazione
Progetto del processore e supporto del processore al SO (interruzioni – eccezioni) Salvatore Orlando.
Relazioni tra CPU e Memoria e Dispositivi I/O
Algoritmi.
LA CLASSIFICAZIONE DIMENSIONI DEL CONCETTO DI CLASSIFICAZIONE (Marradi, ) classificazione a: operazione intellettuale con cui l’estensione di.
Transcript della presentazione:

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