Introduction Memory management is a critical piece of both Windows and Linux computer architecture that enables the computer to allocate the physical memory available between multiple processes. Windows and Linux memory management structures and algorithms have much in common, such as facilitating expansion of memory address space beyond the limits of physical memory through the use of virtual memory addressing that is coordinated with the available and used physical memory space. However, Windows and Linux memory management differs in many regards such as data structure format, how process address space is distributed, how paging is managed, the memory address structure, and the algorithm used for page swapping or replacement.
Data Structures The term “data structure” refers to how the operating system organizes memory space so that the computer can “catalog” or “database” information in memory in a way that facilitates quick, efficient access to data stored in memory when required. Windows operating system uses a tree structure for formatting data, similar to a B-Tree database, which is hierarchical in nature, (Garg, 2004). In contrast, Linux data structures are organized differently, relying instead upon a linked list format of VM structs that each manage a particular address range, mapping, data protection mode, whether pinned or pageable. In addition, once there are a certain number of entries, the VM structs convert into a tree structure, (Rusling, 1999). The Windows tree structure however is very efficient, with each node or VAD (Virtual Address Descriptor) responsible for a range of addresses with their own protection parameters and commit states. The tree depth is intentionally limited to keep search times relatively low. In general, both structures work well with no significant advantages in one over the other, (Garg, 2004).
Memory Address Space Distribution
References: Garg, (2004), Windows Memory Management, Retrieved on 7 September 2014 from http://www.intellectualheaven.com/Articles/WinMM.pdf Rusling, (1999), Memory Management, Retrieved on 7 September 2014 from http://www.tldp.org/LDP/tlk/mm/memory.html