Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INDIRIZZI LOGICI E FISICI
Spazio di indirizzamento logico
- Ogni processo è associato ad uno spazio di indirizzamento logico
- Gli indirizzi usati in un processo sono indirizzi logici, ovvero riferimenti a questo spazio di indirizzamento
Spazio di indirizzamento fisico
- Ad ogni indirizzo logico corrisponde un indirizzo fisico
- La MMU opera come una funzione di traduzione da indirizzi logici a indirizzi fisici
ALLOCAZIONE DELLA MEMORIA
È una delle funzioni principali del gestore di memoria
Consiste nel reperire ed assegnare uno spazio di memoria fisica, a un programma che viene attivato oppure per soddisfare ulteriori richieste effettuate dai programmi durante la loro esecuzione
Allocazione contigua→tutto lo spazio assegnato ad un programma deve essere formato da celle consecutive
Allocazione non contigua→è possibile assegnare a un programma aree di memoria separate
Nota→la MMU deve essere in grado di gestire la conversione degli indirizzi in modo coerente
alla allocazione Statica→un programma deve mantenere la propria aerea di memoria dal caricamento allaterminazione,non è possibile rilocare il programma durante l'esecuzione
Dinamica→durante l'esecuzione, un programma può essere spostato all'interno dellamemoria
ALLOCAZIONE A PARTIZIONI FISSE
la memoria disponibile (quella non occupata dal s.o.) viene suddivisa in partizioniogni processo viene caricato in una delle partizioni libere che ha dimensione sufficiente acontenerlostatica e contigua
Vantaggi: molto semplice
Svantaggi: spreco di memoriase un processo occupa una dimensione inferiore a quella della partizione che lo contiene,lo spazio non utilizzato è sprecato la presenza di spazio inutilizzato all'interno di un'unità diallocazione si chiama frammentazione interna
ALLOCAZIONE A PARTIZIONI DINAMICHE
la memoria disponibile (nella quantità richiesta) viene assegnata ai processi che ne fannorichiestanella memoria possono
Best Fit seleziona il blocco libero più piccolo, ma sufficientemente grande, presente in memoria. È più lento di First Fit e Next Fit, ma riduce la frammentazione.genera + frammentazione
Worst fit seleziona il più grande fra i blocchi liberi presenti in memoria→difficilel'allocazione di processi di grosse dimensioni
PAGINAZIONE
i meccanismi visti (partizioni fisse, partizioni dinamiche) non sono efficienti nell'uso dellamemoria, la paginazione è l’approccio contemporaneo
- riduce il fenomeno di frammentazione interna
- minimizza (elimina) il fenomeno della frammentazione esterna
Lo spazio di indirizzamento logico di un processo viene suddiviso in un insieme di blocchidi dimensione fissa chiamati pagine
La memoria fisica viene suddivisa in un insieme di blocchi della stessa dimensione dellepagine, chiamati frame
Quando un processo viene allocato in memoria: vengono reperiti ovunque inmemoria un numero sufficiente di frame per contenere le pagine del processo 39la dimensione delle pagine deve essere una potenza di due, per semplificare latrasformazione da indirizzi logici a indirizzi fisici es 1KB, 2KB, 4KB,
4MBTranslation lookaside buffer (TLB) un TLB è costituito da un insieme di registri associativiad alta velocità ogni registro è suddiviso in due parti, una chiave e un valorela TLB agisce come memoria cache per le tabelle delle pagine, il meccanismo della TLB(come tutti i meccanismi di caching) si basa sul principio di località,l'hardware per la TLB ècostoso
In un sistema con segmentazione la memoria associata ad un programma è suddivisa inaree differenti dal punto di vista funzionale
- uno spazio di indirizzamento logico è dato da un insieme di segmenti
- un segmento è un'area di memoria (logicamente continua) contenente elementi traloro affini
- ogni segmento è caratterizzato da un nome (normalmente un indice) e da unalunghezza
- ogni riferimento di memoria è dato da una coppia <nome segmento, offset>
Spetta al programmatore o al compilatore la suddivisione di un programma insegmenti 40Memoria
Virtuale è la tecnica che permette l'esecuzione di processi che non sono completamente in memoria, permette di eseguire in concorrenza processi che nel loro complesso (o anche singolarmente) hanno necessità di memoria maggiore di quella disponibile.
La memoria virtuale può diminuire le prestazioni di un sistema se implementata (e usata) nel modo sbagliato. I processi non utilizzano tutto il loro spazio di indirizzamento contemporaneamente. Ogni processo ha accesso ad uno spazio di indirizzamento virtuale che può essere più grande di quello fisico.
Gli indirizzi virtuali possono essere mappati su indirizzi fisici della memoria principale, oppure possono essere mappati su memoria secondaria (spazio su disco).
In caso di accesso ad indirizzi virtuali mappati in memoria secondaria, i dati associati vengono trasferiti in memoria principale. Se la memoria è piena, si sposta in memoria secondaria i dati contenuti in memoria principale che sono considerati meno importanti.
Utilizzando la tecnica della paginazione, si adotta il demand paging, che permette di avere alcune pagine in memoria secondaria.
- Quando il sistema operativo carica l'indirizzo della prima istruzione nel program counter, si verifica un primo page fault.
- Una volta che la prima pagina viene portata in memoria, le altre vengono caricate solo quando vengono indirizzate perché contengono dati o codice.
Lo swap indica l'azione di copiare l'intera area di memoria utilizzata da un processo:
- Dalla memoria secondaria alla memoria principale (swap-in).
- Dalla memoria principale alla memoria secondaria (swap-out).
In alcuni sistemi operativi, il pager viene indicato con il nome di swapper.
L'area di swap indica l'area del disco utilizzata per ospitare le pagine in memoria secondaria:
- Individuazione della locazione richiesta.
- Individuazione del frame libero.
- La pagina richiesta viene caricata e vengono opportunamente aggiornate le tabelle.
- Viene riavviato il processo.
processo utente
Lo scaricamento può essere evitato se la pagina da scaricare non è stata modificata. Per verificare questa condizione occorre aggiungere alla pagina un bit di modifica (dirty bit) che viene gestito via hardware
Page fault
- Supponiamo che una istruzione macchina del codice in pagina 0 faccia riferimento alla pagina 1
- La MMU scopre che la pagina 1 non è in memoria principale
- Viene generato una eccezione di tipo fault "page fault", che viene catturato dal s.o.
- Il s.o. cerca in memoria secondaria la pagina da caricare
- Il s.o. carica la memoria principale con il contenuto della pagina
- Il s.o. aggiorna la page table in modo opportuno e riavvia l'esecuzione dell'istruzione
Cosa succede in mancanza di frame liberi? Occorre "liberarne" uno, la pagina vittima deve essere la meno "utile"
Quando il processo richiede un indirizzo:
- Se tenta di accedere a un indirizzo con bit di validità 1 → indirizzo logico
- Viene controllata la tabella interna del processo per stabilire se l’indirizzo logico è valido.
- Se il riferimento non era valido il processo viene terminato. Altrimenti se il riferimento è valido viene iniziato il trasferimento della pagina.
- Viene individuato un frame libero.
- Viene caricata la pagina mancante, dal disco al frame scelto.
- Viene modificata la tabella interna del processo e la tabella generale delle pagine.
- Viene riavviata l’esecuzione interrotta con il trap di page fault. A questo punto il programma può accedere all’indirizzo che è in memoria centrale.
- Tabella delle pagine, per il reperimento delle pagine, a cui è aggiunto il bit di validità.
- Backing store, realizzato su supporti di memoria secondaria, per la memorizzazione stabile delle pagine.
- Apposita MMU.
si trasformain fisico2) Se tenta di accedere a un indirizzo con bit di validità 0, viene generato un trap denominato page fault. Il trap interrompe l’esecuzione del processo e produce l’esecuzione del gestore delle interruzioni.
Gestione del page fault
Hardware richiesto
L’hardware richiesto per la gestione della memoria virtuale tramite demand
Paging è dunque sostanzialmente lo stesso necessario per la paginazione e lo swapping:
I programmi tendono ad avere località di riferimento, ovvero ad allocare in posizioni vicine, riferimenti "vicini".
In un sistema con memoria virtuale basata su paginazione su richiesta è importante tenere basso il numero dei page fault e scegliere bene il meccanismo di sostituzione.
Copiatura su scrittura (copy on write) basata sulla iniziale condivisione delle pagine da parte del processo padre e del processo figlio, quando il figlio tenta di modificare la pagina ne ottiene la copia reale.
TECNICHE DI SOSTITUZIONI DELLE PAGINE
L'algoritmo per la sostituzione delle pagine che decide quale pagina debba essere scaricata se non ci sono frame liberi.
ù tempo. Per fare ciò, tiene traccia dell'ultimo accesso a ciascuna pagina e, quando è necessario liberare un frame, seleziona la pagina che è stata acceduta meno di recente. L'algoritmo LRU è considerato uno dei più efficienti in termini di prestazioni, ma richiede una maggiore complessità computazionale rispetto ad altri algoritmi come FIFO. Anomalia di Belady: l'algoritmo LRU può soffrire dell'anomalia di Belady, che si verifica quando aumentando il numero di frame allocati, le prestazioni peggiorano anziché migliorare. Tuttavia, l'anomalia di Belady è meno comune con LRU rispetto a FIFO. L'algoritmo ottimale, noto anche come algoritmo di rimpiazzamento ottimo, è l'algoritmo teoricamente perfetto che seleziona sempre la pagina che verrà acceduta più tardi nel futuro. Tuttavia, è impossibile implementare l'algoritmo ottimale nella pratica poiché richiede di conoscere il futuro. Questi sono solo alcuni degli algoritmi di rimpiazzamento dei frame utilizzati per l'allocazione della memoria in un sistema operativo. Ogni algoritmo ha i suoi vantaggi e svantaggi e la scelta dell'algoritmo dipende dalle specifiche esigenze del sistema.