Memoria. Sistemi Operativi Giuseppe Prencipe. Memoria virtuale. Gestione della memoria. Paginazione su richiesta. Paginazione su richiesta



Documenti analoghi
GESTIONE DELLA MEMORIA CENTRALE

9. Memoria Virtuale. 9. Memoria Virtuale. 9. Memoria Virtuale

Sistemi Operativi. 5 Gestione della memoria

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Gestione della memoria centrale

SISTEMI OPERATIVI. La memoria virtuale. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

Sistemi Operativi Kernel

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.

Gestione della memoria

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

La Gestione delle risorse Renato Agati

Memoria Virtuale. Lezione 29 Sistemi Operativi

Il memory manager. Gestione della memoria centrale

memoria virtuale protezione

Memoria virtuale. Riassumendo Meccanismo di traduzione indirizzi con tabella TLB Ogni processo ha la sua PMT Politiche della memoria virtuale E

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Il Sistema Operativo

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Configurazione della ricerca desktop di Nepomuk. Sebastian Trüg Anne-Marie Mahfouf Traduzione della documentazione in italiano: Federico Zenith

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Architettura hardware

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Gestione della Memoria

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

File system II. Sistemi Operativi Lez. 20

SCHEDULING DEI PROCESSI

La memoria virtuale 9.2. Sistemi Operativi a.a. A.A

Appunti sulla Macchina di Turing. Macchina di Turing

Architettura di un sistema di calcolo

Sistemi Operativi. 10 LEZIONE MEMORIA VIRTUALE CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Opertivi 2007/08

Cosa è un foglio elettronico

Algoritmi e strutture dati. Codici di Huffman

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

STRUTTURE DEI SISTEMI DI CALCOLO

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

ASPETTI GENERALI DI LINUX. Parte 2 Struttura interna del sistema LINUX

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Esempio: aggiungere j

Pronto Esecuzione Attesa Terminazione

I processi Unix. Entry della tabella dei processi

CMS ERMES INFORMATICA

Sistemi Operativi SCHEDULING DELLA CPU

Calcolatori Elettronici A a.a. 2008/2009

4 3 4 = 4 x x x 10 0 aaa

= 0, 098 ms. Da cui si ricava t 2 medio

Laboratorio di Informatica

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Guida all uso di Java Diagrammi ER

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Esercitazione E2 Memoria virtuale

Invio SMS. DM Board ICS Invio SMS

Uniamo VM e CACHE. Physically addressed. Physically Addressed. Prestazioni. Ci sono varie alternative architetturali. Sono quelle piu semplici

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Il calendario di Windows Vista

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Architettura del calcolatore

Funzioni in C. Violetta Lonati

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

MANUALE PARCELLA FACILE PLUS INDICE

Corso di Sistemi di Elaborazione delle informazioni

MANUALE EDICOLA 04.05

La memoria - generalità

Sistemi Operativi a.a Esercizi - 2

Sistema operativo: Gestione della memoria

Corso di Informatica

1. Si consideri uno spazio di indirizzamento logico di otto pagine di 1024 parole ognuna, mappate su una memoria fisica di 32 frame.

FONDAMENTI di INFORMATICA L. Mezzalira

Mac Application Manager 1.3 (SOLO PER TIGER)

Coordinazione Distribuita

Strutturazione logica dei dati: i file

9. Memoria Virtuale. 9.1 Memoria Virtuale: introduzione

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Workland CRM. Workland CRM Rel /11/2013. Attività --> FIX. Magazzino --> NEW. Nessuna --> FIX. Ordini --> FIX

Memoria Virtuale. Anche la memoria principale ha una dimensione limitata. memoria principale (memoria fisica) memoria secondaria (memoria virtuale)

Come masterizzare dischi con Nero 11

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

Il Sistema Operativo (1)

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Transcript:

