Vai al contenuto
Home » Notes » Appunti Sistemi Operativi Capitolo Gestione della Memoria

Appunti Sistemi Operativi Capitolo Gestione della Memoria

Copertina appunti sistemi operativi capitolo gestione memoria indirizzi logici e fisici

Raccolta di Riassunti e Appunti di Sistemi Operativi, sotto forma di domande e risposte sul capitolo gestione della memoria, argomenti: pagetable, indirizzi fisici, indirizzi logici, TLB, caching, frammentazione.
Fonti: il mio libro di Sistemi Operativi Operating System Concepts with Java, di Silberschatz, Galvin e Gagne.

Appunti Riassunto Sistemi Operativi: Capitolo Gestione della Memoria

Cosa è la tabella delle pagine o pagetable? Cosa contiene e come si usa?

La tabella delle pagine è un array in cui ogni entry corrisponde ad una delle pagine in cui è stata suddivisa l’immagine del processo e contiene il numero del frame in RAM nel quale è stata memorizzata la pagina corrispondente ed eventuali bit aggiuntivi (bit di validità, bit di modifica…).

La tabella delle pagine viene usata nella traduzione degli indirizzi da logici a fisici tra CPU e memoria centrale, e permette di poter avere lo spazio di indirizzamento fisico di un processo non contiguo.

In un sistema con una tabella di pagine (che non è paginata su più livelli) come è fatto un indirizzo logico e cosa indicato le sue componenti? E un indirizzo fisico?

La tabella di pagine è lo schema di gestione della memoria che permette di allocare dati sulla memoria centrale in maniera non contigua, evitando frammentazione e conseguente compattamento.

In un sistema che implementa paginazione, dividiamo la memoria centrale (fisica) in frame e quella logica in pagine della stessa taglia. Quando un processo deve essere eseguito, carichiamo i suoi dati nella page table che usiamo come indice e nei frame sulla memoria fisica. L’indirizzo logico è composto da pagine|offset mentre l’indirizzo fisico è composto da frame|offset. Con offset intendiamo lo “scartamento” ovvero la distanza tra l’inizio del frame o pagina e la posizione dove si trova il dato

Com’è la struttura di un indirizzo logico? E di un indirizzo fisico? Spiegare bene il significato dei vari campi, e le loro eventuali relazioni

L’indirizzo logico è composto da Numero di pagina e Offset, l’indirizzo fisico è composto da numero di frame e offset. Il Numero di pagina indica la pagina sulla page table, il Numero di frame indica il frame di riferimento sulla memoria centrale. L’offset è necessario perché è lo “scartamento” ovvero la distanza tra l’inizio del blocco, frame o pagina, e la posizione dove si trova salvato il dato: l’offset è quindi uguale sia nell’indirizzo logico che in quello fisico.

Quando si parla di gestione della memoria centrale (RAM), cosa si intende con gestione di tipo “contiguo” (Contiguous Memory Allocation)? Che svantaggi principali presenta?

Nella Contiguous Memory Allocation, ogni processo è contenuto in una sezione di memoria contigua. Quando arriva un processo, viene allocata la memoria di un hole (blocco di memoria disponibile) grande abbastanza per contenerlo tutto.

Lo svantaggio principale di questo tipo di allocazione è la frammentazione esterna, cioè lo spazio totale libero è di dimensioni maggiori della taglia del processo, ma non è in posizione contigua. È quindi necessario usare la tecnica della compattazione a intervalli frequenti, per ricreare un unico hole (blocco di memoria disponibile) e riuscire così ad allocare la memoria al processo che la ha richiesta.

Quale è l’idea della paginazione? Perché è preferibile una gestione della memoria con paginazione rispetto alla gestione contigua? Perché è stata introdotta la paginazione?

La paginazione è la più comune tecnica di gestione della memoria nei sistemi elaborativi e permette di risolvere il problema della frammentazione esterna attraverso la non contiguità dello spazio degli indirizzi logici di un processo, potendo così assegnare la memoria fisica ai processi dovunque essa sia.

