Memory Management in Windows and Linux Windows Memory


















- Slides: 18

Memory Management in Windows and Linux &

Windows Memory Management • Virtual memory manager (VMM) – Executive component responsible for managing memory • Lazy allocation – Avoid allocating memory until necessary • Prefetching – Move pages from disk to main memory before they are needed • Pagefile – Stores pages that do not fit in main memory – Windows XP supports up to 16 pagefiles

Memory Organization • 32 -bit virtual address space – Windows 64 -Bit Edition has 64 -bit address space. – 4 GB virtual address space per process • User space vs. System space – Process can access only user space – VMM stores page tables and other data in system space – 2 GB user space, 2 GB system space • 4 KB pages

Memory Organization • Two-level hierarchical memory map – Page directory table • Page directory entries (PDEs) point to page table • One page directory table per process • Location in page directory register – Page table • Page table entries (PTEs) point to page frames – Page frame • Contains page of data • TLB (translation lookaside buffer) accelerates address translation

Virtual address translation.

Memory Allocation

Page frame states

Page Replacement Process

Linux Memory Management • Memory manager supports 32 - and 64 -bit addresses • Also supports NUMA (nonuniform memory access architectures) • To allow Linux to scale from desktops and workstations, to servers and supercomputers

Page Table Organization

Memory Organization • Linux uses paging exclusively – Often implemented using a single page size – On 32 -bit systems, kernel can address 4 GB of data • On 64 -bit systems, the kernel supports up to 2 petabytes of data – Three levels of page tables • Page global directory • Page middle directory • Page tables – On systems that support only two levels of page tables, page middle directory contains exactly one entry • Virtual address space organized into virtual memory areas to group information with same permissions (similar to segments)

Linux on the IA-32 architecture • Kernel attempts to reduce overhead due to TLB flushing on context switch • Divides each 4 GB address space into a 3 GB region for process data and instructions and a 1 GB address space for kernel data and instructions • Most of the kernel’s address space is directly mapped to main memory so that it can access information belonging to any process

Kernel virtual address space mapping

Memory Organization • Memory zones – DMA memory: first 16 MB of main memory • Kernel attempts to make memory available in this region for legacy hardware – Normal memory: between 16 MB and 896 MB on the IA-32 architecture • Stores user data and most kernel data – High memory: > 896 MB on the IA-32 architecture • Contains memory that the kernel does not permanently map to its address space • Bounce buffer – Allocates low memory temporarily for I/O – Data is “bounced” to high memory after I/O completes

Physical memory zones on the IA-32

Page Replacement • Page replacement is performed independently for each page zone – Algorithm is a variant of the clock page-replacement algorithm • Two linked lists per zone – Active list contains pages that have been referenced recently – Inactive list contains pages that have been used less recently • Page enters system at the head of the inactive list, referenced bit set • If the page is active or inactive and its referenced bit is off, the bit is turned on – Ensures that recently referenced pages are not selected for replacement • If page is inactive and is being referenced for the second time (referenced bit is on), page is moved to head of the active list, referenced bit is cleared – Allows the kernel to distinguish between referenced pages that have been accessed once and those that have been accessed more than once recently – The latter are placed in the active list so they are not selected for replacement

Page-replacement system overview

Swapping • kswapd (the kernel swap daemon) – Periodically frees page frames by flushing dirty pages to disk – Swaps pages from the tail of the inactive list • First determines if the page has a valid entry in the swap cache – Enables clean pages to be freed immediately • Cannot free a page frame if – Page is shared • kswapd must unmap multiple references to the page • Reverse mapping improves efficiency – Page is dirty • kswapd must flush it to disk • Performed asynchronously by pdflush – Page is locked (e. g. , currently under I/O) • kswapd must wait until page is unlocked