Download presentation
Presentation is loading. Please wait.
1
OS Fall’02 Memory Management Operating Systems Fall 2002
2
OS Fall’02 Background A compiler creates an executable code An executable code must be brought into main memory to run Operating system maps the executable code onto the main memory The “ mapping ” depends on the hardware Hardware accesses the memory locations in the course of the execution
3
OS Fall’02 Memory management Principal operation: Bringing programs into the memory for execution by the processor Requirements and issues: Relocation Protection Sharing Logical and physical organization
4
OS Fall’02 Relocation Compiler generated addresses are relative A process can be loaded at different memory location, swapped in/out Actual physical mapping is not known at compile time Simple if processes are allocated contiguous memory ranges Complicated if paging is used
5
OS Fall’02 Protection Processes must be unable to reference addresses of other processes or those of the operating system Cannot be enforced at compile time (relocation) Each memory access must be checked for validity Enforced by hardware
6
OS Fall’02 Sharing Protection must be flexible enough to allow controlled sharing of the same portion of the main memory E.g., all running instances of a text editor can share the same code
7
OS Fall’02 Logical organization Main memory is organized as a linear one-dimensional address space Programs are typically organized into modules can be written/compiled independently, have different degrees of protection, shared A mechanism is desirable for supporting a logical structure of the user programs
8
OS Fall’02 Physical organization Two level hierarchical storage Main memory: fast, expensive, scarce, volatile Secondary storage: slow, cheap, abundant, persistent Memory management involves bi- directional information flow between the two
9
OS Fall’02 Memory management techniques Partitioning fixed, dynamic now obsolete useful to demonstrate basic principles Paging and segmentation Paging and segmentation with virtual memory
10
OS Fall’02 Fixed partitioning Main memory is divided into a number of static partitions all partitions of the same size a collection of different sizes A process can be loaded into a partition of equal or greater size A process cannot be scattered among many partitions
11
OS Fall’02 Fixed partitioning Operating System 8 M 12 M 8 M 6 M 4 M 2 M 8 M Operating System Internal fragmentation wasted space is internal to an allocated region Executing big programs requires explicit memory management by the programmer overlays
12
OS Fall’02 Placement algorithms New Processes Operating System Operating System New Processes
13
OS Fall’02 Replacement algorithms If all partitions are occupied some process should be swapped out Select a process that occupies the smallest partitions that will hold the incoming process blocked process
14
OS Fall’02 Dynamic partitioning Partitions created dynamically Each process is loaded into a partition of exactly the same size as that process
15
OS Fall’02 Dynamic partitioning example Operating System 128 K 896 K Operating System Process 1 320 K 576 K Operating System Process 1 320 K Process 2 224 K 352 K
16
OS Fall’02 Dynamic partitioning example Operating System Process 1 320 K Process 2 Process 3 224 K 288 K 64 K Operating System Process 1 320 K Process 3 224 K 288 K 64 K Operating System Process 1 320 K Process 3288 K 64 K Process 4 128 K 96 K
17
OS Fall’02 Dynamic partitioning example Operating System 320 K Process 3288 K 64 K Process 4 128 K 96 K Operating System Process 3288 K 64 K Process 4 128 K 96 K Process 2224 k 96 K
18
OS Fall’02 External fragmentation Situation when the memory which is external to the allocated partitions becomes fragmented Can be reduced using compaction wastes the processor time
19
OS Fall’02 Placement algorithms Free regions are organized into a linked list ordered by the memory addresses simplifies coalescing of free regions increases insertion time First-fit: allocate the first region large enough to hold the process optimization: use a roving pointer: next-fit Best-fit: allocate the smallest region which is large enough to hold the process
20
OS Fall’02 An example Last allocated block (14K) Before After 8K8K 8K8K 12K 22K 18K 6K6K 6K6K 8K8K 8K8K 14K 6K6K 2K2K 36K 20K Next Fit Free block Allocated block Best Fit First Fit
21
OS Fall’02 Placement algorithms discussion First-fit: efficient and simple tends to create more fragmentation near the beginning of the list solved by next-fit Best-fit: less efficient (might search the whole list) tends to create small unusable fragments
22
OS Fall’02 Buddy systems Approximates the best-fit principle Efficient search first (best) fit has a linear complexity Simplified coalescing Several variants exist Binary buddy system allocates memory in blocks which are powers of 2
23
OS Fall’02 Binary buddy system Memory blocks are available in size of 2 K where L <= K <= U and where 2 L = smallest size of block allocated 2 U = largest size of block allocated(generally, the entire memory available) Initially, all the available space is treated as a single block of size 2 U
24
OS Fall’02 Creating buddies A request to allocate a block of size s: If 2 U-1 < s <= 2 U, allocate the entire block Otherwise, split the block into two equal buddies of size 2 U-1 If 2 U-2 < s <= 2 U-1, then allocate the request to one of the buddies, otherwise split further Proceed until the smallest block is allocated
25
OS Fall’02 Maintaining buddies Existing non-allocated buddies (holes) are kept on several lists Holes of size 2 i are kept on the ith list Hole is removed from the (i+1)th list by splitting it into two bodies and putting them onto the ith list Whenever two adjacent buddies on the ith list are freed they are coalesced and moved to the (i+1)th list
26
OS Fall’02 Finding a free buddy get_hole(i): if (i==U+1) then failure; if (list i is empty) { get_hole(i+1); split hole into buddies; put buddies on list i; } take first hole on list i;
27
OS Fall’02 An example
28
OS Fall’02 Remarks Buddy system is a reasonable compromise between the fixed and dynamic partitioning Internal fragmentation is a problem Expected case is about 28% which is high BS is not used for memory management nowadays Used for memory management by user level libraries (malloc)
29
OS Fall’02 Relocation with partitioning Interrupt to operating system Process image in main memory Relative address Absolute address Text Data Stack Adder Comparator Base Register Bounds Register
30
OS Fall’02 Paging The most efficient and flexible method of memory allocation Process memory is divided into fixed size chunks of the same size, called pages Pages are mapped onto frames in the main memory Internal fragmentation is possible with paging (negligible)
31
OS Fall’02 Paging support Process pages can be scattered all over the main memory Process page table maintains mapping of process pages onto frames Relocation becomes complicated Hardware support is needed to support translation of relative addresses within a program into the memory addresses
32
OS Fall’02 Paging example 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A.0 A.1 A.2 A.3 C.0 C.1 C.2 C.3 D.0 D.1 D.2 D.3 D.4 0 1 2 3 Process A 0 1 2 3 0 1 2 Process B --- 0 1 2 3 4 0 1 2 3 Process C 7 8 9 10 4 5 6 11 12 Process D Free Frame List 13 14
33
OS Fall’02 Address translation Page (frame) size is a power of 2 with page size = 2 r, a logical address of l+r bits is interpreted as a tuple (l,r) l = page number, r = offset within the page Page number is used as an index into the page table
34
OS Fall’02 Hardware support ProgramPagingMain Memory Logical address Register Page Table Page Frame Offset P# Frame # Page Table Ptr Page #OffsetFrame #Offset +
35
OS Fall’02 Segmentation A program can be divided into segments Segments are of variable size Segments reflect the logical (modular) structure of a program Text segment, data segment, stack segment … Similar to dynamic partitioning except segments of the same process can be scattered subject to external fragmentation
36
OS Fall’02 Address translation Maximum segment size is always a power of 2 Process ’ segment table maps segment numbers into their base addresses in the memory With the maximum segment size of 2 r, a logical address of l+r bits is interpreted as a pair (l,r): l = segment number, r = offset within the segment l is used as an index into the segment table
37
OS Fall’02 Hardware support Base + d ProgramSegmentationMain Memory Virtual Address Register Segment Table Segment d S# Length Base Seg Table Ptr Seg #Offset = d Segment Table + +
38
OS Fall’02 Remarks The price of paging/segmentation is a sophisticated hardware But the advantages exceed by far Paging decouples address translation and memory allocation Not all the logical addresses are necessary mapped into physical memory at every given moment - virtual memory Paging and segmentation are often combined to benefit from both worlds
39
OS Fall’02 Next: Virtual memory
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.