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.
– 4GB 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
– 2GB user space, 2GB system space

• 4KB 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
P
age f rame states
P
age R
eplacement P
rocess
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
P
age Table Organization
Memory Organization
• Linux uses paging exclusively
– Often implemented using a single page size
– On 32-bit systems, kernel can address 4GB 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 4GB address space into a 3GB region for process
data and instructions and a 1GB 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
K
ernel virtual address space
mapping
Memory Organization
• Memory zones
– DMA memory: first 16MB of main memory
• Kernel attempts to make memory available in this region for legacy
hardware

– Normal memory: between 16MB and 896MB on the IA-32
architecture
• Stores user data and most kernel data

– High memory: > 896MB 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
P
hysical memory zones on the IA32
P
age R
eplacement
• 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
P
age- 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
THANKING YOU!!!!

© 2004 Deitel & Associates, Inc. All rights reserved.

Linux Memory Management

  • 1.
  • 2.
    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
  • 3.
    Memory Organization • 32-bitvirtual address space – Windows 64-Bit Edition has 64-bit address space. – 4GB 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 – 2GB user space, 2GB system space • 4KB pages
  • 4.
    Memory Organization • Two-levelhierarchical 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
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    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
  • 10.
  • 11.
    Memory Organization • Linuxuses paging exclusively – Often implemented using a single page size – On 32-bit systems, kernel can address 4GB 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)
  • 12.
    Linux on theIA- 32 architecture • Kernel attempts to reduce overhead due to TLB flushing on context switch • Divides each 4GB address space into a 3GB region for process data and instructions and a 1GB 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
  • 13.
  • 14.
    Memory Organization • Memoryzones – DMA memory: first 16MB of main memory • Kernel attempts to make memory available in this region for legacy hardware – Normal memory: between 16MB and 896MB on the IA-32 architecture • Stores user data and most kernel data – High memory: > 896MB 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
  • 15.
  • 16.
    P age R eplacement • Pagereplacement 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
  • 17.
  • 18.
    Swapping • kswapd (thekernel 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
  • 19.
    THANKING YOU!!!! © 2004Deitel & Associates, Inc. All rights reserved.