


















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Una panoramica dettagliata sulla gestione della memoria in sistemi operativi, con un focus particolare su paginazione e segmentazione. come i moderni sistemi operativi gestiscono la memoria con tecniche di memoria virtuale, come paginazione e segmentazione, e illustra le tecniche di allocazione contigua e non contigua. Vengono inoltre descritte le vantaggi e svantaggi di ogni tecnica e le strategie di sostituzione utilizzate per gestire i page fault.
Typology: Study Guides, Projects, Research
1 / 26
This page cannot be seen from the preview
Don't miss anything!



















PROF. RAFFAELLA FALCO
⚫ La gestione concorrente di molti programmi applicativi comporta la presenza di molti programmi in memoria centrale ⚫ Nei moderni sistemi operativi la gestione della memoria avviene con tecniche di memoria virtuale attuate con: ⚪ paginazione ⚪ segmentazione
Il SO offre a ogni programma applicativo la visione di una memoria virtuale, di dimensioni maggiori di quella fisica.
Il swapping dei processi avviene quando un processo è spostato temporaneamente sul disco e il suo posto può essere occupato da un altro processo in attesa di esecuzione.
Swap out e swap in sono le due operazioni di rimozione dalla memoria e di ritorno in memoria.
⚫ Allocazione contigua tutto lo spazio assegnato ad un programma deve essere formato da celle consecutive ● a partizione singola ● a partizioni multiple ○ fisse ○ variabili ⚫ Allocazione non contigua è possibile assegnare a un programma aree di memorie separate ● paginazione ● segmentazione ● segmentazione con paginazione
Queste tecniche realizzano il concetto di memoria virtuale
Vantaggi nelle tecniche di allocazione non contigua
⚫ riducono la frammentazione della memoria, allocando ai processi spazio di memoria non contiguo; ⚫ permettono di caricare in memoria solo le parti del codice effettivamente utilizzate; ⚫ aumento del numero dei processi che possono essere contemporaneamente presenti in memoria; ⚫ è possibile eseguire processi di dimensione superiore a quella delle memoria fisica; ⚫ sfruttano il principio di località: ⚪ Principio di località temporale , è molto probabile che, in un dato intervallo di tempo, un processo tende ad accedere agli stessi indirizzi di memoria; ⚪ Principio di località spaziale , se un programma accede ad una cella di memoria probabilmente entro breve tempo accederà a celle vicine.
⚫ Suddivide la memoria fisica (memoria centrale) in blocchi chiamati frame o pagine fisiche della stessa dimensione (una potenza di 2, fra 512 byte e 16 MB Le pagine fisiche non devono necessariamente essere contigue!!! ⚫ Divide la memoria logica in blocchi delle stesse dimensioni dei frame chiamati pagine o pagine logiche Il processo è allocato all’interno della memoria logica in uno spazio contiguo
Per eseguire un processo di dimensione di n pagine, bisogna trovare n frame liberi e caricare il programma
Il SO imposta una tabella delle pagine per tradurre gli indirizzi logici in indirizzi fisici
La tabella delle pagine associa l’indirizzo di una pagina logica al corrispettivo indirizzo della pagina nella memoria fisica
⚪ il numero del frame, ⚪ l’indicazione di chi occupa il frame corrispondente [PID e numero pagina del processo che la occupa] o il numero 0 se il frame è libero, ⚪ un bit di variazione, che dice se la pagina è stata modificata ⚪ un bit di riferimento, che dice se la pagina è stata usata.
RAM
0 1 4 1 0 2 1 6 3 0 4 0 5 9 6 7
tabella delle pagine
Pagina Bit divalidità Frame
Algoritmi di sostituzione : ⚫ Algoritmo FIFO → La pagina da eliminare è quella che è stata più a lungo in memoria ⚫ Algoritmo LRU - Least Recently Used → La pagina da eliminare è quella che è non è stata usata da maggior tempo ⚫ Algoritmo LFU - Least Frequently Used → si mantiene un contatore del numero di accessi ad una pagina la pagina con il valore minore viene scelta come vittima ⚫ Algoritmo MFU - Most Frequently used → si mantiene un contatore del numero di accessi ad una pagina la pagina con il valore maggiore viene scelta come vittimaAlgoritmo della seconda opportunità ⚫ Algoritmo NRU -Not Recently Used → E’ una variante del FIFO che evita di eliminare una pagina dalla memoria solo perché è stata caricata da molto tempo. L’algoritmo fa uso di un bit di riferimento che dice se la pagina è stata referenziata (letta e/o scritta). L’algoritmo esamina la coda FIFO, ma prima di rimuovere la pagina che si trova in cima alla coda controlla il valore del bit di riferimento: ⚪ se = 0 ( pagina non modificata ) la pagina viene rimossa ⚪ se = 1 ( pagina modificata ) la pagina viene messa in fondo alla coda con il valore riportato a 0
⚫ La segmentazione si basa su una suddivisione logica, effettuata a priori, del programma che andrà in esecuzione. Tale suddivisione prevede l'individuazione di unità di dimensioni diverse, chiamate segmenti , sulla base di criteri logici anche da parte del programmatore. ⚫ Un programma può essere suddiviso in un segmento contenente il codice relativo alle procedure di uso più frequente, in un altro contenente le variabili globali e così via. ⚫ La suddivisione in segmenti è dettata da criteri di minimizzazione delle chiamate tra segmenti.