INFO: Windows NT Virtual Memory Manager Uses FIFO
ID: Q98216
|
The information in this article applies to:
-
Microsoft Win32 Application Programming Interface (API), used with:
-
Microsoft Windows NT versions 3.1, 3.5, 3.51, 4.0
SUMMARY
Helen Custer's "Inside NT" says that the FIFO algorithm is the algorithm used by Windows NT. This algorithm was chosen because implementing LRU creates unreasonable overhead in multiprocessor system. Since this overheard can be reasonably managed on single Intel IA32 (x86) processor systems LRU is used on that architecture. While it is true that FIFO can result in a commonly used page being discarded or paged to the pagefile, there are reasons why this algorithm is preferable.
Here are some of the advantages:
- FIFO is done on a per-process basis; so at worst, a process that
causes a lot of page faults will slow only itself down, not the
entire system.
- LRU creates significant overhead--the system must update its page
database every single time a page is touched. However, the database
may not be properly updated in certain circumstances. For example,
suppose that a program has good locality of reference and uses a
page constantly so that it is always in memory. The operating
system will not keep updating the timestamp in the page database,
because the process is not hitting the page table. Therefore this
page may age even though it is in nearly constant use.
- Pages that are "discarded" are actually kept in memory for a while,
so if a page is really used frequently, it will be brought back
into memory before it is written to disk.
Additional query words:
3.10 3.50
Keywords : kbAPI kbKernBase kbMemory kbNTOS310 kbNTOS350 kbNTOS351 kbNTOS400 kbWinOS2000 kbDSupport kbGrpKernBase
Version : winnt:3.1,3.5,3.51,4.0
Platform : winnt
Issue type : kbinfo
|