6

Concentriamoci sui sistemi informatici uniprocessore. Quando viene creato un processo, per quanto ne so, viene impostata la tabella delle pagine che mappa gli indirizzi virtuali nello spazio degli indirizzi di memoria fisica. Ogni processo ottiene la propria tabella di pagine, memorizzata nello spazio degli indirizzi del kernel. Ma come fa la MMU a scegliere la giusta tabella di pagine per il processo poiché non c'è solo un processo in esecuzione e ci saranno molti switch di contesto in corso?In che modo il sistema sceglie il corretto Page Table?

Qualsiasi aiuto è apprezzato!

migliore, Simon

risposta

2

La MMU, in questo caso non è a conoscenza del tutto di ciò che un processo è. Il sistema operativo, che conserva tracce di processi, genera una tabella di pagine per ogni processo, come dici tu, man mano che vengono creati. Il processo per la commutazione di contesto è la seguente:

  1. il sistema operativo dice al MMU utilizzare tabella delle pagine situato all'indirizzo fisico 0xFOO

  2. i programmi del sistema operativo del timer interrupt programmabile (PIT) per provocare una interrupt hardware dopo BAR millisecondi.

  3. Il sistema operativo ripristina lo stato del processo (registri CPU, contatore programmi, ecc.) E salta all'indirizzo corretto.

  4. Il processo viene eseguito fino a quando il PIT attiva un interrupt.

  5. La routine del sistema operativo per gestire l'interrupt PIT salva quindi lo stato del programma (registri ecc.), Utilizza un algoritmo di pianificazione per determinare il processo successivo da eseguire (in un caso semplice, un elenco circolare circolare), quindi ricomincia al passaggio 1.

Spero che chiarisca tutti i dubbi che potresti avere. La risposta breve: la MMU è indipendente dal processo e non sa cosa sia un processo.

+0

Grazie per la rapida risposta. Quindi dici che il sistema operativo esegue il flush e ripristina la tabella delle pagine su ogni switch di contesto? – saimn

+0

@ user1435023 In sostanza. Il sistema operativo dice alla MMU dove la tabella si trova nella memoria fisica come un puntatore, quindi la MMU gestisce lo svuotamento del TTL e altre attività hardware. A seconda della MMU, il sistema operativo può avere un controllo più dettagliato dei dettagli di basso livello, ma questo non è strettamente necessario. Al livello più semplice, tutto ciò che interessa il sistema operativo è comunicare alla MMU quale tabella di pagina utilizzare. – Dougvj

+0

@ user1435023 Correzione: significa TLB sopra, * non * TTL. Nathan Binkert ha risposto di più sull'aspetto TLB delle cose – Dougvj

13

I processori dispongono di un registro privilegiato chiamato registro di base della tabella di pagina (PTBR), su x86 è CR3. Su un interruttore di contesto, il sistema operativo modifica il valore del PTBR in modo che il processore ora sappia quale tabella di pagine utilizzare. Oltre al PTBR, molti processori moderni hanno la nozione di un numero di spazio indirizzo (ASN). Ai processi viene assegnato un numero di spazio indirizzo (da un pool limitato) e questo ASN è impostato in un registro su un interruttore di contesto. Questo ASN viene utilizzato come parte della corrispondenza TLB e consente alle voci TLB provenienti da più spazi di indirizzi di coesistere. Solo quando viene riutilizzato un ASN è necessario svuotare il TLB e solo per le voci corrispondenti a tale ASN. La maggior parte delle implementazioni x86 sono a grana più grossa di questa e c'è una nozione di pagine globali (per librerie condivise e dati condivisi).

+0

Ciò è stato utile grazie – JohnnyCat

Problemi correlati