Ho una domanda abbastanza incasinata: se la page table si riferisce a un processo, e in memoria ho più processi caricati, come fa la MMU a capire a quale processo si riferisce un indirizzo virtuale generato dalla CPU se la VPN è l'indice della page table(e non un campo della tabella)? Mi spiego meglio: facciamo finta che un processo sia diviso in 4 pagine, quindi gli indici della PT sono 00, 01, 10, 11. La entry però è composta dai flag e dall'indice del frame nella quale sono allocate le pagine. Se in memoria ci fosse un altro processo, quindi un altro blocco PCB contentente un'altra page table, e questo processo avesse anch'esso 4 pagine, l'indicizzazione virtuale sarebbe la stessa, poiché entrambe avrebbero 00, 01, 10, 11 come VPN ed eventualmente frame numbers relativi diversi(?). Non capisco, una volta generato l'indirizzo virtuale, cosa venga effettivamente fatto.
Mi scuso perché ho notato solo ora questo commento, rispondo per chi può avere il medesimo dubbio. La MMU si occupa di tradurre gli indirizzi virtuali in fisici e a suo supporto ci saranno dei registri di base e bound, dove il primo indica l’offset che deve applicare per arrivare nella memoria fisica, il secondo è l’indirizzo limite virtuale o fisico (dipende dalle implementazioni) oltre il quale il processo non deve andare. Quindi si, come hai detto nel tuo esempio, potrei avere processi diversi che utilizzano indirizzi virtuali uguali, ma una volta tradotti ciascun processo userà indirizzi fisici diversi (fatta eccezione per eventuali risorse comuni).