Gestione della Memoria

Slides:



Advertisements
Presentazioni simili
Scheduling (Schedulazione) Susanna Pelagatti – Università di Pisa
Advertisements

Gestione della Memoria
Meccanismi di IPC Problemi classici di IPC
CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
1 Introduzione ai calcolatori Parte II Software di base.
Introduzione Cosa è un Sistema Operativo? Una breve storia
Gestione della memoria centrale
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
Gestione della memoria
Il Sistema Operativo.
File System Cos’è un File System File e Directory
Massa Laura Mela Enrica
Gestione della Memoria
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Gestione del processore
Gestione della Memoria
Gestione del processore
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Sistemi Operativi - C Susanna Pelagatti
Realizzazione del file system
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Gestione della memoria
Realizzazione del file system
Gestione della memoria
File.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
eliana minicozzi linguaggi1a.a lezione2
Risorse e Stallo.
Struttura dei sistemi operativi (panoramica)
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
2) Sistemi operativi Lab. Calc. AA2004/05 - cap.2.
Università di Trieste Calcolatori Elettronici a.a Omero TuzziL01, Basi 1 Sommario: 1. Concetto di bit. 2. Indirizzi di memoria. 3. Ordinamento.
Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE.
Strutture dei sistemi di calcolo Funzionamento di un sistema di calcolo Struttura di I/O Struttura della memoria Gerarchia delle memorie Architetture di.
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
La Gestione della Memoria
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
Complessità di un algoritmo
Il Software Programmare direttamente la macchina hardware è molto difficile: l’utente dovrebbe conoscere l’organizzazione fisica del computer e il suo.
Architettura Centralizzata di un DBMS Relazionale
Sistema Operativo (Software di base)
Memoria La memoria è un vettore di stringhe di bit (word/parole) In memoria è allocato il Sistema Operativo. In memoria sono allocati i programmi per poter.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Architettura del calcolatore
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.
Foglio 1 Di cosa si occupa il gestore della memoria?
Gestione del processore (Scheduler)
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Gestione della Memoria
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
1 Gestione della Memoria Capitolo Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di.
Gestione della Memoria
L’esecuzione dei programmi
1 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
1 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione Gestione della Memoria.
Cos’è un sistema operativo ?
Informatica Generale Marzia Buscemi
La gerarchia di memorie
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Transcript della presentazione:

Gestione della Memoria Capitolo 4 Gestione della Memoria 4.1 Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di sostituzione 4.6 Criteri di progetto per la paginazione 4.7 Case study: Unix 4.8 Case study: Windows 2000

Gestione della memoria Tutti i programmi che compongono il SO ed i programmi applicativi attivi usano contemporaneamente la RAM Il gestore della memoria si preoccupa di fare condividere la RAM ai vari processi in esecuzione in modo che : ogni processo abbia il suo spazio privato distinto dagli altri (e inaccessibile agli altri) ogni processo abbia abbastanza memoria per eseguire il proprio algoritmo e raccogliere i suoi dati

Gestione della memoria (2) Le strategie viste finora ricopiano interamente lo spazio di indirizzamento di un processo P da memoria secondaria a RAM quando P va in esecuzione AmpiezzaRAM - 1 RAM vuota Spazio Ind processo 2 Spazio Ind processo 1 Area riservata, non accessibile in modalità utente Sistema Operativo

Gestione della memoria (3) Problemi: limite all’ampiezza dello SI Attualmente ogni processo usa almeno 4GB di spazio di indirizzamento, con RAM assai più piccole… memoria sottoutilizzata aree dello spazio di indirizzamento che non sono utilizzate occupano RAM (es. gap fra heap e stack) Soluzione: memoria virtuale ad ogni istante carico in RAM solo le parti di SI che servono per una certa fase dell’esecuzione diverse soluzioni: vedremo la paginazione

Paginazione: idea base (1) Lo spazio di indirizzamento di ogni processo è diviso in ‘fette’ (pagine logiche) tutte della stessa ampiezza 1 2 3 4 .. 1 2 3 4 .. Processo 2 Pagina Logica: ‘fetta’ dello spazio di indirizzamento (1-4K) Processo 1 1 2 3 4 .. Processo 3

Paginazione: idea base (2) Anche la RAM disponibile per i processi utente è divisa in pagine della stessa ampiezza (pagine fisiche) Pagina Fisica: ‘fetta’ dello RAM stessa ampiezza della pagina logica RAM vuota RAM vuota RAM vuota RAM vuota Sistema Operativo

Paginazione: idea base (3) Ad ogni istante solo le pagine necessarie per i processi in esecuzione sono caricate in RAM (si usa la località!) 1 2 3 4 .. 1 2 3 4 .. Processo 2 RAM vuota Processo 1 1 2 3 4 .. RAM vuota Sistema Operativo Processo 3