Sistemi Operativi Giuseppe Prencipe Memoria Virtuale Memoria Abbiamo visto varie tecniche per gestire la memoria Permettono la presenza contemporanea di più processi in memoria La memoria virtuale è una tecnica che permette di eseguire processi che possono anche non essere completamente contenuti in RAM 1 2 Gestione della memoria Un programma deve essere in memoria per poter essere eseguito Caricarlo tutto in RAM Overlay e caricamento dinamico aiutano ad attenuare questa limitazione Caricarne solo una parte Le condizioni d errore in un programma servono raramente Anche se c è bisogno di avere tutto il programma in RAM, spesso non è necessario caricarlo tutto in una volta Con il secondo metodo, il programma non è vincolato alla quantità di memoria fisica disponibile. Gli utenti scrivono programmi per uno spazio degli indirizzi virtuale 3 Memoria virtuale Tipicamente si realizza nella forma di paginazione su richiesta o segmentazione su richiesta Gli algoritmi di sostituzione dei segmenti sono più difficili da realizzare, dato che i segmenti sono a dimensione variabile 4 Paginazione su richiesta Quando un processo sta per essere caricato, il paginatore fa una predizione sul numero di pagine che saranno usate prima che il processo sia scaricato Sono necessari meccanismi per distinguere le pagine presenti in memoria da quelle nei dischi Bit di validità Non valido significa che La pagina non appartiene allo spazio logico del processo (accesso illegale), o Che la pagina cercata non è in memoria fisica Fin quando il processo accede pagine valide, è come se l intero processo fosse in memoria L accesso a una pagina marcata come non valida causa un eccezione di pagina mancante (page fault trap) Paginazione su richiesta In seguito a un insuccesso nell accesso a una pagina, viene eseguita una procedura di gestione Se il riferimento non era valido perchè illegalesi termina il processo Se era non valido semplicemente perchè la pagina non era stata caricata in memoriaviene caricata Si individua un blocco di memoria libero (lista dei blocchi liberi) Si trasferisce la pagina dal disco al blocco designato Si modifica la tabella delle pagine Si riprende l esecuzione del processo (sospeso in seguito alla trap) Fig. 10.4 5 6 1

Paginazione su richiesta pura È possibile avviare l esecuzione di un processo senza che nessuna delle sue pagine sia in memoria Cosa accade in questo caso???? Paginazione su richiesta pura 7 Paginazione su richiesta Per realizzare la paginazione su richiesta, occorrono i meccanismi necessari alla paginazione Tabella delle pagine Memoria ausiliaria (swap) Bisogna porre attenzione a riavviare l esecuzione dell istruzione che ha causato il page fault Es.: si consideri ADD(A,B)C Prelievo istruzione ADD Prelievo A Prelievo B Somma A e B Memorizza in C Se il page fault avviene con la memorizzazione in C (perché C si trova in una pagina non in RAM)bisogna rieseguire l istruzione dall inizio dopo aver caricato la pagina contenente C Approfondire ulteriori esempi sul testo 8 Paginazione su richiesta La paginazione su richiesta può avere un effetto rilevante sulle prestazioni del sistema Sia ma il tempo d accesso in memoria (10 200 nanosec circa) Sia p la probabilità che si verifichi un page fault. Abbiamo che il tempo d accesso effettivo in memoria (TAE) è TAE=(1-p)xma+px(tempo gestione fault) In seguito a un page fault Si genera la trap, e si salvano resgistri utente e stato del processo Si determina la natura della trap (pagina mancante) Si controlla la correttezza del riferimento e si determina la locazione della pagina nel disco Lettura dal discoeventuale scheduling CPU Ulteriori attese dovute a (eventuali) code sul dispositivo di I/O Interrupt I/O Context switch (se c è stato scheduling CPU) Si determina la provenienza dell interrupt dal disco Si aggiorna la tebella delle pagine Si attende che la CPU sia di nuovo assegnata a questo processo Recupero dello stato del processo 9 Paginazione su richiesta Considerando un tempo medio di 25 millisec per gestire il page fault e di 100 nanosec per l accesso in memoria, abbiamo (in nanosecondi) TAE=(1 - p) x 100 + p x (25 millisec)= (1 - p) x 100 + p x 25.000.000= 100 + 24.999.900 x p Il TAE è proporzionale alla frequenza dei fault. Se un accesso su 1000 causa faulttae è di 25 microsecondi il calcolatore è rallentato di un fattore 250 Occorre tenere bassa la frequenza dei fault Gestione I/O Copiare le pagine dal disco all area di swap (è più veloce gestire I/O dall area di swap che dal file system) Si prendono le pagine dal file system, ma poi si scaricano nell area di swap 10 Creazione dei processi Un processo viene creato con una system call...???? Usando opportunamente la paginazione, si accelera la creazione Fork Crea un processo figlio, assegnando una copia dello spazio d indirizzi del genitore Tipicamente, dopo la fork, il figlio esegue una exec, che sovrascrive lo spazio appena copiato Per migliorare le prestazioni si usa la copiatura su scrittura (copy-on-write) Inizialmente il figlio condivide le pagine del padre (con la paginazione condivisa, si realizza semplicemente) Le pagine che potrebbero essere modificate dal figlio vengono marcate come pagine da copiare in scrittura Se il figlio scrive su una di queste pagine, allora il SO provvede a farne una copia nello spazio d indirizzi del figlio 11 Creazione dei processi Al momento della duplicazione, bisogna trovare una pagina libera Tipicamente si mantiene un pool di pagine libere per questo scopo Queste pagine sono assegnate con azzeramento su richiesta, cioè la pagina viene rimepita di zeri prima di essere assegnata 12 2

