Memory Management Unit


Funzioni

static int second_chance (int procnum, uint16_t page, int update_stats, frame_t **frame)
 Algoritmo di rimpiazzo della pagina.
static void * thread_mmu (void *pArg)
 Thread MMU.
pthread_t * mmu_init (int max_read, int ram_size, int page_size)
 Inizializzazione MMU.
uint32_t memory_access (int procnum, uint32_t address, int rw)
 Funzione per la lettura/scrittura di una zona di memoria.

Documentazione delle funzioni

uint32_t memory_access ( int  procnum,
uint32_t  address,
int  rw 
)

Funzione per la lettura/scrittura di una zona di memoria.

La funzione puo' essere invocata solo da un processo per volta: questa inserisce i dati della richiesta in una struttura temporanea condivisa con l'MMU, risveglia l'MMU perche' processi la richiesta e resta in attesa del risultato.

Parametri:
procnum Identificativo processo nella page table
address Indirizzo virtuale
rw Se vale '0' effettua una lettura, '1' scrittura
Restituisce:
Risultato dell'operazione. Restituisce -1 quando MMU ha raggiunto il numero massimo di operazioni ed il processo deve terminare la propria esecuzione.

Definizione alla linea 460 del file mmu.c.

Questo è il grafo delle chiamate per questa funzione:

Questo è il grafo dei chiamanti di questa funzione:

pthread_t * mmu_init ( int  max_read,
int  ram_size,
int  page_size 
)

Inizializzazione MMU.

La funzione inizializza il modulo MMU, valorizzando la variabile "mmu" con i parametri che descrivono l'ambiente. I valori total_access, page_size e ram_size sono modificabili mediante l'uso degli opportuni parametri da riga di comando. Una volta suddivisa la memoria in frame, verra' creato il thread MMU.

Parametri:
max_read Numero massimo di accessi alla memoria
ram_size Dimensione complessiva della memoria principale
page_size Dimensione della singola pagina/frame
Restituisce:
Puntatore al thread ID della MMU
Vedi anche:
thread_mmu

Definizione alla linea 400 del file mmu.c.

Questo è il grafo delle chiamate per questa funzione:

Questo è il grafo dei chiamanti di questa funzione:

int second_chance ( int  procnum,
uint16_t  page,
int  update_stats,
frame_t **  frame 
) [static]

Algoritmo di rimpiazzo della pagina.

La funzione second_chance viene invocata direttamente dal thread "mmu": scopo di questa funzione e trovare una pagina da rimuovere dalla memoria ed associare il frame appena liberato con la pagina che ha generato il fault.

Parametri:
procnum Identificativo del processo chiamante
page Pagina virtuale che ha generato il fault
update_stats Se vale uno (1) vengono aggiornate le statistiche
frame Se diverso da NULL, viene registrato il frame identificato
Restituisce:
restituisce 1 se e stato un page hit, 0 per un fault
Vedi anche:
thread_mmu

Definizione alla linea 104 del file mmu.c.

Questo è il grafo dei chiamanti di questa funzione:

void * thread_mmu ( void *  pArg  )  [static]

Thread MMU.

La funzione, eseguita come thread, emula il modulo MMU per la traduzione degli indirizzi virtuali in fisici e l'implementazione dell'algoritmo enhanced sencond chance

Parametri:
pArg inutilizzato
Restituisce:
valore di uscita del thread (inutilizzato)

Definizione alla linea 295 del file mmu.c.

Questo è il grafo delle chiamate per questa funzione:

Questo è il grafo dei chiamanti di questa funzione:

Università degli studi di Urbino "Carlo Bo"