Gestione della Memoria in Sistemi Operativi: Paginazione e Segmentazione, Study Guides, Projects, Research of Computer science

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

2020/2021

Uploaded on 10/11/2021

Duorey
Duorey 🇷🇴

1 document

1 / 26

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
PROF. RAFFAELLA FALCO
Sistema Operativo:
Gestore della memoria
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a

Partial preview of the text

Download Gestione della Memoria in Sistemi Operativi: Paginazione e Segmentazione and more Study Guides, Projects, Research Computer science in PDF only on Docsity!

PROF. RAFFAELLA FALCO

Sistema Operativo:

Gestore della memoria

Gestione della memoria:

Memoria Virtuale

⚫ 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.

Gestione della memoria:

Memoria Virtuale

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.

Gestione della memoria:

Memoria Virtuale

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

Gestione della memoria:

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.

Gestione della memoria: Paginazione

⚫ 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

Gestione della memoria: Paginazione

Gestione della memoria: Paginazione

La tabella delle pagine associa l’indirizzo di una pagina logica al corrispettivo indirizzo della pagina nella memoria fisica

Gestione della memoria: Paginazione

La paginazione permette di eseguire un programma

anche se non tutte le sue pagine sono presenti in

memoria: tali pagine restano nell’area di swap e

vengono caricate all’occorrenza.

Quando il programma fa riferimento ad una pagina

non presente in memoria ( page fault ) il sistema

provvede a caricarla ( page swapping ) e il processo

viene bloccato finché la pagina non è stata caricata.

La nuova pagina sarà caricata su un frame libero se

presente o su un frame occupato; in quest’ultimo

caso potrebbe prima essere necessario salvare la

pagina da sovrascrivere su disco (se, ad esempio,

questa ha subito modifiche dopo l’ultimo

caricamento).

Gestione della memoria: Paginazione

La rilocazione è dinamica e la memoria centrale viene

gestita con l’ausilio di due tabelle :

1) tabella di occupazione dei frame , di tante righe

quanti sono i frame, contenente per ogni riga

⚪ 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.

Gestione della memoria: Paginazione

RAM

0 1 4 1 0 2 1 6 3 0 4 0 5 9 6 7

tabella delle pagine

Pagina Bit divalidità Frame

Gestione della memoria: Paginazione

Trattamento del Page Fault

Gestione della memoria: Paginazione

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

Gestione della memoria: Segmentazione

⚫ 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.