Associazione alla memoria Quando si effettua un accesso a un file su disco, bisogna utilizzare chiamate di sistem (open, read, write, close) Per accelerare le operazioni di I/O, si considera l accesso al file come un ordinario accesso in memoria (associazione dei file alla memoria) L accesso al file avviene tramite la normale paginazione su richiesta, che determina (inizialmente) una pagina mancante A questo punto si carica una (o più) pagina del file dal disco in memoria Tutte le operazioni su file sono operazioni in memoria 13 Associazione in memoria Normalmente, le scritture del file in memoria non corrispondono a scritture effettive del file su disco Alla chiusura del file, bisogna riportare le pagine dalla memoria sul disco In questo modo si può realizzare la condivisione di un file Ogni modifica apportata a una delle pagine del file in memoria sarà immediatamente visibile a tutti i processi che condividono quel file Fig. 10.5 La coordinazione dell accesso ai dati condivisi critici deve avvenire in mutua esclusione 14 Sostituzione delle pagine La paginazione su richiesta si basa sul principio che vengono caricate in RAM solo alcune di tutte le pagine di cui il processo avrà bisogno In questo modo si può aumentare il grado di multiprogrammazione, caricando in RAM alcune pagine di più processi Cosa accade se si verifica un page fault? Il SO verifica che si tratta di una trap dovuta a pagina mancante (e non ad accesso illegale) Localizza su disco la pagina da caricare Sceglie una pagina libera in RAM (dalla lista dei blocchi liberi) Effettua il caricamento Ovviamente, mirando ad aumentare il grado di multiprogrammazione, e dato che alcune delle pagine sono destinate anche all I/O, accade che la lista dei blocchi liberi risulti vuota (non ci sono pagine libere) Cosa si fa? Si può terminare il processo a cui manca la pagina. NO!!!! La paginazione su richiesta è un tentativo di migliorare le prestazioni. Inoltre la paginazione deve essere completamente trasparente all utente Il SO può scaricare dalla memoria l intero processo, liberando le sue pagine, ma riducendo il grado di multiprogrammazione Oppure sostituisce le pagine 15 Sostituzione pagine IDEA: se nessun blocco di memoria è libero, se ne libera uno attualmente inutilizzato Il blocco si libera scrivendo il suo contenuto nell area di swap, e aggiornando la tabella delle pagine Il blocco libero si utilizza per caricare la pagina che ha causato la trap 16 Sostituzione pagine Quindi, la procedura di servizio dell eccezione diventa S individua la locazione nel disco della pagina richiesta Si cerca un blocco libero in memoria Se esiste, viene assegnato Altrimenti si seleziona una pagina vittima da scaricare Si scrive la pagina vittima su disco, e si modifica la tabella delle pagine e la lista dei blocchi liberi Si scrive la pagina richiesta nel blocco liberato, e si modificano la tabella delle pagine e la lista dei blocchi liberi Si riprende il processo utente 17 Sostituzione pagine Se non ci sono blocchi liberi, sono necessari due trasferimenti di pagine!! Per cercare di ridurre questo sovraccarico, si utilizza il bit di modifica È associato a ogni pagina per determinare se è stata modificata o meno Per realizzare la paginazione su richiesta bisogna avere Algoritmo di assegnazione dei blocchi liberi Quanti blocchi assegnare a ogni processo? Algoritmo di sostituzione dell pagine 18 3

