Microsoft KB Archive/98216

{|
 * width="100%"|

INFO: Windows NT Virtual Memory Manager Uses FIFO

 * }

Q98216

-

The information in this article applies to:


 * Microsoft Win32 Application Programming Interface (API), used with:
 * the operating system: Microsoft Windows NT, versions 3.1, 3.5, 3.51, 4.0

-

SUMMARY
Helen Custer's &quot;Inside NT&quot; 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 &quot;discarded&quot; 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 kbOSWinNT310 kbOSWinNT350 kbOSWinNT351 kbOSWinNT400 kbOSWin2000 kbDSupport kbGrpDSKernBase

Issue type : kbinfo

Technology : kbAudDeveloper kbWin32sSearch kbWin32API