Real programs use loops, for example, and arrays and collections, and real programs make
reference repeatedly to addresses in the same vicinity. Thus, having immediate access to a relatively small
number of pages of the process??™s total logical address space is sufficient to maintain efficiency of execution.
A second problem is that page tables themselves become very bulky in modern systems. Our example,
which was realistic, showed 20 bits being used for the page number in a 32-bit address. That means that each
process has a logical address space of over one million pages. If a page table entry is 32 bits (typical today),
then 4 Mbytes of memory are required for each running process, just for the process??™s page table! Imagine the
problem with the newer 64-bit machines??”even imagining is difficult!
One widely used solution is the multilevel page table, a nested page table. To return to our example,
suppose we break the 20-bit page address into two 10-bit fields. Ten bits will represent 1024 entities. The first
10-bit field will be an index into the ???top-level??? page table, and the second 10-bit field will be an index into
120 OPERATING SYSTEMS [CHAP. 6
a ???second-level??? page table. There can be 1024 second-level page tables, each with 1024 entries, so all one million
pages in the logical address space can still be mapped.
Pages:
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331