Sostituzione pagine Tipicamente un buon algoritmo di sostituzione delle pagine minimizza la frequenza delle assenze di pagine Un algoritmo si valuta generando una successione di riferimenti alle pagine Casuale Analizzando un sistema reale Con questa tecnica si possono avere milioni di indirizzi al secondo Per ridurre la mole di dati da analizzare si nota che Interessa solo il numero di pagina per ogni accesso e non tutto l indirizzo Se una pagina è in memoria, tutti gli accessi a quella pagina non causano fault, quindi la successione di riferimenti è più corta della successione di indirizzi (pag. 343) Inoltre bisogna conoscere anche il numero di blocchi di memoria 19 Sostituzione FIFO A ogni pagina si associa il tempo in cui quella pagina è stata portata in memoria Si sostituisce la pagina presente in memoria da più tempo Non è necessario memorizzare il tempo. Infatti, è sufficiente strutturare le pagine in memoria con una coda FIFO Es. Fi. 10.9: Successione riferimenti: 7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1 3 blocchi di memoria 20 Sostituzione FIFO Non ha sempre buone prestazioni Infatti, è possibile che una pagine lette frequentemente vengano sostuituite e quindi generino eccessivi page fault Anomalia di Belady 1,2,3,4,1,2,5,1,2,3,4,5 # assenze di pagine 16 14 12 10 8 6 4 2 # blocchi di memoria 1 2 3 4 5 6 7 21 Sostituzione ottimale Si indica con MIN o OPT l algoritmo che presenta la minima frequenza di assenza di pagine e non presenta mai l anomalia di Belady IDEA: si sostituisce la pagina che non si userà per il periodo di tempo più lungo Es. Fig 10.11 Difficile da realizzare, dato che richiede la conoscenza futura della successione dei riferimenti Analogia con quale altro algoritmo del SO???? Si utilizza per studi comparativi 22 Sostituzione LRU Cerca di approssimare l algoritmo ottimo FIFO: si utilizza l istante in cui la pagina è stata caricata in memoria OPT: si utilizza l istante in cui una pagina è usata LRU: si utilizza come approssimazione di un futuro vicino un passato recente, e si sostituisce la pagina che non è stata usata per il periodo più lungo (least recently used LRU) 23 Sostituzione LRU Associa ad ogni pagina l istante in cui è stata usata per l ultima volta Per sostituire una pagina, l algoritmo sceglie quella che non è stata usata per il periodo più lungo Costituisce l ottimo tra gli algoritmi che ricercano indietro nel tempo Infatti, la frequenza di assenze di pagine per l algoritmo OPT su una sequenza S è uguale a quella per LRU sull inversa di S (e viceversa) Fig. 10.12 24 4

Sostituzione LRU È di difficile realizzazione Come realizzare un ordine per i blocchi di memoria definito secondo il momento dell ultimo uso? Contatori Pila Sostituzione LRU contatori Ogni elemento della tabella delle pagine contiene un campo momento d uso Alla CPU si aggiunge un registro contatore che viene incrementato ad ogni riferimento in memoria Ogni volta che si fa riferimento a una pagina, si copia il valore del registro nel campo momento d uso nella sua tabella delle pagine Bisogna fare una ricerca nella tabella delle pagine per trovare la pagina LRU Scrivere in memoria (nel campo momento d uso) per ogni accesso in memoria Possibilità di overflow del registro contatore 25 26 Sostituzione LRU pila Presenza di un pila dei numeri delle pagine Ogni volta che si fa riferimento a una pagina, la si estrae dalla pila e la si colloca in cima in cima alla pila si trova la pagina usata più recentemente in fondo, quella usata meno recentemente Alcuni elementi devono essere estratti dal centro della pila Realizzazione tramite lista doppiamente concatenata, con un puntatore all elemento in cima e uno a quello in fondo Per estrarre una pagina dalla pila, nel caso peggiore, si devono modificare pochi puntatori Per una sostituzione non si devono fare ricerche Sostituzione LRU LRU e OPT non presentano l anomalia di Belady Algoritmi a pila: classe di algoritmi che non la presentano Cioè, si dimostra che l insieme delle pagine in memoria per n blocchi è sempre un sottoinsieme dell insieme delle pagine che dovrebbero essere in memoria per n+1 blocchi Per realizzare LRU è necessario il supporto dell architettura Aggiornamento contatore/pila per ogni accesso in memoria Non si può fare con interrupt (e procedure di servizio)!!!! 27 28 Approssimazione LRU Poche architetture offrono supporto per la realizzazione dell LRU Quindi bisogna ricorrere a sue approssimazioni Un aiuto è dato dal bit di riferimento È associato a ogni pagina (nella tabella delle pagine) Inizialmente tutti i bit sono a 0 Viene impostato a 1 quando una pagina è riferita (lettura/scrittura) È possibile stabilire quali pagine sono state riferite o no Chiaramente non è possibile conoscere l ordine d uso delle pagine (necessario per LRU), ma consente di progettare algoritmi che approssimano LRU Con bit supplementari di riferimento Si registra il bit di riferimento associato a ogni pagina I bit registrati si tengono in una stringa di bit in una tabella in memoria A intervalli regolari, un interrupt trasferisce il controllo al SO, che scrive il bit di riferimento per ogni pagina nel bit più significativo della stringa associata a quella pagina, scartando il bit meno significativo (traslazione a destra) Se si usano stringhe di 8 bit, 00000000 significa che la pagina non è riferita da 8 intervalli 11111111 significa che la pagina è stata riferita almeno una volta in ognuno degli ultimi 8 intervalli In questo modo si può stabilire un ordinamento fra le pagine Chiaramente le stringhe non sono uniche, e in caso di conflitto (più pagine con associata la stringa minima) Si scaricano tutte le pagine con stringa minima Oppure in ordine FIFO 29 30 5

