IntroductionThe virtual memory subsystem can be considered the core of any UNIX system. This chapter discusses the implementation of the virtual memory system and the effects and impacts on almost every other subsystem in the operating system. The chapter first elaborates on some of the basic memory management issues; secondly, it outlines a more detailed analysis of how the Linux operating system incorporates virtual memory management tasks. The virtual memory subsystem enables a process (also labeled a task or default thread) to view linear ranges of bytes in the address space. This is allowed regardless of the physical layout or the fragmentation encountered in physical memory. The thread is allowed to execute in a virtual environment that appears as the entire address space of a CPU. This (supporting) execution framework results in providing a process with a large programming model. In such a scenario, a virtual view of memory storage referenced as the address space is presented to an application while the virtual memory subsystem transparently manages the virtual storage infrastructure, therefore incorporating the physical memory subsystem as well as secondary storage (see Figure 9-1). Figure 9-1. Address space structure (generic view).![]() |