Sistemi Operativi. C.d.L. in Informatica (laurea triennale) Anno Accademico Dipartimento di Matematica e Informatica Catania

Documenti analoghi
Desiderata: memoria capiente e veloce. Connessioni tra livelli di memoria. Tecniche impiegate. Memoria cache, struttura. Metodo:

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

GESTIONE DELLA MEMORIA CENTRALE

Sistemi Operativi Gestione della Memoria (parte 2)

Memoria Virtuale. Lezione 29 Sistemi Operativi

Sistemi Operativi. 5 Gestione della memoria

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

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

memoria virtuale protezione

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

Esercizio: memoria virtuale

La memoria virtuale. La gerarchia di memorie. Indirizzo fisico. Memoria virtuale. Architetture Avanzate dei Calcolatori. Valeria Cardellini

Capitolo 9: Memoria centrale

SCHEDULING DEI PROCESSI

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il contesto! Gestione della Memoria! Reg. di Base e reg. Limite! Associazione tra dati/istruzioni e memoria!

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

La Gestione della Memoria

Memoria Virtuale. Lezione Sistemi Operativi

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

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

Desiderata: memoria capiente e veloce. Connessioni tra livelli di memoria. Memoria cache, struttura. Tecniche impiegate. Ad ogni accesso alla memoria

Lezione 19 Memoria Virtuale

Calcolatori Elettronici

Introduzione. il programmatore divideva il programma in diversi pezzi, chiamati overlay, ognuno dei quali poteva stare in memoria;

Gestione della memoria principale

Memorie Caratteristiche principali

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

HEX Bin HEX Bin HEX Bin HEX Bin C D A 1010 E B 1011 F 1111

Sistemi Operativi. Principi di ges tione della memoria S wapping Memoria virtuale

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica Facolta di Ingegneria, Universita La Sapienza Docente: Francesco Quaglia

Gestione della memoria centrale

Memoria virtuale e ottimizzazione

Gestione della Memoria Principale

Sistemi Operativi: Memoria

Esercitazione E2 Memoria virtuale

Capitolo 6 Le infrastrutture SoftWare

Il memory manager. Gestione della memoria centrale

Memoria virtuale. Strutture hardware e di controllo

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Memoria. Sistemi Operativi Giuseppe Prencipe. Tipica Gerarchia di Memoria. Gestione della Memoria. Modelli di gestione della memoria

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

Gestione della Memoria

Gestione della memoria

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

AXO. Operativi. Architettura dei Calcolatori e Sistemi. memoria virtuale

Gestione della memoria

Sistema operativo: Gestione della memoria

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

Memoria virtuale. Ivan Scagnetto. Università di Udine Facoltà di Scienze MM.FF.NN. A.A

I processi Unix. Entry della tabella dei processi

3.14 Modulo di memoria PCD3.R600 per flash-card (FC)

Sommario. G. Piscitelli

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

Memoria Virtuale. è la tecnica chge permette l esecuzione di processi che non sono completamente caricati in memoria principale

Il supporto al Sistema Operativo

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

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

Fondamenti di Informatica: Sistemi Operativi 1. Introduzione

Gerarchie di memoria. Gerarchie di memoria. Costi e capacità delle memorie. Gerarchie di memoria

Ambienti Operativi: Memoria

La Memoria Virtuale Ottimizzazione della memoria centrale

Gerarchia di memorie

SERVIZIO DI ACCESSO ALLA RETE CSI-RUPAR TRAMITE VPN SSL

Gerarchie di Memoria

SCHEDA TECNICA. PROCEDURA Ambiente

Gestione della memoria centrale

Sistemi Operativi. 8 LEZIONE MEMORIA CENTRALE 1 PARTE CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

9. Memoria Virtuale. 9.1 Memoria Virtuale: introduzione

La gestione dell I/O (Cap. 5, Tanenbaum)

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

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Sicurezza del File System

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

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

Parte V. Il File System