Seconda chance Il numero di bit utilizzati per le stringhe dipende dall architettura Nel caso in cui è zero (cioè si usa il solo bit di riferimento) algoritmo con seconda chance È un algoritmo di tipo FIFO Si selezionano le pagine in ordine FIFO Se il bit di riferimento è zero, la pagina si scarica Se 1, le si da una seconda chance tenendola in memoria, azzerando il bit di riferimento, e aggiornando il suo istante d arrivo in memoria al tempo attuale In questo modo, una pagina a cui si offre una seconda chance non viene sostituita fino a quando???? Fino a che tutte le altre pagine non sono state scaricate o non è stata offerta loro una seconda chance Se una pagina è usata spesso (il suo bit di riferimento è sempre 1), non viene mai scaricata 31 Seconda chance Un metodo per realizzare la seconda chance è basato sull uso di una coda circolare Un puntatore indica la prima pagina da sostituire Quando serve un blocco di memoria, si fa avanzare il puntatore fino a una pagina con bit 0 Tutti i bit che esamina fino a quello su cui si ferma sono posti a 0 (erano sicuramente a 1) Trovata la pagina vittima, la si sostituisce e si inserisce la nuova pagina nellaposizione corrispondente Nel caso peggiore, cosa accade???? la coda viene percorsa tutta, dando a tutte le pagine una seconda chance 32 Seconda chance II Si migliora se si utilizza la coppia (bit di riferimento, bit di modifica) (0,0) non usata, non modificatamigliore da sostituire (0,1) non usata recentemente, ma modificataoccorre salvarla in memoria (1,0) usata recentemente, non modificata-->probabilmente sarà usata di nuovo (1,1) usata e modificataprobabilmente sarà usata di nuovo e dovrà essere salvata su disco Si usa lo schema della coda circolare e si sostituisce la pagina che si trova nella classe minima non vuota Occorre scandire la lista più volte per trovare la vittima 33 Sostituzione con conteggio Si utilizza un contatore del numero di riferimenti che sono stati fatti a ciascuna pagina Due schemi Sosituzione delle pagine meno frequentemente usate (least frequently used LFU) Si sostituisce la pagina con il conteggio più basso Svantaggio: pagina usata molto all inizio e poco dopo ha un contatore alto e rimane in memoria Soluzione: traslazione a destra del contatore a intervalli regolari Sostituzione delle pagine più frequentemente usate (most frequentlu used MFU) Si basa sull osservazione che probabilmente la pagina con il contatore più basso è stata appena inserita e quindi non è stata ancora usata Poco usati, perché onerosi da realizzare e non approssimano bene OPT 34 Memorizzazione transitoria delle pagine Per migliorare le prestazioni Il sistema conserva un gruppo di blocchi liberi Quando si ha un fault, invece di attendere che venga selezionata la pagina vittima, si carica subito la pagina in uno dei blocchi liberi del gruppo Quando poi la pagina vittima è selezionata, viene scaricata, e il suo blocco aggiunto al gruppo dei blocchi liberi Si estende l idea Conservando un elenco delle pagine modificate Quando il dispositivo di paginazione è inattivo, si sceglie una pagina modificata, la si salva su disco (non la si scarica!!!!) e si reimposta il suo bit di modifica In questo modo si aumenta la probabilità che quando quella pagina sarà sostituita non la si dovrà salvare su disco Ricordando quale pagina era contenuta in ogni blocco libero, la pagina può continuare ad essere usata anche dopo essere stata scaricata A ogni richiesta di pagina si deve controllare anche se si trova in uno dei blocchi liberi 35 Assegnazione blocchi memoria Come si assegnano i blocchi liberi ai processi? Nel caso di un solo utente/processo, la situazione è semplice L idea di fondo è di assegnare qualsiasi blocco libero al processo utente Se si ha multiprogrammazione, le strategie di assegnazione dei blocchi di memoria sono soggette a vari vincoli 36 6