Paginazione: problema Esecuzione (corretta) dei programmi utente parzialmente caricati: tradurre correttamente l’indirizzo logico X (relativo allo spazio di indirizzamento) nell’indirizzo fisico Y (parola di RAM) in cui è caricato bloccare automaticamente accessi ad aree non caricate in RAM (page fault) aggiornare automaticamente l’insieme delle pagine in memoria scaricando/caricando da memoria secondaria quelle necessarie in una certa fase

Traduzione indirizzi ... Vogliamo tradurre X (ind. Logico) in Y (ind fisico) 66 Y ... 65 3 64 2 63 X 1 62 61 SI RAM ...

Traduzione indirizzi (2) Osservate che X = #pagLogica * s + offset s ampiezza della pagina (logica e fisica) offset indirizzo dentro la pagina (fra 0 ed s-1) quindi Y= f(#pagLogica) *s + offset f() funzione che associa ad ogni pagina logica il numero di pagina fisica in cui è caricata NB f() è definita solo per le pagine caricate

Traduzione indirizzi (3) X= 1*s + offset Y= f(1) *s + offset 66 Y ... Ampiezza di pagina (s) 65 offset 64 f 63 X 1 offset 62 61 SI RAM ...

Traduzione indirizzi (4) La traduzione degli indirizzi deve essere veloce! Va fatta ad ogni accesso in memoria Come si calcolano #pagLogica e offset ? Sono quoziente e resto della divisione per s in generale la divisione è molto costosa! È semplice se s=2k perché stiamo lavorando con indirizzi binari 31 k k-1 quoziente resto

Traduzione indirizzi (5) Quindi il calcolo è veloce es. pagine di 4KB= 212B basta selezionare (hw) i primi 12 bit per offset ed il resto per #pagLogica Come si calcola la funzione di corrispondenza f() ? Serve una tabella (la tabella delle pagine, TP) TP[#pagLogica] è il descrittore di pagina e contiene il numero di pagina fisica corrispondente bit Presente-Assente (se la pagina è in memoria o no) altro

Traduzione indirizzi (6) Cosa succede se la pagina non è in memoria? Presente-Assente = 0, si genera un page fault l’esecuzione del processo viene bloccata va in esecuzione il gestore della memoria la pagina logica viene localizzata su disco e caricata in RAM se la RAM è piena si individua una pagina vittima da scaricare dalla RAM algoritmi di rimpiazzamento : servono a selezionare la pagina vittima

La Memory Management Unit Organizzazione tipica dell’hw: posizione e funzione della MMU

La MMU (2) Operazioni di una MMU con 16 pagine di 4KB

Tabella delle Pagine Informazioni contenute in un descrittore di pagina il formato dipende dall’hw NON ci sono informazioni su dove trovare la pagina su disco (dipende dal SO)

Traduzione indirizzi (6) L’accesso alla tabella delle pagine deve essere veloce non può stare solo in RAM se no duplica il tempo di accesso non può stare tutta in MMU prenderebbe troppo spazio indirizzi a 32 bit e pagine di 4K, la size(TP)=220 record non tutti i descrittori servono contemporaneamente si usa una piccola cache dei descrittori in MMU TLB (Translation Lookaside Buffer) o memoria associativa tutta la tabella è in RAM

TLB - Translation Lookaside Buffer o Memoria Associativa Esempio di TLB

Tabella delle Pagine a due livelli Second-level page tables Top-level page table Descrittori di pagina PT1 PT2 offset 10 10 12

Tabella delle Pagine a due livelli (2) Second-level page tables Top-level page table 5 offset 10 10 12

Tabella delle Pagine Inversa Confronto tra tabella delle pagine tradizionale e tabella delle pagine inversa

Implementazione della Paginazione Il Sistema operativo invoca i meccanismi di paginazione in quattro circostanze: Creazione di un Processo Determina la dimensione dello spazio di indirizzamento Crea la tabella delle pagine Esecuzione di un Processo (context switch) Reset della MMU per il nuovo processo Aggiornamento del TLB (flush) Page fault Determina l’indirizzo logico che ha causato il page fault Sposta una pagina su disco (se necessario) e carica la pagina richiesta Terminazione di un Processo Dealloca la tabella delle pagine e le pagine del processo

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

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) Il processo riprende l’elaborazione come se il page fault non fosse avvenuto

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 (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)

Backing Store: area di swap Process address space (a) Paginazione con un’area di swap statica indirizzo iniziale su disco in TP (b) Paginazione con area di swap dinamica

Separazione tra Politiche e Meccanismi Gestione di un page fault con un pager esterno (ispirata al sistema Mach)