Introduction to Object Technology

Download Report

Transcript Introduction to Object Technology

Memory Management
in
Representative Operating Systems
1
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
CS-550: Memory Management in Representative Operating Systems
4
UNIX and Solaris Memory Management (cont.)
CS-550: Memory Management in Representative Operating Systems
5
UNIX and Solaris Memory Management (cont.)
CS-550: Memory Management in Representative Operating Systems
6
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
7
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
8
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
9
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