Assegnazione blocchi memoria Non si possono assegnare più blocchi di memoria di quanti ne siano disponibili (a meno di condivisione di pagine) Deve esistere un numero minimo di blocchi di memoria che si devono assegnare Se si ha page fault prima che l esecuzione di un istruzione è completa, bisogna iniziarle da capo Es.: se ho istruzioni di load, allora almeno due blocchi; se ho istruzioni di load indirette, almeno 3 blocchi Il numero minimo di blocchi da assegnare dipende dall architettura PDP-11: l istruzione MOV copre più di una parolasta in più di una pagina (a cavallo di due pagine) Riferimenti indiretti non possono essere illimitati: in questo caso si potrebbero chiamare in causa tutte le pagine della memoria virtuale Rimedio: limitare il livello dei riferimenti indiretti (ad es., con max 16 livelli, il numero minimo di pagine da assegnare sarebbe di 17) Il numero minimo di blocchi da assegnare dipende dall architettura (set di istruzioni), mentre il numero max dipende da...???? Memoria fisica disponibile!!!! Algoritmi di assegnazione Assegnazione uniforme: se ci sono m blocchi e n processisi possono dare ad ogni processo m/n blocchi Eventuali resti si possono assegnare al gruppo di blocchi liberi Assegnazione proporzionale: si riconosce che i processi hanno bisogni diversila memoria disponibile si assegna a ciascun processo in base alla sua dimensione Sia si la dimensione della memoria virtuale di Pi S=Σsi, e m numero di blocchi liberi Al processo pi si assegnano ai=si/s x m blocchi Chiaramente si sceglie ai in modo che la somma degli ai sia m, e che ciascun ai sia un intero maggiore del numero di blocchi minimo richiesto dall architettura 37 38 Algoritmi di assegnazione In entrambi gli schemi, il numero di blocchi assegnati può variare a seconda del grado di multiprogrammazione I processi a bassa priorità e quelli ad alta priorità sono trattati allo stesso modo Per migliorare la situazione, si possono assegnare i blocchi proporzionalmente alla priorità piuttosto che alla dimensione Algoritmi di assegnazione Gli algoritmi di assegnazione dei blocchi sono legati anche a quelli di sostituzione delle pagine Sostituzione globale: un processo può avere assegnato un blocco che in quel momento è occupato da qualche altro processo Processi a alta priorità sottraggono blocchi a quelli a bassa priorità Un processo non può controllare la propria frequenza di assenza delle pagine Sostituzione locale: i blocchi a un certo processo vengono assegnati solo dal suo insieme di blocchi Il numero di blocchi assegnato a un processo non cambia Non usa pagine che sono poco usate e assegnate ad altri processi La sostituzione globale è più produttiva ed è il metodo più usato 39 40 Attività di paginazione degenere Se un processo non dispone di un numero sufficiente di blocchi di memoria, si verificano parecchie assenze di pagine. Ciò comporta: basso utilizzo della CPU Il processo continua a subire assenze di pagine, facendo sostituire pagine che saranno immediatamente trattate come assenti e dovranno essere riprese. Paginazione degenere Esempio: un pò di processi caricati, sostituzione globale delle pagine Processo richiede più pagine Page faults Dispositivo di paginazione Pagine sottratte ad altri processi Page faults Thrashing degenerazione dell attività di paginazione (si spende più tempo per la paginazione che per l esecuzione dei processi). 41 Processi in coda di paginazione Coda pronti si svuota SO aumenta il grado di multiprogrammazione Page faults 42 7

