1 memory management policies: unix chapter 9 the design of the unix operating system maurice j. bach...
Post on 20-Dec-2015
290 views
TRANSCRIPT
1
Memory Management Policies: UNIX
Chapter 9
THE DESIGN OF THE UNIX OPERATING SYSTEM
Maurice J. bach Prentice Hall
Allocating swap space
Freeing swap space
Swapping
Demand paging
Topics
2
Memory
• Primary memory is a precious resource that frequently cannot contain all active processes in the system
• The memory management system decides which processes should reside (at least partially) in main memory
• It monitors the amount of available primary memory and may periodically write processes to a secondary device called the swap device to provide more space in primary memory
• At a later time, the kernel reads the data from swap device back to main memory
3
Data Structures for Process
Text
Stack
DataFile Descriptor Table
Per Process Region Table
Kernel Process Table
Kernel Region TableA Process
U Area
4
Data Structure for Process (contd.)
u area
main memoryKernel
process table
per process region table Kernel region table
5
UNIX Memory Management Policies
• Swapping– Easy to implement
– Less system overhead
• Demand Paging– Greater flexibility
6
Swapping
• The swap device is a block device in a configurable section of a disk
• Kernel allocates contiguous space on the swap device without fragmentation
• It maintains free space of the swap device in an in-core table, called map
• The kernel treats each unit of the swap map as group of disk blocks
• As kernel allocates and frees resources, it updates the map accordingly
7
Allocating Swap Space
1 10000 101 9900
151 9750251 9850
Allocate 100 unit
Allocate 100 unit
Allocate 50 unit
Map
Address Unit
8
Freeing Swap Space
251 975050 unit free at 101
Map
Address Unit 101 50
251 9750
Case 1: Free resources fill a hole,
but not contiguous to any resources in the map
9
Freeing Swap Space
251 975050 unit free at 101
Map
Address Unit 101 50
251 9750
100 unit free at 1
1 150
251 9750
Case 2: Free resources fill a hole,
and immediately precedes an entry in the map
10
Freeing Swap Space
251 975050 unit free at 101
Allocate 200 unit
Map
Address Unit 101 50
251 9750
100 unit free at 1
1 150
251 9750
1 150
451 9550
1 10000
300 unit free at 151 Case 3: Free resources fill a hole, and completely fills the gap between entries in the map
11
Algorithm: Allocate Swap Space
• malloc( address_of_map, number_of_unit)– for (every map entry)
• if (current map entry can fit requested units)– if (requested units == number of units in entry)
» Delete entry from map
– else
» Adjust start address of entry
– return original address of entry
– return -1
12
Swapping Process Out
• Memory Swap device• Kernel swap out when it needs memory
1. When fork() called for allocate child process
2. When called for increase the size of process
3. When process become larger by growth of its stack
4. Previously swapped out process want to swap in but not enough memory
13
Swapping Process Out
• The kernel must gather the page addresses of data at primary memory to be swapped out
• Kernel copies the physical memory assigned to a process to the allocated space on the swap device
• The mapping between physical memory and swap device is kept in page table entry
14
Swapping Process Out
Mapping process onto the swap device
:
128k 401k
:
66k 595k
65k 573k
:
1k 432k
0 278k
Virtual Addresses Swap device684
690
Text
Data
Stack
Physical Addresses
15
Swapping Process In
Swapping a process into memory
:
128k 401k
:
66k 595k
65k 573k
:
1k 432k
0 278k
Virtual Addresses Swap device684
690
Text
Data
Stack
Physical Addresses
16
Fork Swap
• There may not be enough memory when fork() called
• Child process swap out and “ready-to-run”
• Swap in when kernel schedule it
17
Expansion Swap
• It reserves enough space on the swap device to contain the memory space of the process, including the newly requested space
• Then it adjust the address translation mapping of the process
• Finally, it swaps the process out on newly allocated space in swapping device
• When the process swaps the process into memory, it will allocate physical memory according to new address translation map
18
Demand Paging
• Not all page of process resides in memory
• Locality
• When a process accesses a page that is not part of its working set, it incurs a page fault.
• The kernel suspends the execution of the process until it reads the page into memory and makes it accessible to the process
19
Data Structure for Demand Paging
• Page table entry
• Disk block descriptors
• Page frame data table
• Swap use table
20
Page Table Entry and Disk Block Descriptor
Disk Block DescriptorPage Table Entry
Page address age Cp/wrt mod ref val prot
Region
Page Table Entry
Page Table
TypeBlock numSwap device
Disk Block Descriptor
21
• Contains the physical address of page and the following bits:– Valid: whether the page content legal
– Reference: whether the page is referenced recently
– Modify: whether the page content is modified
– copy on write: kernel must create a new copy when a process modifies its content (required for fork)
– Age: Age of the page
– Protection: Read/ write permission
Page Table Entry
22
Disk Block Descriptor
• Swap Device number as there may be several swap devices
• Block number that contains page
TypeBlock numSwap device