However,
there are additional problems to solve in real systems, in order to make virtual memory systems work well.
First, every reference to memory first requires a reference to the page table, which is also in memory. Right away,
even when there is no page fault, using a page table cuts the speed of access to memory by a factor of 2.
A solution to this problem is to use an associative memory called a translation lookaside buffer (TLB).
An associative memory is a small, expensive, ???magic??? piece of hardware that can perform a whole set of
comparisons (usually 64 or fewer) at once. As a process is executing, the TLB, which is part of the MMU, maintains
the recently accessed page table entries. When the process makes a reference to memory, the MMU submits the
page number to the TLB, which immediately returns either the frame for that page, or a ???TLB miss.??? If the TLB
reports a miss, then the system must read the page table in memory, and replace one of the entries in the TLB
with the new page table entry.
Virtual memory, and particularly the TLB speedup, works because real programs display the property of
locality. That is, for extended portions of a process??™s execution, the process will access a small subset of its
logical address space.
Pages:
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330