You are on page 1of 14

Memory Management in Representative Operating Systems

Memory Management and Virtual Memory Memory management requirements Memory partitioning Paging Segmentation Virtual memory with
Paging Segmentation Combined paging and segmentation

Virtual memory management policies and strategies


CS-550: Memory Management in Representative Operating Systems 2

UNIX and Solaris Memory Management Evolution


Early implementations of UNIX used variable partitioning and no virtual memory Current implementations SVR4 and Solaris use paged virtual memory

Memory management schemes in SVR4 and Solaris


Paging system
Allocates page frames in main memory to processes Allocates page frames to disk block buffers

Kernel memory allocator


CS-550: Memory Management in Representative Operating Systems 3

UNIX and Solaris Memory Management (cont.) Paging system


Data structures
Page table One page table per process One entry for each page in virtual memory for that process Disk block descriptor Has an entry associated with each page of a process Each entry describes the disk copy of the virtual page Page frame data table Describes each frame of real memory Indexed by frame number Swap-use table One table for each swap device One entry for each page on the device
4

CS-550: Memory Management in Representative Operating Systems

UNIX and Solaris Memory Management (cont.)

CS-550: Memory Management in Representative Operating Systems

UNIX and Solaris Memory Management (cont.)

CS-550: Memory Management in Representative Operating Systems

UNIX and Solaris Memory Management (cont.)


Paging system Page replacement
Page frame data table used for page replacement Lists are created within table using pointers (e.g., list of free frames available; when number of frames on this table drops below a threshold, the kernel will steal a number of pages to compensate) Page replacement algorithm in SVR4 is a modified clock policy algorithm, the two-handed clock algorithm
It uses the reference bit in the page table entry for each page in memory that is eligible (not locked) to be swapped out Bit is set to 0 when page is first brought in and set to 1 when page is referenced for read or write The front-hand of the algorithm sweeps through the eligible pages and sets reference bits to 1 The backhand, later, sweeps same list and checks the referenced bit: if 0, page is placed on the list to be paged out Parameters: Scanrate and Handspead

CS-550: Memory Management in Representative Operating Systems

UNIX and Solaris Memory Management (cont.)


Kernel memory allocator Requirement
Kernel generates and destroys frequently small tables and buffers (e.g, file descriptor blocks) which require dynamic memory allocation These tables and buffers are much smaller than typical machine page size: paging mechanism would be inefficient

Solution: SVR4 uses the lazy buddy system


Observation: demand for blocks of particular size varies slowly in time Solution: defer coalescing blocks until it seems likely that it is needed and then coalesce as many blocks as possible Strategy: try to maintain a pool of locally free blocks and only invoke coalescing if the number of free blocks exceeds a threshold Criterion for coalescing: the number of locally free blocks of a given size should not exceed the number of allocated blocks of that size

CS-550: Memory Management in Representative Operating Systems

Linux Memory Management


Characteristics
Shares many characteristics from the other UNIX implementations Has some unique features and is quite complex

Linux virtual memory


Virtual memory addressing
Three-level page table structure
Page directory: one per active process, size of one page Page middle directory Page table

Virtual address space has four fields


Index into the page directory Index into the page middle directory Index into the page table Offset within the selected page of memory

Page table structure is platform independent and was designed to accommodate the 64-bi Alpha processor

CS-550: Memory Management in Representative Operating Systems

Linux Memory Management (cont.)


Linux virtual memory (cont.)
Virtual memory addressing (cont.)
Page allocation
A buddy system is used to improve the efficiency of reading and writing contiguous blocks of pages mapped into contiguous blocks of page frames Kernel maintains a list of contiguous page frame groups of fixed size: 1, 2, 4, 8, 16, 32 page frames For allocation and deallocation of pages in main memory, the available groups are split and merged using the buddy system

Page replacement algorithm


Variation of the clock algorithm: least frequently used policy The use bit is replaced with an 8-bit age variable Age variable incremented each time page is accessed Periodically, Linux sweeps through the global page pool and decrements the age variable for each page A page with a low age variable is a candidate for replacement

CS-550: Memory Management in Representative Operating Systems

10

Linux Memory Management (cont.)


Kernel memory allocation
Based on the page allocation mechanism used for virtual memory management Buddy algorithm is used to allocate and de-allocate kernel memory in units of one or more pages Since the kernel needs small (smaller than a page) chunks of memory for short intervals,Linux uses slab allocation within an allocated page Example: on a Pentium/x86 machine page size is 4 Kbytes and chunks can be allocated in sizes 32, 64, 128, 252, 508, 2040, and 4080 bytes Slab allocator implementation
A set of linked lists are maintained, one for each size of chunk Chunks can be split, aggregated, and moved between lists like in the buddy algorithm

CS-550: Memory Management in Representative Operating Systems

11

Windows 2000 Memory Management


Characteristics
Designed to operate over a variety of platforms and use page sizes from 4 Kbytes to 64 Kbytes Current platforms
Intel, PowerPC, and MIPS platforms have 4,096 bytes per page DEC Alpha platforms have 8,192 bytes per page

W2K virtual address map


2 Gbytes of available virtual address space for user (increased optionally to 3 Gbytes) 2 Gbytes for the operating system (W2K Executive, microkernel, and device drivers)

CS-550: Memory Management in Representative Operating Systems

12

Windows 2000 Memory Management (cont)

CS-550: Memory Management in Representative Operating Systems

13

Windows 2000 Memory Management (cont.)


W2K paging
When a process is created, it can use up to 2 Gbytes (minus 128 Kbytes) of virtual space, divided in fixed-size pages Page states: Available: Pages not currently used by the process Reserved: Set of contiguous pages set aside for the process, but not counted as part of process quota until used. Committed to to process when it needs to write into memory Committed: Pages for which space on the paging file has been set aside (e.g., the disk file used when removing pages from memory) Resident set management scheme Variable allocation, local scope When process first activated, given a default working set: if process references a page not in memory, one of the resident pages is swapped out Working set of active processes is adjusted as follows: When memory plentiful, active processes are allowed to grow When memory becomes scarce, resident sets for each process are reduced

CS-550: Memory Management in Representative Operating Systems

14

You might also like