L’idea della paginazione è, quindi, quella di gestire i dati in memoria centrale attraverso un livello di astrazione più elevato, facendo uso di una tabella di pagine virtuale. Il sistema con paginazione è preferibile rispetto alla gestione contigua perché evita la frammentazione e la conseguente necessità di ricompattamento a intervalli regolari.

Cos’è la TLB (“Translation Lookaside Buffer”) ? A che cosa serve?

La TLB (Translation Lookaside Buffer, chiamata anche memoria associativa) è una cache hardware di piccole dimensioni, estremamente veloce nelle operazioni di lookup, implementata come una tabella a due colonne (una chiave e un valore) con qualche migliaio di entries. La TLB contiene solo alcune pagine della Page Table, perché si basa sul principio di località dei processi. Quando la CPU richiede di accedere a un indirizzo di memoria, viene effettuato un rapidissimo controllo nella TLB. Se l’indirizzo è in TLB, il conseguente accesso alla RAM è diretto: questo caso è noto come TLB hit. Se l’indirizzo non è invece in TLB, caso noto come TLB miss, è necessario “passare dalla page table” per poi accedere alla RAM. Quando calcoliamo l’EAT, infatti, calcoliamo:

 TLB hit*(tempo accesso TLB + tempo ram) + TLB miss*(tempo accesso TLB + tempo page table + tempo ram)

Perché i moderni sistemi operativi usano una gestione paginata della memoria primaria?

La gestione paginata permette di evitare la frammentazione esterna e la conseguente necessità di ricompattamento.

Se in un sistema non si vuole usare una paginazione a più livelli, quale soluzione alternativa si può adottare?

La soluzione alternativa che si può adottare è quella di utilizzare un’inverted page table oppure una tabella delle pagine di tipo hash.

Quali sono i vantaggi e gli svantaggi della paginazione della memoria?

I principali vantaggi della paginazione della memoria sono: assenza di frammentazione esterna e di conseguenza assenza di compattazione e miglior gestione delle dimensioni variabili dei processi.

I principali svantaggi, invece, sono: maggior lavoro per il sistema operativo (è richiesta la gestione dei frame liberi e un aumento del tempo di context switch), una parte di memoria occupata dalla page table, maggior tempo di traduzione degli indirizzi da logici a fisici e necessità di un supporto hardware per effettuare questa traduzione (memoria associativa TLB), altrimenti avremmo ogni volta il doppio del tempo di accesso in memoria.

Quando succede che la tabella delle pagine debba essere paginata? In questi casi come sarà strutturato un indirizzo logico?

Una tabella di pagine deve essere paginata se la sua dimensione è più grande della taglia dei frames in cui è divisa la memoria centrale. In questo caso il nuovo indirizzo logico sarà così composto:

Page number p1 | page number p2 | offset

Con i primi due page number che indicano, rispettivamente, il riferimento alla pagina della tabella di pagine di primo livello e il riferimento di pagina alla tabella di secondo livello

Ci potrebbero essere problemi di efficienza dovuti alla paginazione a più livelli? Se sì, come vengono risolti?

La paginazione a più livelli più generare problemi di efficienza qualora ci fosse un numero eccessivo di livelli. Questi problemi possono essere risolti con l’utilizzo di altri metodi di paginazione, come la inverted page table (in cui la tabella ha un elemento per ogni pagina reale o frame) o la page table di tipo hash (in cui l’argomento della funzione hash è il numero della pagina virtuale).

Cosa vuol dire Frammentazione interna ed esterna? Che differenza c’è?

Per frammentazione esterna si intende la non contiguità tra i blocchi occupati dai dati. Ne è esempio la RAM con la memoria virtuale, o anche l’allocazione concatenata o indicizzata nell’hard disk. Per frammentazione interna si intende, invece, lo spreco di spazio dovuto al fatto che più blocchi potrebbero non essere utilizzati interamente.

Altri Capitoli:
Architettura e struttura del Sistema operativo
Processi e Thread
CPU scheduling

Grazie per la lettura

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *