PagesandPageTablesAnOverview
(2024-03-01 15:15:19)
标签:
it |
分类: 技术 |
When a program is first loaded, the logical memory address
range of the application is divided into fixed size units called
pages. As each page is referenced by a program,
it is mapped to a physical page that resides in physical
memory. The mapping is dynamic which ensures that
logical addresses that are frequently referenced reside in physical
memory. Remember that each individual process
that is launched is allocated its own virtual address space and
application program threads are only permitted to directly access
the virtual memory locations that are associated with their parent
process' address space. This is where Page Tables
come into play.
Page Tables are built for each process address
space. The Page Table maps logical virtual
addresses for a process to physical memory
locations. The location for a set of Page Tables
for a process is passed to the processor hardware during a context
switch. The processor refers to the Page Tables
to perform virtual to physical address translation as the process
threads are executed. At this point, there are a
few terms to become familiar with when dealing with Pages and Page
Tables:
Working Set Pages:
The active pages of a process currently backed by RAM (also
known as Resident Pages)
NonResident Pages:
Virtual memory addresses that are allocated, but not backed by
RAM
Committed Pages:
Pages that have Page Table
Entries.
- Committed Pages may be either resident or nonresident
As we mentioned above, Virtual Memory Manager ensures that
logical addresses that are frequently referenced reside in physical
memory. It does so through the use of a Least
Recently Used (LRU) page replacement policy. The
VMM also attempts to maintain a pool of free or available pages to
ensure that page faults (which we will cover in our next post) are
resolved rapidly. When the virtual pages of
active processes overflow the size of RAM, the Memory Manager tries
to identify pages that are older or inactive that are candidates to
be flushed from physical memory and stored on
disk. A copy of inactive virtual memory pages is
held in the paging file. The operating system
checks to see if a page that it temporarily removed from the
process working set has been modified since the last time that it
was stored in the page file. If the copy in the
page file is current, there is no need to re-copy the contents to
disk before removing them from physical memory.
All this seems fairly straightforward – and if the Memory
Manager is successful in keeping the active pages of processes in
RAM then the Memory Manager's operations do not affect the user
experience. However, if there is insufficient
physical memory to hold the active pages of running processes, then
the system will exhibit performance degradation.