Anteprima
Vedrai una selezione di 20 pagine su 93
Sistemi operativi Pag. 1 Sistemi operativi Pag. 2
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 6
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 11
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 16
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 21
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 26
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 31
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 36
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 41
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 46
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 51
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 56
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 61
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 66
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 71
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 76
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 81
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 86
Anteprima di 20 pagg. su 93.
Scarica il documento per vederlo tutto.
Sistemi operativi Pag. 91
1 su 93
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

MMU

Per ora illustriamo un semplice schema di associazione degli indirizzi tramite mmu, che è una genera-

lizzazione dello schema con registro di base descritto nel Paragrafo 9.1.1.

Il registro di base è ora denominato registro di rilocazione: quando un processo utente genera un

indirizzo, prima dell’invio all’unità di memoria, si somma a tale indirizzo il valore contenuto nel registro

di rilocazione. Per esempio, se il registro di rilocazione contiene il valore 14000, un tentativo da parte

dell’utente di accedere alla locazione 0 è dinamicamente rilocato alla locazione 14000; un accesso alla

locazione 346 è mappato alla locazione 14346.

Rilocazione dinamica con un registro di rilocazione

Il programma utente non vede mai i reali indirizzi fisici. Il programma crea un puntatore alla locazione

346, lo memorizza, lo modifica, lo confronta con altri indirizzi, tutto ciò sempre come il numero 346.

Solo quando assume il ruolo di un indirizzo di memoria (magari in una load o una store indiretta),

si riloca il numero sulla base del contenuto del registro di rilocazione. Il programma utente tratta

indirizzi logici, l’architettura del sistema converte gli indirizzi logici in indirizzi fisici.

7.2 Allocazione contigua della memoria

Generalmente si vuole che più processi utenti risiedano contemporaneamente in memoria centrale.

Perciò è necessario considerare come assegnare la memoria disponibile ai processi presenti nella coda

d’ingresso che attendono di essere caricati in memoria. Con l’allocazione contigua della memoria,

ciascun processo è contenuto in una singola sezione di memoria contigua a quella che contiene il processo

successivo.

Ogni indirizzo logico deve cadere nell’intervallo specificato dal registro limite; la mmu fa corrispondere

dinamicamente l’indirizzo fisico all’indirizzo logico sommando a quest’ultimo il valore contenuto nel

registro di rilocazione (vedi figura sotto), e invia l’indirizzo risultante alla memoria.

56

Sistemi Operativi 7 Memoria centrale

Registri di rilocazione e limite

Lo schema con registro di rilocazione consente al sistema operativo di cambiare dinamicamente le

proprie dimensioni. Tale flessibilità è utile in molte situazioni; il sistema operativo, per esempio,

contiene codice e spazio di memoria per i driver dei dispositivi. Se un driver di periferica non è

attualmente in uso, ha poco senso mantenerlo in memoria.

Uno dei metodi più semplici per l’allocazione della memoria consiste nel suddividere la stessa in par-

tizioni di dimensione variabile, dove ciascuna partizione può contenere esattamente un processo.

In questo schema a partizione variabile il sistema operativo conserva una tabella in cui sono indicate

le partizioni di memoria disponibili e quelle occupate.

La figura sotto illustra questo schema. Inizialmente, la memoria è completamente utilizzata e contiene

i processi 5, 8 e 2. Dopo l’uscita del processo 8 si forma un unico buco. Successivamente, entra

in memoria il processo 9, per il quale viene allocata memoria. Quindi il processo 5 viene rimosso,

producendo due buchi non contigui. Schema a partizione variabile

Che cosa succede quando non c’è sufficiente memoria per soddisfare le esigenze di un processo in

arrivo? Un’opzione semplice è rifiutare il processo e fornire un messaggio di errore appropriato. In

alternativa, possiamo inserire il processo in una coda di attesa. Quando, in seguito, la memoria viene

rilasciata, il sistema operativo controlla la coda di attesa per determinare se può soddisfare le richieste

di memoria di un processo in attesa.

In generale è sempre presente un insieme di buchi di diverse dimensioni sparsi per la memoria. Quando

si presenta un processo che necessita di memoria, il sistema cerca nel gruppo un buco di dimensioni

sufficienti per contenerlo. I criteri più usati per scegliere un buco libero tra quelli disponibili nell’insieme

sono i seguenti:

• First-fit: si assegna il primo buco abbastanza grande;

• Best-fit: si assegna il piú piccolo buco in grado di contenere il processo;

• Worst-fit: si assegna il buco piú grande. 57

Sistemi Operativi 7 Memoria centrale

Con l’uso di simulazioni si è dimostrato che sia first-fit sia best-fit sono migliori rispetto a worst-fit in

termini di risparmio di tempo e di utilizzo di memoria.

Entrambi i criteri first-fit e best-fit di allocazione della memoria soffrono di frammentazione esterna.

Caricando e rimuovendo i processi dalla memoria, si frammenta lo spazio libero della memoria in tante

piccole parti. Si ha la frammentazione esterna se lo spazio di memoria totale è sufficiente per soddisfare

una richiesta, ma non è contiguo; la memoria è frammentata in tanti piccoli buchi.

Una soluzione al problema della frammentazione esterna è data dalla compattazione. Lo scopo è

quello di riordinare il contenuto della memoria per riunire la memoria libera in un unico grosso blocco.

Il più semplice algoritmo di compattazione consiste nello spostare tutti i processi verso un’estremità

della memoria: tutti i buchi si spostano nell’altra direzione formando un grosso buco di memoria.

Un’altra soluzione é data dalla paginazione.

7.3 Paginazione

La paginazione é uno schema di gestione della memoria che consente allo spazio di indirizzamento

fisico di un processo di essere non contiguo. La paginazione evita la frammentazione esterna e la