MEMORIA GERARCHIE DI MEMORIA

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

Ambienti Operativi: Memoria

Memoria virtuale. Introduzione Paginazione Fault

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

Memoria Cache. La memoria cache

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Cos è un Sistema Operativo?

Memory management 49

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Capitolo 11 La memoria cache

Gestione della memoria centrale

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

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

Università Ca' Foscari Venezia - Corso di Laurea in Informatica Sistemi Operativi. Problemi di riepilogo sulla prima parte del corso

Varie tipologie di memoria

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

Modello della memoria in Unix. Unix: Gestione della Memoria. Gestione della memoria in UNIX - fondamenti. Gestione della memoria in UNIX - storia

La gestione della memoria

Sistemi Operativi a.a Esercizi - 2

esercizi memoria virtuale maurizio pizzonia - sistemi operativi

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Ingegneria del Software

Transcript:

Sistemi Operativi C.d.L. in Informatica (laurea triennale) Anno Accademico 2010-2011 Dipartimento di Matematica e Informatica Catania Gestione della Memoria Prof. Mario Di Raimondo

Memoria centrale e processi Gerarchia di memoria; in particolare la memoria centrale (formata da RAM) rappresenta il livello più basso direttamente utilizzabile dalla CPU; astrazione della memoria a favore dei processi; vari livelli di astrazione (via via più complessi).

Senza alcuna astrazione Modello usato sui primi mainframe (anni '60) e sui primi PC (primi anni '80); i programmi utilizzano direttamente gli indirizzi fisici; difficile eseguire due programmi contemporaneamente; vari modelli:

Multiprogrammazione senza astrazione 1 soluzione: swapping dell'intero unico processo; 2 soluzione: mantenere più processi in memoria; problemi: rilocazione: rilocazione a compile-time; rilocazione statica in fase di caricamento: rallentamento del loader; protezione della memoria: lock & key: blocchi di memoria con delle chiavi di protezione e PSW con la chiave del processo in esecuzione.

Spazio degli indirizzi Spazio degli indirizzi: una astrazione per la memoria utilizzabile da un processo; rilocazione dinamica con registri base e registri limite; la CPU controlla gli accessi alla memoria in base ai registri; nei sistemi più evoluti questo è fatto dalla Memory Management Unit (MMU); i registri vanno aggiornati ad ogni context-switch; usata su: CDC 6600 e sull'intel 8088.

Swapping Il livello di multiprogrammazione è seriamente limitato dalla dimensione della memoria centrale; due approcci: swapping e memoria virtuale (che vedremo dopo); swapper (scheduler di medio termine) problemi con I/O pendenti memory compactation: lenta strategie di allocazione: dimensione fissa; dimensione dinamica; frammentazione interna vs. esterna.

Gestione dell'allocazione Due metodologie: bitmap; dimensione del blocco; liste dei blocchi liberi e occupati; ordinata per indirizzo; coalescenza; doppiamente collegata; algoritmi di ricerca in allocazione: first fit, next fit, best fit, worst fit, quick fit; ordinata per dimensione; liste separate; ottimizzazione per la lista dei blocchi liberi.

Memoria virtuale Cosa fare se un programma richiede più memoria di quella fisicamente disponibile? lo swapping non aiuta; overlay: gestore di overlay, suddivisione da parte del programmatore; memoria virtuale: si passa all'allocazione non contigua della memoria fisica; spazio di indirizzamento virtuale diviso in pagine; spazio della memoria fisica diviso in frame; dimensione delle pagine/frame: frammentazione interna; in alcuni casi è variabile (Solaris); non tutte le pagine relative ad un processo devono necessariamente risiedere in memoria; all'occorrenza vengono caricate dalla memoria secondaria; si adatta perfettamente ad un sistema multiprogrammato; protezione implicita tra processi.

Paginazione Gestita dalla MMU; bit di presenza; errore di pagina (page fault).

Uso di una tabella delle pagine spazio indirizzi virtuali: 2m n dim. pagina: 2 t-n n 2m-n pagine numero di pagina: (m-n) bit più significativi dell'indirizzo virtuale offset: n bit meno significativi spazio indirizzi fisici: 2t 2t-n frame m>t m-n n

Dettaglio su una voce della tabella delle pagine Numero del frame; bit presente/assente; protezione: lettura/scrittura ed eventualmente esecuzione; bit modificato (dirty bit): indica se la pagina è stata modificata; bit referenziato: impostato quando si fa un riferimento qualunque alla pagina; bit per disabilitare la cache.

Tabella dei frame Il S.O. tiene traccia dello stato di occupazione di ogni frame fisico attraverso la tabella dei frame; stato: occupato / libero; se occupato: da quale processo? viene consultata: ogni volta che viene creato un nuovo processo per creare la relativa tabella delle pagine di quel processo; ogni volta che un processo chiede di allocare nuove pagine.

Progettazione di una tabella delle pagine Sono due gli aspetti principali da curare: velocità nella consultazione; dimensione. Affrontiamo per ora il fattore velocità: due possibili idee di implementazione: avere un numero sufficiente di registri su cui caricare l'intera tabella; tabella interamente residente in memoria con un solo registro (Page-Table Base Register PTBR) che referenzia quella del processo attualmente in esecuzione; servono due accessi alla memoria per prelevare un dato dalla memoria; context switch molto veloce.

Uso di memoria associativa Translation Lookaside Buffer (TLB) dentro la MMU, dette anche Memorie (o registri) associative; osservazione di partenza: in genere un programma usa un gran numero di riferimenti ad un piccolo numero di pagine; un numero ridotto di registri (tra 8 e 64), con le seguenti voci: numero di pagina virtuale; bit per validità della voce della TLB; codice di protezione; dirty bit; numero di frame. ricerca parallelizzata in hardware; possibilità di voci vincolate; uso di address-space identifiers (ASID) vs. flush della TLB; TLB miss vs. TLB hit.

Effective Access Time (EAT) Facciamo un esempio: tempo di accesso alla memoria = 100 nsec; tempo di accesso alla TLB = 20 nsec; tempo effettivo di accesso sarà in questo caso: 120 nsec per TLB hit; 220 nsec per TLB miss; ipotizziamo un TLB ratio (percentuale di successi) dell'80%; tempo (medio) effettivo di accesso: 0.8 x 120 + 0.2 x 220 = 140 nsec in generale: tempo di accesso alla memoria: α tempo di accesso alla TLB: β TLB ratio: ε EAT = ε (α + β) + (1 - ε) (2α + β)

Tabelle delle pagine multilivello Resta il problema delle dimensioni: indirizzi virt. a 32 bit (Pentium): 1 milione di pagine da 4kb; tabella grande circa 4Mb (supponendo voci da 32 bit); necessita di memoria contigua; indirizzi virt. a 64 bit: 252 pagine da 4kb; soluzione: non mantenere l'intera tabella in memoria: tabelle multilivello (paginazione gerarchica); nel caso di 2 livelli, possono essere necessari 3 accessi alla memoria; anche su più livelli (ma in genere non più di 3).

Tabelle delle pagine invertite Una voce per ogni frame fisico; ogni voce riporta: (processo, pagina virtuale); tabella alquanto piccola a paragone delle t.p.; questa implicherebbe una ricerca molto lenta: tabella hash indicizzata sull'indirizzo virtuale; è comunque necessario mantenere le tabelle delle pagine (simili alle precedenti) da qualche parte in memoria (ma si possono paginare a loro volta); accoppiata con una TLB.

Algoritmi di sostituzione delle pagine In caso di page fault ed in assenza di frame liberi è necessario scegliere una pagina vittima; come sceglierla? problema simile alla gestione delle cache; obiettivo: minimizzare il numero di page fault in futuro; soluzione ottimale (algoritmo OPT): scegliamo la pagina che verrà referenziata in un futuro più lontano; ottimale ma difficilmente realizzabile; rappresenta comunque un termine di paragone.

Algoritmo NRU Raccogliamo un po' di statistiche sull'uso della pagine caricate: bit di referenziamento (R) e di modifica (M); aggiornati tipicamente in hardware; azzerati dal S.O.; possibilità di simularlo via software; bit di referenziamento azzerato periodicamente; algoritmo Not Recently Used (NRU): distinguiamo 4 classi di pagine: classe 0: non referenziato, non modificato; classe 1: non referenziato, modificato; classe 2: referenziato, non modificato; classe 3: referenziato, modificato; viene scelta una pagina dalla classe non vuota di numero più basso.

Algoritmo FIFO e della seconda chance Algoritmo First-In First-Out (FIFO): viene rimossa la pagina più vecchia; scelta non sempre felice: può rimuovere pagine, sì vecchie, ma magari molto usate; algoritmo della Seconda Chance: si tiene conto dell'attuale stato del bit R; viene rimossa la pagina più vecchia se non usata di recente.

Algoritmo Clock L'idea dell'algoritmo della seconda chance è buona ma si può implementare in modo più efficiente: algoritmo dell'orologio (clock).

Algoritmo LRU Probabilmente le pagine più usate di recente lo saranno anche in futuro; idea: rimuovere le pagine meno usate di recente; algoritmo Least Recently Used (LRU): buona idea ma non semplice e dispendioso da implementare: con supporto hardware: contatore nella CPU e campi relativi nella tabella delle pagine; tramite una matrice di bit: pagina 0 pagina 1 pagina 2 pagina 3 pagina 2 pagina 1 pagina 0 pagina 3 pagina 2 pagina 3

Algoritmo NFU LRU, anche se implementato in hardware, è dispendioso: pensiamo ad una sua approssimazione; algoritmo Not Frequently Used (NFU): si tratta di una approssimazione (via software) dell'algoritmo LRU; un contatore in ogni voce della tabella delle pagine; periodicamente il valore del bit R viene sommato a tale contatore; viene rimossa la pagina con il contatore più basso; problema: può erroneamente privilegiare pagine che sono state molto utilizzate in passato ma che invece sono scarsamente usate di recente: queste lo saranno, probabilmente, anche nel prossimo futuro.

Algoritmo di Aging Algoritmo di Aging: ad ogni scadenza del clock: shift a destra del contatore associato ad ogni pagina; accostamento a sinistra (come bit più significativo) del bit R.

Riepilogo sugli algoritmi OPT: non implementabile, ma utile come termine di paragone; NRU: approssimazione rozza dell'lru; FIFO: può portare all'eliminazione di pagine importanti; Seconda chance: un netto miglioramento rispetto a FIFO; Clock: come S.C. ma più efficiente; LRU: eccellente idea (vicina a quella ottima) ma difficilmente realizzabile se non in hardware; NFU: approssimazione software abbastanza rozza dell'lru; Aging: buona approssimazione di LRU con implementazione software efficiente.

Working set In fase di avvio di un processo si usa spesso la paginazione su richiesta (demand paging); comportamento tipico: località di riferimento; si può modellare il tutto in termini di working set; tipicamente muta durante la vita del processo; il processo tende a generare pochi page fault se il suo WS è contenuto complemtamente in memoria; in caso contrario tende a provocare frequenti page fault ed, in casi estremi, l'applicazione va in trashing; tenere traccia del WS (cosa non semplice) permette di: fare prepaginazione (prepaging) in fase di ripristino da swapping; altre forme di prepaging: in fase di avvio o caricando le pagine addiacenti (Linux e Windows); modellare algoritmi di sostituzione delle pagine più raffinati e costruiti sul modello del WS.

Algoritmi locali vs. globali Quali pagine considerare per la rimozione? solo quelle dello stesso processo: algoritmo locale; tutte le pagine (anche di altri processi): algoritmo globale; implicazioni legate ad un working set dinamico: soluzioni locali: tendono a lasciare frame inutilizzati o a fare trashing; soluzioni globali: quota iniziale tipicamente proporzionale alla dimensione del processo; analisi della Page Fault Frequency (PFF) per gli aggiustamenti.

Controllo del carico e dimensione delle pagine In un sistema sovraccaricato (troppi processi e/o poca memoria) può essere problematico gestire l'assegnazione dei frame; diagnosi: PFF sopra la soglia di guardia per tutti i processi; soluzione (vecchia): fare swapping di interi processi; rientra in gioco lo scheduler di medio-termine (swapper); bisogna comunque mantenere un certo grado di multiprogrammazione. Altra questione: quanto deve essere grande la pagina? trade-off che può bilanciare il S.O.: pagine grandi: maggiore spazio perso per la framm. interna; pagine piccole: tabelle delle pagine più grandi e minore efficienza nei trasferimenti da e per il disco; dimensione tipica: 4kb.

Spazi di indirizzamento separati e pagine condivise Con spazi di indirizzamento piccoli (216) tenere dati e codice insieme poteva diventare problematico: si usavano spazi separati (I-space, D-space). Altro problema: condivisione delle pagine; scenario: più istanze dello stesso programma, spreco di memoria; uso di I-space/D-space: semplice; senza I-space/D-space: più complicato ma fattibile; possibilità di condividere non solo il codice ma anche i dati; esempio: fork sui sistemi UNIX; meccanismo del copy on write.

Librerie condivise e file mappati Grandi librerie condivise sono comunemente usate; linking statico: inclusione del codice in fase di linking; grande spazio sprecato su disco e in RAM; linking dinamico: collegamento e caricamento a run-time di librerie condivise: risparmio di spazio su disco e in RAM (paginazione sulle librerie); sviluppo indipendente e facilità di aggiornamento; necessità di usare solo riferimenti relativi nelle librerie. File mappati: modello alternativo di I/O su file; possibilità di condivisione; le librerie condivise sono un caso particolare.

Politica di pulitura e interfaccia della memoria virtuale Il meccanismo di gestione dei page fault è efficiente soprattutto se ci sono frame liberi (o almeno pagine non sporche ) sempre disponibili; paging daemon: processo di servizio che controlla lo stato di occupazione globale dei frame del sistema; eventualmente provvede a ripulire alcuni frame (senza rimuoverli); usato ad esempio su Linux e Windows; alternativa molto simile: mantenere un pool di frame liberi per la memorizzazione transitoria delle pagine con possibilità di ripescaggio dal pool in caso di page fault. In alcuni casi è utile lasciare che l'astrazione della memoria virtuale sia manipolabile da parte delle applicazioni: creazione di aree di memoria condivise tra più processi; possibilità di scambio di dati ad alte prestazioni tra processi dello stesso sistema.

Segmentazione La paginazione alloca la memoria in blocchi di dimensione fissa (i frame); la segmentazione invece lo fa usando blocchi di dimensione variabile (i segmenti); asseconda la visione logica dell'utente (programmatore); facilita il linking delle procedure e la condivisione; più naturale gestione della protezione; implementazione: indirizzi bidimensionali: (# segmento, offset); tabella dei segmenti: # segmento (base, limite); problema: presenta frammentazione esterna; soluzione: approccio misto (segmentazione & paginazione).

Segmentazione su Pentium Intel Supporta: segmentazione e/o paginazione su due livelli; circa 16000 segmenti con indirizzamenti a 4Gb (32 bit); 2 tipi di tabelle per i segmenti (con circa 8000 voci ciascuna): local descriptor table (LDT): segmenti dei programmi; global descriptor table (GDT): segmenti del sistema operativo; 6 registri segmento: CS, DS, ; 4 livelli di protezione.

Segmentazione su Pentium Intel impiega memoria associativa (TLB).