Attività di paginazione degenere Perché si verifica attività di paginazione degenere? Σ dimensione della località > dimensione totale della memoria Soluzione: sostituzione locale comunque, se un processo è in attività degenere, passa lo stesso la maggiorparte del tempo in coda di paginazione, aumentando i tempi di gestione della stessa e rallentando gli altri processi Località di riferimenti alla memoria Perché la paginazione funziona?? Modello di località Un processo, durante la sua esecuzione, si sposta di località in località Le località si possono sovrapporre Quindi si cerca di caricare in memoria la località corrente di un processo 43 44 Modello dell insieme di lavoro Δ finestra dell insieme di lavoro numero di riferimenti alle pagine (esempio: 10.000 riferimenti) WSS i (dimensione dell insieme di lavoro del processo P i ) = numero totale delle pagine che il processo accede negli ultimi Δ riferimenti (varia nel tempo) se Δ è troppo piccolo, non include l intera località. se Δ è troppo grande, può sovrapporre più località. se Δ = l insieme di lavoro coincide con l insieme di pagine cui il processo fa riferimento durante la sua esecuzione. D = Σ WSS i richiesta totale dei blocchi di memoria Se D > m (numero totale blocchi liberi) l attività di paginazione degenera (thrashing) Strategia: se D > m, il sistema operativo individua un processo da sospendere. NOTA: ogni processo usa attivamente le pagine nel proprio working set 45 Modello dell insieme di lavoro Uso del working set: il SO assegna a ogni processo un numero di pagine pari alla dimensione del suo insieme di lavoro Se la somma degli insiemi di lavoro supera il numero di blocchi disponibili si sospende un processo La finestra dell insieme di lavoro è dinamicadifficile tener traccia delle pagine che sono in un WSS 46 Modello dell insieme di lavoro Il modello dell insieme di lavoro si può approssimare con un segnale d interruzione del temporizzatore a intervalli fissi e con un bit di riferimento Esempio: Δ = 10.000 segnale d interruzione dal temporizzatore ogni 5000 riferimenti si mantengono in memoria 2 bit per ciascuna pagina quando si verifica un segnale d interruzione, i valori dei bit di riferimento di ciascuna pagina vengono copiati e poi azzerati se uno dei bit in memoria = 1 la pagina è nell insieme di lavoro Perché questo schema non è del tutto preciso? Per migliorarlo = 10 bit e un interruzione ogni 1000 riferimenti. Frequenza delle assenze di pagine frequenza delle assenze di pagine numero dei blocchi di memoria limite superiore limite inferiore si aumenta il numero di blocchi di memoria si riduce il numero di blocchi di memoria Un altra tecnica per controllare la degenerazione è quello della frequenza delle assenze di pagine Stabilisce un tasso accettabile di assenza delle pagine. Se la frequenza delle assenze di pagine è molto bassa, il processo potrebbe disporre di troppi blocchi di memoria. Se la frequenza delle assenze di pagine è eccessiva, significa che il processo necessita di più blocchi di memoria. 47 48 8

Altre considerazioni Prepaginazione Portare in memoria in blocco l insieme di lavoro di un processo (quando inizia o viene riattivato in seguito a sospensione) Quando un processo viene sospeso, bisogna salvare il suo WWS È vantaggiosa se costa meno della gestione dei page faults Dimensione delle pagine Frammentazione (per ridurla, scegliamo pagine...????) piccole Dimensione della tabella delle pagine (con piccole pagine si hanno tabelle...????) grandi Tempo richiesto per leggere o scrivere una pagina (per ridurre i tempi di I/O occorre usare pagine...????) grandi Località (vengono migliorate le caratteristiche di località usando pagine...????) piccole 49 Altre considerazioni (cont.) Portata del TLB (TLB reach): quantità di memoria accessibile dal TLB (translation lookaside buffer, memoria associativa) Portata del TLB = (numero di elementi) X (dimensione delle pagine) Idealmente, il TLB dovrebbe contenere l insieme di lavoro di un processo; altrimenti vi sarà un elevato grado di assenza delle pagine 50 Aumentare la portata del TLB Aumentare la dimensione delle pagine. Potrebbe portare a una maggiore frammentazione della memoria relativamente alle applicazioni che non richiedono pagine così grandi Impiegare diverse dimensioni delle pagine. Ciò consente alle applicazioni che richiedono dimensioni di pagina maggiori di utilizzarle senza che si verifichi un aumento della frammentazione La gestione di pagine diverse deve essere fatta dal SO (uno dei campi del TLB deve indicare la dimensione fisica della pagina riferita) 51 Altre considerazioni (cont.) Le prestazioni si possono migliorare anche a livello di programmazione (anche se la paginazione è del tutto trasparente) Struttura del programma (pagina di 1024b, matrice memorizzata per righe) int A[][] = new int[1024][1024]; Ciascuna riga è memorizzata in una pagina Programma 1 for (j = 0; j < A.length; j++) for (i = 0; i < A.length; i++) A[i,j] = 0; Quanti page fault abbiamo? 1024 x 1024 assenze di pagine Programma 2 for (i = 0; i < A.length; i++) for (j = 0; j < A.length; j++) A[i,j] = 0; Quanti page fault abbiamo? 1024 assenze di pagine 52 Altre considerazioni (cont.) Vincolo di I/O. Talvolta occorre permettere che alcune pagine si possano vincolare alla memoria Esempi tra i sistemi operativi Prendiamo in considerazione l I/O. Un processo richiede I/O Poi viene sospeso, e la pagina coinvolta nell I/O sostituita Quando l I/O è completato, la pagina interessata non è più in memoria Soluzioni Usare un area di sistema per i trasferimenti tra unità I/O e memoria (in questo modo i blocchi in memoria che devono ricevere i dati sono sicuramente presenti) Vincolare le pagine in memoria (non possono essere selezionate per la sostituzione) Bit di vincolo associato alla pagina Completato l I/O, si rimuove il vincolo Le pagine del nucleo (o di una sua parte) sono vincolate Windows NT Solaris 2 NOTA: Le elaborazioni in tempo reale sono poco adatte all uso di memoria virtuale 53 54 9

Windows NT Usa la paginazione su richiesta per gruppi di pagine (demand paging with clustering), richiamando quindi non solo la pagina richiesta ma anche quelle a essa adiacenti. Alla sua creazione, un processo riceve i valori del minimo insieme di lavoro e del massimo insieme di lavoro. Il minimo insieme di lavoro (working set minimum) è il minimo numero di pagine caricate nella memoria di un processo che il sistema garantisce di assegnare. Se la memoria è sufficiente, il sistema potrebbe assegnare un numero di pagine pari al suo massimo insieme di lavoro (working set maximum). Viene mantenuta una lista delle pagine fisiche libere, con associato un valore soglia che indica se è disponibile una quantità sufficiente di memoria libera Se si ha un fault, e il processo è al suo massimo, si procede per sostituzione locale Nel caso in cui la quantità di memoria libera scenda sotto la soglia, il gestore della memoria virtuale usa un metodo noto come regolazione automatica dell insieme di lavoro (automatic working set trimming) per riportare il valore sopra la soglia. In pratica, se a un processo sono state assegnate più pagine del suo minimo insieme di lavoro, il gestore della memoria virtuale rimuove pagine fino a raggiungere quel valore. 55 Solaris 2 Mantiene una lista delle pagine libere da assegnare ai processi che ne abbiano bisogno. Lotsfree: parametro associato alla lista delle pagine libere; rappresenta una soglia per l inizio della paginazione (1/64 memoria fisica) 4 volte al secondo si verifica se la memoria libera è < lotsfree. In questo caso si avvia il processo di pageout Pageout: scandisce le pagine usando un algoritmo simile alla seconda chance Scanrate è la frequenza di scansione delle pagine ed è compresa tra i valori slowscan e fastscan (secondo la quantità di memoria disponibile) Pageout è eseguito più frequentemente a seconda del quantitativo di memoria libera disponibile. 56 Scansione delle pagine nel Solaris 2 8192 fastscan frequenz adi scansione Per oggi basta!!!! 100 slowscan minfree desfree lotsfree memoria libera 57 58 Gestione del Page Fault (1) 1. Una eccezione provoca l invocazione del nucleo, salvando almeno il PC sullo stack (hw) 2. Salvataggio registri generali e altri reg. interni (assembler) 3. Il sistema determina la pagina logica richiesta registro speciale o software 4. Il sistema verifica la validità dell indirizzo, e ricerca una pagina libera o, in alternativa, una pagina vittima 5. Se la pagina vittima selezionata è stata modificata (dirty), viene scritta su disco 59 Gestione del Page Fault (2) 6. Il sistema richiede la lettura della pagina logica dal disco (schedulatore) va in esecuzione un altro processo pronto 7. Quando la lettura è completata (interruzione), si aggiorna la tabella delle pagine 8. Viene ripristinata l istruzione che ha causato il page fault 9. Il processo che ha causato il page fault viene schedulato 10. Ripristino dei registri, ritorno in modo utente (assembler) 60 Il processo riprende l elaborazione come se il page fault non fosse avvenuto 10

Ripristino dell Istruzione Il fault si può verificare in una dei tre accessi Problemi se l istruzione modifica i registri autoincremento, autodecremento Alcune macchine hanno dei registri interni che mantengono infomazioni di ripristino 61 (backup) # Vincolare le pagine in Memoria Memoria virtuale e I/O interagiscono occasionalmente Un processo richiede una lettura da un dispositivo su un buffer Mentre attende per l I/O passa in esecuzione un altro processo Il processo in esecuzione causa un page fault La pagina contenente il buffer del primo processo può essere selezionata per essere scaricata dalla memoria Necessità di vincolare alcune pagine Le pagine vincolate non possono essere scaricate dalla memoria (pinning) 62 Backing Store: area di swap Separazione tra Politiche e Meccanismi Process address space (a) Paginazione con un area di swap statica indirizzo iniziale su disco in TP (b) Paginazione con area di swap dinamica 63 Gestione di un page fault con un pager esterno (ispirata al sistema Mach) 64 Vincolo I/O 65 11