necessitá di compattazione. L’implementazione della paginazione è frutto della cooperazione tra il

sistema operativo e l’hardware del computer.

Il metodo di base per implementare la paginazione consiste nel suddividere la memoria fisica in blocchi

di dimensione fissa, detti frame, e nel suddividere la memoria logica in blocchi di pari dimensione,

detti pagine. Quando si deve eseguire un processo, si caricano le sue pagine nei frame disponibili.

Ogni indirizzo generato dalla cpu è diviso in due parti: un numero di pagina (p), e un offset di pagina

(d ):

Il numero di pagina serve come indice per la tabella delle pagine relativa al processo. La tabella delle

pagine contiene l’indirizzo di base di ciascun frame nella memoria fisica e l’offset è la posizione nel

frame a cui viene fatto riferimento. Pertanto, l’indirizzo di base del frame viene combinato con l’offset

della pagina per definire l’indirizzo di memoria fisica.

Hardware di paginazione

58

Sistemi Operativi 7 Memoria centrale

Descriviamo di seguito i passaggi adottati dalla mmu per tradurre un indirizzo logico generato dalla

cpu in un indirizzo fisico.

1. Estrarre il numero di pagina p e utilizzarlo come indice nella tabella delle pagine.

2. Estrarre il numero di frame f corrispondente dalla tabella delle pagine.

3. Sostituire il numero di pagina p nell’indirizzo logico con il numero di frame f.

L’offset d non cambia e pertanto non viene sostituito; il numero di frame e l’offset determinano insieme

l’indirizzo fisico.

La paginazione non è altro che una forma di rilocazione dinamica: a ogni indirizzo logico

l’architettura di paginazione fa corrispondere un indirizzo fisico.

7.3.1 Supporto hardware alla paginazione

La memorizzazione della tabella delle pagine nella memoria principale può favorire cambi di contesto

più rapidi, ma può anche comportare tempi di accesso alla memoria più lenti.

La soluzione tipica a questo problema consiste nell’impiego del TLB (translation look-aside buffer ),

una speciale, piccola cache hardware. Il tlb è una memoria associativa ad alta velocità in cui ogni

elemento consiste di due parti: una chiave (o tag) e un valore.

Quando si presenta un elemento, il tlb lo confronta contemporaneamente con tutte le chiavi; se trova

una corrispondenza, riporta il valore correlato.

Il tlb si usa insieme con le tabelle delle pagine nel modo seguente: il tlb contiene una piccola parte degli

elementi della tabella delle pagine; quando la cpu genera un indirizzo logico, si presenta il suo numero

di pagina al tlb; se tale numero è presente, il corrispondente numero del frame è immediatamente

disponibile e si usa per accedere alla memoria.

Se nel tlb non è presente il numero di pagina, situazione nota come insuccesso del tlb (tlb miss), si

deve consultare la tabella delle pagine in memoria. In questo caso, i numeri della pagina e del frame

vengono inseriti nel tlb in modo tale che al riferimento successivo la ricerca sará molto piú rapida.

Hardware di paginazione con TLB

59

Sistemi Operativi 7 Memoria centrale

Alcuni tlb memorizzano gli identificatori dello spazio d’indirizzi (address-space identifier, ASID)

in ciascun elemento del tlb. Un ASID identifica in modo univoco ciascun processo e si usa per fornire

al processo corrispondente la protezione del suo spazio d’indirizzi. Quando tenta di trovare i valori

corrispondenti ai numeri delle pagine virtuali, il tlb si assicura che l’asid per il processo attualmente

in esecuzione corrisponda all’asid associato alla pagina virtuale. La mancata corrispondenza dell’asid

viene trattata come un tlb miss.

La percentuale di volte che il numero di pagina di interesse si trova nel tlb è detta tasso di successi

(hit ratio).

Di solito si associa a ciascun elemento

della tabella delle pagine un ulteriore bit,

detto bit di validità. Tale bit, imposta-

to a valido, indica che la pagina corri-

spondente è nello spazio d’indirizzi logici

del processo, quindi è una pagina valida;

impostato a non valido, indica che la pa-

gina non è nello spazio d’indirizzi logici

del processo.

Il bit di validità consente quindi di ri-

conoscere gli indirizzi illegali e di noti-

ficarne la presenza attraverso un’eccezio-

ne. Il sistema operativo concede o impe-

disce l’accesso a una pagina impostando

in modo appropriato tale bit.

Un vantaggio della paginazione risiede nella possibilità di condividere codice comune, il che è

particolarmente importante in un ambiente con più processi.

Condivisione della libreria standard del C in un ambiente paginato

60

Sistemi Operativi 7 Memoria centrale

7.4 Struttura della tabella delle pagine

In questo paragrafo si descrivono alcune tra le tecniche più comuni per strutturare la tabella delle

pagine: la paginazione gerarchica, la tabella delle pagine di tipo hash e la tabella delle

pagine invertita.

7.4.1 Paginazione gerarchica

La maggior parte dei moderni calcolatori dispone di uno spazio d’indirizzi logici molto grande. In un

ambiente di questo tipo la stessa tabella delle pagine diventa eccessivamente grande. Chiaramente,

sarebbe meglio evitare di collocare la tabella delle pagine in modo contiguo in memoria centrale. Una

semplice soluzione a questo problema consiste nel suddividere la tabella delle pagine in parti più piccole.

Un metodo consiste nell’adottare un algoritmo di paginazione a due livelli, in cui la tabella stessa

è paginata. Schema di una tabella delle pagine a due livelli

Poic

Dettagli
Publisher
A.A. 2023-2024
93 pagine
1 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher just_antov di informazioni apprese con la frequenza delle lezioni di Sistemi operativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Messina o del prof Scarpa Marco.