why does every process(or any address space) has its own page table? <ol> <li><p>Why does every process (or any address space) have its own page table? </p> <ul> <li>I think that if we use a single page table for all processes, then a process can access the address apace of other processes so we need a separate page table for each process. This means the pages which actually belong to a particular process will be valid and all other pages which belong to some other's address space will be marked invalid. Am I correct? </li> <li>If yes, then why didn't we add one more field as "process ID" to the page table to distinguish the address space of every process?</li> <li>If not, why does every process (or any address space) have its own page table?</li> </ul></li> <li><p>How can multilevel paging reduce the size of the page table?</p> <ul> <li>Because we added some more page tables (in multilevel paging) as overhead, and the actual page table is also in main memory</li> </ul></li> <li><p>Suppose we did 3 levels of paging as 1 (closer to CPU)->2->3; so we have three page tables for each level. What information is included in each page table? I am worried about 3rd level page table which contains the actual frame number where data resides. Now which page tables are used by processes?</p> <ul> <li>All??? Then the 3rd level page table which contains the actual frames should be of the same size as the original page table (without multilevel) because it must have entries for all frames which are used by physical memory too.</li> </ul></li> </ol>