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. |
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.
procnum | Identificativo processo nella page table | |
address | Indirizzo virtuale | |
rw | Se vale '0' effettua una lettura, '1' scrittura |
Definizione alla linea 460 del file mmu.c.
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.
max_read | Numero massimo di accessi alla memoria | |
ram_size | Dimensione complessiva della memoria principale | |
page_size | Dimensione della singola pagina/frame |
Definizione alla linea 400 del file mmu.c.
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.
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 |
Definizione alla linea 104 del file mmu.c.
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
pArg | inutilizzato |
Definizione alla linea 295 del file mmu.c.
![]() |
Università degli studi di Urbino "Carlo Bo" |