The Virtual-Memory Manager in Windows NT
Randy Kath · 2006
This article provides an in-depth survey of the memory management system in Windows NTA‚™. Specifically, these topics are explored in detail: Virtual memory in Windows NT 32-bit virtual addresses Page directory, page tables, and page frames Translating a virtual address Process integrity Reserved and committed memory Translation lookaside buffers Page-table entry structure Page faults Sharing pages across process boundaries Prototype page-table entries Copy-on-write page optimization Characteristics of the virtual-memory manager The page-frame database Managing a working set of pages for each process This article does not discuss the Win32A‚™ memory management application programming interface (API). Instead, several other technical articles on the Microsoft Developer Network CD should be referenced for issues related to understanding how to manage memory with the Win32 API. Those articles provide both insight into the system and understanding of the functions themselves. While this article primarily deals with Windows NT-specific memory management issues, it does refer to some of the memory objects in the Win32 subsystem (like memory-mapped files and dynamic heaps) in an attempt to shed some light on the age-old dilemma of performance vs. resource usage as it applies to applications written for the Win32 subsystem in Windows NT.