Lecture 12 Page 1 CS 111 Winter 2014 Memory Management CS 111 Operating Systems Peter Reiher.

Slides:



Advertisements
Similar presentations
Memory.
Advertisements

Part IV: Memory Management
Memory Management Chapter 7.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Memory Management 1 CS502 Spring 2006 Memory Management CS-502 Spring 2006.
CS-3013 & CS-502, Summer 2006 Memory Management1 CS-3013 & CS-502 Summer 2006.
Memory Management Chapter 5.
Computer Organization and Architecture
 2004 Deitel & Associates, Inc. All rights reserved. Chapter 9 – Real Memory Organization and Management Outline 9.1 Introduction 9.2Memory Organization.
Review of Memory Management, Virtual Memory CS448.
Computer Architecture and Operating Systems CS 3230: Operating System Section Lecture OS-7 Memory Management (1) Department of Computer Science and Software.
Memory Management Chapter 7.
Lecture 7 Page 1 CS 111 Summer 2015 Memory Management CS 111 Operating System Principles Peter Reiher.
Subject: Operating System.
Chapter 8 – Main Memory (Pgs ). Overview  Everything to do with memory is complicated by the fact that more than 1 program can be in memory.
Lecture 11 Page 1 CS 111 Online Memory Management: Paging and Virtual Memory CS 111 On-Line MS Program Operating Systems Peter Reiher.
CE Operating Systems Lecture 14 Memory management.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
By Teacher Asma Aleisa Year 1433 H.   Goals of memory management  To provide a convenient abstraction for programming.  To allocate scarce memory.
1 Memory Management Chapter 7. 2 Memory Management Subdividing memory to accommodate multiple processes Memory needs to be allocated to ensure a reasonable.
Lecture 10 Page 1 CS 111 Online Another Option Fixed partition allocations result in internal fragmentation – Processes don’t use all of the fixed partition.
Lecture 10 Page 1 CS 111 Summer 2013 File Systems Control Structures A file is a named collection of information Primary roles of file system: – To store.
Lecture 7 Page 1 CS 111 Summer 2013 Another Option Fixed partition allocations result in internal fragmentation – Processes don’t use all of the fixed.
CS6502 Operating Systems - Dr. J. Garrido Memory Management – Part 1 Class Will Start Momentarily… Lecture 8b CS6502 Operating Systems Dr. Jose M. Garrido.
Lecture 10 Page 1 CS 111 Spring 2015 Memory Management CS 111 Operating Systems Peter Reiher.
Lecture 10 Page 1 CS 111 Fall 2015 Memory Management CS 111 Operating Systems Peter Reiher.
Lecture 7 Page 1 CS 111 Summer 2013 Dynamic Domain Allocation A concept covered in a previous lecture We’ll just review it here Domains are regions of.
COMP091 – Operating Systems 1 Memory Management. Memory Management Terms Physical address –Actual address as seen by memory unit Logical address –Address.
Chapter 7 Memory Management Eighth Edition William Stallings Operating Systems: Internals and Design Principles.
Memory Management Chapter 5 Advanced Operating System.
Lecture 10 Page 1 CS 111 Online Memory Management CS 111 On-Line MS Program Operating Systems Peter Reiher.
Ch. 4 Memory Mangement Parkinson’s law: “Programs expand to fill the memory available to hold them.”
Memory Management Chapter 7.
Chapter 7 Memory Management
Outline What is memory management about? Memory management strategies:
Memory Management Chapter 7.
Memory Management.
Non Contiguous Memory Allocation
ITEC 202 Operating Systems
Chapter 2 Memory and process management
Outline Paging Swapping and demand paging Virtual memory.
Dynamic Domain Allocation
Memory Management © 2004, D. J. Foreman.
Chapter 9 – Real Memory Organization and Management
Swapping Segmented paging allows us to have non-contiguous allocations
CSI 400/500 Operating Systems Spring 2009
Main Memory Management
Chapter 8: Main Memory.
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy 11/12/2018.
Operating System Concepts
Optimizing Malloc and Free
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 8 11/24/2018.
Background Program must be brought into memory and placed within a process for it to be run. Input queue – collection of processes on the disk that are.
Multistep Processing of a User Program
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 9 12/1/2018.
Main Memory Background Swapping Contiguous Allocation Paging
CS399 New Beginnings Jonathan Walpole.
Chapter 8: Memory management
Outline Module 1 and 2 dealt with processes, scheduling and synchronization Next two modules will deal with memory and storage Processes require data to.
Lecture 3: Main Memory.
CSE 451: Operating Systems Autumn 2005 Memory Management
Operating System Chapter 7. Memory Management
CSE 451: Operating Systems Autumn 2003 Lecture 9 Memory Management
Memory Management Lectures notes from the text supplement by Siberschatz and Galvin Modified by B.Ramamurthy Chapter 9 4/5/2019.
CSE 451: Operating Systems Autumn 2003 Lecture 9 Memory Management
COMP755 Advanced Operating Systems
Operating Systems: Internals and Design Principles, 6/E
EECE.4810/EECE.5730 Operating Systems
CSE 542: Operating Systems
Presentation transcript:

Lecture 12 Page 1 CS 111 Winter 2014 Memory Management CS 111 Operating Systems Peter Reiher

Lecture 12 Page 2 CS 111 Winter 2014 Outline What is memory management about? Memory management strategies: – Fixed partition strategies – Dynamic domains – Buffer pools – Garbage collection – Memory compaction

Lecture 12 Page 3 CS 111 Winter 2014 Memory Management Memory is one of the key assets used in computing In particular, memory abstractions that are usable from a running program – Which, in modern machines, typically means RAM We have a limited amount of it Lots of processes want to use it How do we manage its use?

Lecture 12 Page 4 CS 111 Winter 2014 What Is Memory Used For? Anything that a program needs to access – Except control and temporary values, which are kept in registers The code – To allow the process to execute instructions The stack – To keep track of its state of execution The heap – To hold dynamically allocated variables

Lecture 12 Page 5 CS 111 Winter 2014 Other Uses of Memory The operating system needs memory itself For its own code, stack, and dynamic allocations For I/O buffers To hold per-process control data The OS shares the same physical memory that user processes rely on The OS provides overall memory management

Lecture 12 Page 6 CS 111 Winter 2014 Aspects of the Memory Management Problem Most processes can’t perfectly predict how much memory they will use The processes expect to find their existing data when they need it where they left it The entire amount of data required by all processes may exceed physical memory Switching between processes must be fast – Can’t afford much delay for copying data The cost of memory management itself must not be too high

Lecture 12 Page 7 CS 111 Winter 2014 Memory Management Strategies Fixed partition allocations Dynamic domains Paging Virtual memory We’ll talk about the last two in the next class

Lecture 12 Page 8 CS 111 Winter 2014 Fixed Partition Allocation Pre-allocate partitions for n processes – Usually one partition per process So n partitions – Reserving space for largest possible process Partitions come in one or a few set sizes Very easy to implement – Common in old batch processing systems – Allocation/deallocation very cheap and easy Well suited to well-known job mix

Lecture 12 Page 9 CS 111 Winter 2014 Memory Protection and Fixed Partitions Need to enforce the boundaries of each partition To prevent one process from accessing another’s memory Could use hardware similar to domain registers for this purpose On the flip side, hard to arrange for shared memory – Especially if only one segment per process

Lecture 12 Page 10 CS 111 Winter 2014 Problems With Fixed Partition Allocation Presumes you know how much memory will be used ahead of time Limits the number of processes supported to the total of their memory requirements Not great for sharing memory Fragmentation causes inefficient memory use

Lecture 12 Page 11 CS 111 Winter 2014 Fragmentation A problem for all memory management systems – Fixed partitions suffer it especially badly Based on processes not using all the memory they requested As a result, you can’t provide memory for as many processes as you theoretically could

Lecture 12 Page 12 CS 111 Winter 2014 Fragmentation Example Partition 1 8MB Partition 2 4MB Partition 3 4MB process A (6 MB) process B (3 MB) process C (2 MB) waste 2MB waste 1MB Total waste = 2MB + 1MB + 2MB = 5/16MB = 31% Let’s say there are three processes, A, B, and C Their memory requirements: A: 6 MBytes B: 3 MBytes C: 2 MBytes Available partition sizes: 8 Mbytes 4 Mbytes

Lecture 12 Page 13 CS 111 Winter 2014 Internal Fragmentation Fragmentation comes in two kinds: – Internal and external This is an example of internal fragmentation – We’ll see external fragmentation later Wasted space in fixed sized blocks – The requestor was given more than he needed – The unused part is wasted and can’t be used for others Internal fragmentation can occur whenever you force allocation in fixed-sized chunks

Lecture 12 Page 14 CS 111 Winter 2014 More on Internal Fragmentation Internal fragmentation is caused by a mismatch between – The chosen sizes of a fixed-sized blocks – The actual sizes that programs use Average waste: 50% of each block Overall waste reduced by multiple sizes – Suppose blocks come in sizes S1 and S2 – Average waste = ((S1/2) + (S2 - S1)/2)/2

Lecture 12 Page 15 CS 111 Winter 2014 Multiple Fixed Partitions You could allow processes to request multiple partitions – Of a single or a few sizes Doesn’t really help the fragmentation problem – Now there were more segments to fragment – Even if each contained less memory

Lecture 12 Page 16 CS 111 Winter 2014 Where Was Fixed Partition Allocation Used? Old operating systems from the 1960s – E.g., IBM’s OS 360 and MVT Not required until people wanted to do multiprogramming Not really great even for those environments, so it didn’t last A simple model for very basic multiprogramming

Lecture 12 Page 17 CS 111 Winter 2014 Summary of Fixed Partition Allocation Very simple Inflexible Subject to a lot of internal fragmentation Not used in many modern systems – But a possible option for special purpose systems, like embedded systems – Where we know exactly what our memory needs will be

Lecture 12 Page 18 CS 111 Winter 2014 Dynamic Domain Allocation A concept covered in a previous lecture – We’ll just review it here Domains are regions of memory made available to a process – Variable sized, usually any size requested – Each domain is contiguous in memory addresses – Domains have access permissions for the process – Potentially shared between processes Each process could have multiple domains – With different sizes and characteristics

Lecture 12 Page 19 CS 111 Winter 2014 Accessing Domains The process issues a memory address The address is checked against the domain registers specifying the process’ access – If address is in one of the process’ domains with proper access permissions, allow access – Otherwise don’t – Failures due to access permission problems are permission exceptions – Failures due to requesting an address not in your domain are illegal address exceptions

Lecture 12 Page 20 CS 111 Winter 2014 The Domain Concept Program 1 Processor Memory Disk Network Domain Registers

Lecture 12 Page 21 CS 111 Winter 2014 Problems With Domains Not relocatable – Once a process has a domain, you can’t easily move its contents elsewhere Not easily expandable Impossible to support applications with larger address spaces than physical memory – Also can’t support several applications whose total needs are greater than physical memory Also subject to fragmentation

Lecture 12 Page 22 CS 111 Winter 2014 Relocation and Expansion Domains are tied to particular address ranges – At least during an execution Can’t just move the contents of a domain to another set of addresses – All the pointers in the contents will be wrong – And generally you don’t know which memory locations contain pointers Hard to expand because there may not be space “nearby”

Lecture 12 Page 23 CS 111 Winter 2014 The Expansion Problem Domains are allocated on request Processes may ask for new ones later But domains that have been given are fixed – Can’t be moved somewhere else in memory Memory management system might have allocated all the space after a given domain In which case, it can’t be expanded

Lecture 12 Page 24 CS 111 Winter 2014 Illustrating the Problem PAPA PBPB PCPC Now Process B wants to expand its domain size PBPB But if we do that, Process B steps on Process C’s memory We can’t move C’s domain out of the way And we can’t move B’s domain to a free area We’re stuck, and must deny an expansion request that we have enough memory to handle

Lecture 12 Page 25 CS 111 Winter 2014 Address Spaces Bigger Than Physical Memory If a process needs that much memory, how could you possibly support it? Two possibilities: 1.It’s not going to use all the memory it’s asked for, or at least not all simultaneously 2.Maybe we can use something other than physical memory to store some of it Domains are not friendly to either option

Lecture 12 Page 26 CS 111 Winter 2014 How To Keep Track of Variable Sized Domains? Start with one large “heap” of memory Maintain a free list – Systems data structure to keep track of pieces of unallocated memory When a process requests more memory: – Find a large enough chunk of memory – Carve off a piece of the requested size – Put the remainder back on a free list When a process frees memory – Put it back on the free list

Lecture 12 Page 27 CS 111 Winter 2014 Managing the Free List Fixed sized blocks are easy to track – A bit map indicating which blocks are free Variable chunks require more information – A linked list of descriptors, one per chunk – Each descriptor lists the size of the chunk and whether it is free – Each has a pointer to the next chunk on list – Descriptors often kept at front of each chunk Allocated memory may have descriptors too

Lecture 12 Page 28 CS 111 Winter 2014 The Free List head FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT … List might contain all memory fragments …or only fragments that are free

Lecture 12 Page 29 CS 111 Winter 2014 Free Chunk Carving USEDUSED LENLEN NEXTNEXT USEDUSED NEXTNEXT FREEFREE LENLEN NEXTNEXT … LENLEN NEXTNEXT FREEFREE LENLEN USEDUSED 1. Find a large enough free chunk 2. Reduce its len to requested size 3.Create a new header for residual chunk 4. Insert the new chunk into the list 5. Mark the carved piece as in use

Lecture 12 Page 30 CS 111 Winter 2014 Variable Domain and Fragmentation Variable sized domains not as subject to internal fragmentation – Unless requestor asked for more than he will use – Which is actually pretty common – But at least memory manager gave him no more than he requested Unlike fixed sized partitions, though, subject to another kind of fragmentation – External fragmentation

Lecture 12 Page 31 CS 111 Winter 2014 External Fragmentation PAPA PBPB PCPC PAPA PCPC PDPD PEPE PCPC PDPD PEPE PFPF We gradually build up small, unusable memory chunks scattered through memory

Lecture 12 Page 32 CS 111 Winter 2014 External Fragmentation: Causes and Effects Each allocation creates left-over chunks – Over time they become smaller and smaller The small left-over fragments are useless – They are too small to satisfy any request – A second form of fragmentation waste Solutions: – Try not to create tiny fragments – Try to recombine fragments into big chunks

Lecture 12 Page 33 CS 111 Winter 2014 How To Avoid Creating Small Fragments? Be smart about which free chunk of memory you use to satisfy a request But being smart costs time Some choices: – Best fit – Worst fit – First fit – Next fit

Lecture 12 Page 34 CS 111 Winter 2014 Best Fit Search for the “best fit” chunk – Smallest size greater than or equal to requested size Advantages: – Might find a perfect fit Disadvantages: – Have to search entire list every time – Quickly creates very small fragments

Lecture 12 Page 35 CS 111 Winter 2014 Worst Fit Search for the “worst fit” chunk – Largest size greater than or equal to requested size Advantages: – Tends to create very large fragments … for a while at least Disadvantages: – Still have to search entire list every time

Lecture 12 Page 36 CS 111 Winter 2014 First Fit Take first chunk you find that is big enough Advantages: – Very short searches – Creates random sized fragments Disadvantages: – The first chunks quickly fragment – Searches become longer – Ultimately it fragments as badly as best fit

Lecture 12 Page 37 CS 111 Winter 2014 Next Fit head FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT … After each search, set guess pointer to chunk after the one we chose. guess pointer That is the point at which we will begin our next search.

Lecture 12 Page 38 CS 111 Winter 2014 Next Fit Properties Tries to get advantages of both first and worst fit – Short searches (maybe shorter than first fit) – Spreads out fragmentation (like worst fit) Guess pointers are a general technique – Think of them as a lazy (non-coherent) cache – If they are right, they save a lot of time – If they are wrong, the algorithm still works – They can be used in a wide range of problems

Lecture 12 Page 39 CS 111 Winter 2014 Coalescing Domains All variable sized domain allocation algorithms have external fragmentation – Some get it faster, some spread it out We need a way to reassemble fragments – Check neighbors whenever a chunk is freed – Recombine free neighbors whenever possible – Free list can be designed to make this easier E.g., where are the neighbors of this chunk? Counters forces of external fragmentation

Lecture 12 Page 40 CS 111 Winter 2014 Free Chunk Coalescing head FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT USEDUSED LENLEN NEXTNEXT FREEFREE LENLEN NEXTNEXT … Previous chunk is free, so coalesce backwards. Next chunk is also free, so coalesce forwards. FREEFREE FREE

Lecture 12 Page 41 CS 111 Winter 2014 Fragmentation and Coalescing Opposing processes that operate in parallel – Which of the two processes will dominate? What fraction of space is typically allocated? – Coalescing works better with more free space How fast is allocated memory turned over? – Chunks held for long time cannot be coalesced How variable are requested chunk sizes? – High variability increases fragmentation rate How long will the program execute? – Fragmentation, like rust, gets worse with time

Lecture 12 Page 42 CS 111 Winter 2014 Coalescing and Free List Implementation To coalesce, we must know whether the previous and next chunks are also free If the neighbors are guaranteed to be in the free list, we can look at them and see if they are free If allocated chunks are not in the free list, we must look at the free chunks before and after us – And see if they are our contiguous neighbors – This suggests that the free list must be maintained in address order

Lecture 12 Page 43 CS 111 Winter 2014 Variable Sized Domain Summary Eliminates internal fragmentation – Each chunk is custom made for requestor Implementation is more expensive – Long searches of complex free lists – Carving and coalescing External fragmentation is inevitable – Coalescing can counteract the fragmentation Must we choose the lesser of two evils?

Lecture 12 Page 44 CS 111 Winter 2014 Another Option Fixed partition allocations result in internal fragmentation – Processes don’t use all of the fixed partition Dynamic domain allocations result in external fragmentation – The elements on the memory free list get smaller and less useful Can we strike a balance in between?

Lecture 12 Page 45 CS 111 Winter 2014 A Special Case for Fixed Allocations frequency 4K K Internal fragmentation results from mismatches between chunk sizes and request sizes (which we have assumed to be randomly distributed) But if we look at what actually happens, it turns out that memory allocation requests aren’t random at all.

Lecture 12 Page 46 CS 111 Winter 2014 Why Aren’t Memory Request Sizes Randomly Distributed? In real systems, some sizes are requested much more often than others Many key services use fixed-size buffers – File systems (for disk I/O) – Network protocols (for packet assembly) – Standard request descriptors These account for much transient use – They are continuously allocated and freed OS might want to handle them specially

Lecture 12 Page 47 CS 111 Winter 2014 Buffer Pools If there are popular sizes, – Reserve special pools of fixed size buffers – Satisfy matching requests from those pools Benefit: improved efficiency – Much simpler than variable domain allocation Eliminates searching, carving, coalescing – Reduces (or eliminates) external fragmentation But we must know how much to reserve – Too little, and the buffer pool will become a bottleneck – Too much, and we will have a lot of unused buffer space Only satisfy perfectly matching requests – Otherwise, back to internal fragmentation

Lecture 12 Page 48 CS 111 Winter 2014 How Are Buffer Pools Used? Process requests a piece of memory for a special purpose – E.g., to send a message System supplies one element from buffer pool Process uses it, completes, frees memory – Maybe explicitly – Maybe implicitly, based on how such buffers are used E.g., sending the message will free the buffer “behind the process’ back” once the message is gone

Lecture 12 Page 49 CS 111 Winter 2014 Dynamically Sizing Buffer Pools If we run low on fixed sized buffers – Get more memory from the free list – Carve it up into more fixed sized buffers If our free buffer list gets too large – Return some buffers to the free list If the free list gets dangerously low – Ask each major service with a buffer pool to return space This can be tuned by a few parameters: – Low space (need more) threshold – High space (have too much) threshold – Nominal allocation (what we free down to) Resulting system is highly adaptive to changing loads

Lecture 12 Page 50 CS 111 Winter 2014 Lost Memory One problem with buffer pools is memory leaks – The process is done with the memory – But doesn’t free it Also a problem when a process manages its own memory space – E.g., it allocates a big area and maintains its own free list Long running processes with memory leaks can waste huge amounts of memory

Lecture 12 Page 51 CS 111 Winter 2014 Garbage Collection One solution to memory leaks Don’t count on processes to release memory Monitor how much free memory we’ve got When we run low, start garbage collection – Search data space finding every object pointer – Note address/size of all accessible objects – Compute the compliment (what is inaccessible) – Add all inaccessible memory to the free list

Lecture 12 Page 52 CS 111 Winter 2014 How Do We Find All Accessible Memory? Object oriented languages often enable this – All object references are tagged – All object descriptors include size information It is often possible for system resources – Where all possible references are known (E.g., we know who has which files open) How about for the general case?

Lecture 12 Page 53 CS 111 Winter 2014 General Garbage Collection Well, what would you need to do? Find all the pointers in allocated memory Determine “how much” each points to Determine what was and was not still pointed to Free what isn’t pointed to Why might that be difficult?

Lecture 12 Page 54 CS 111 Winter 2014 Problems With General Garbage Collection A location in the data or stack segments might seem to contain addresses, but... – Are they truly pointers, or might they be other data types whose values happen to resemble addresses? – If pointers, are they themselves still accessible? – We might be able to infer this (recursively) for pointers in dynamically allocated structures … – But what about pointers in statically allocated (potentially global) areas? And how much is “pointed to,” one word or a million? –

Lecture 12 Page 55 CS 111 Winter 2014 Compaction and Relocation Garbage collection is just another way to free memory – Doesn’t greatly help or hurt fragmentation Ongoing activity can starve coalescing – Chunks reallocated before neighbors become free We could stop accepting new allocations – But resulting convoy on memory manager would trash throughput We need a way to rearrange active memory – Re-pack all processes in one end of memory – Create one big chunk of free space at other end

Lecture 12 Page 56 CS 111 Winter 2014 Memory Compaction swap device PCPC PEPE PFPF PDPD Largest free block Now let’s compact! Largest free block An obvious improvement!

Lecture 12 Page 57 CS 111 Winter 2014 All This Requires Is Relocation... The ability to move a process – From region where it was initially loaded – Into a new and different region of memory What’s so hard about that? All addresses in the program will be wrong – References in the code segment Calls and branches to other parts of the code References to variables in the data segment – Plus new pointers created during execution That point into data and stack segments

Lecture 12 Page 58 CS 111 Winter 2014 The Relocation Problem It is not generally feasible to re-relocate a process – Maybe we could relocate references to code If we kept the relocation information around – But how can we relocate references to data? Pointer values may have been changed New pointers may have been created We could never find/fix all address references – Like the general case of garbage collection Can we make processes location independent?

Lecture 12 Page 59 CS 111 Winter 2014 Virtual Address Spaces 0x xFFFFFFFF shared codeprivate data private stackDLL 1DLL 2DLL 3 Virtual address space (as seen by process) Physical address space (as on CPU/memory bus) address translation unit (magical)

Lecture 12 Page 60 CS 111 Winter 2014 Memory Segment Relocation A natural model – Process address space is made up of multiple segments – Use the segment as the unit of relocation – Long tradition, from the IBM system 360 to Intel x86 architecture Computer has special relocation registers – They are called segment base registers – They point to the start (in physical memory) of each segment – CPU automatically adds base register to every address OS uses these to perform virtual address translation – Set base register to start of region where program is loaded – If program is moved, reset base registers to new location – Program works no matter where its segments are loaded

Lecture 12 Page 61 CS 111 Winter 2014 How Does Segment Relocation Work? 0x xFFFFFFFF shared code private data private stackDLL 1DLL 2DLL 3 Virtual address space Physical memory codedata stack DLL code base registerdata base register stack base registeraux base register physical = virtual + base seg

Lecture 12 Page 62 CS 111 Winter 2014 Relocating a Segment 0x xFFFFFFFF shared code private data private stackDLL 1DLL 2DLL 3 Physical memory codedata stack DLL code base registerdata base register stack base registeraux base register physical = virtual + base seg Let’s say we need to move the stack in physical memory The virtual address of the stack doesn’t change stack base register We just change the value in the stack base register

Lecture 12 Page 63 CS 111 Winter 2014 Relocation and Safety A relocation mechanism (like base registers) is good – It solves the relocation problem – Enables us to move process segments in physical memory – Such relocation turns out to be insufficient We also need protection – Prevent process from reaching outside its allocated memory E.g., by overrunning the end of a mapped segment Segments also need a length (or limit) register – Specifies maximum legal offset (from start of segment) – Any address greater than this is illegal (in the hole) – CPU should report it via a segmentation exception (trap)

Lecture 12 Page 64 CS 111 Winter 2014 How Much of Our Problem Does Relocation Solve? We can use variable sized domains – Cutting down on internal fragmentation We can move domains around – Which helps coalescing be more effective – But still requires contiguous chunks of data for segments – So external fragmentation is still a problem We need to get rid of the requirement of contiguous segments

Lecture 12 Page 65 CS 111 Winter 2014 Overlays Another problem not yet addressed is limiting a process’ memory to the amount of RAM Even relocatable segments doesn’t solve that – Since it just moves them from place to place One solution is overlays – Define parts of the address space not needed simultaneously – Have such overlayed segments “share” a portion of the physical address space

Lecture 12 Page 66 CS 111 Winter 2014 Using Overlays Typically defined at the program level – By program authors For example, consider a two pass assembler – Pass 1 produces a symbol table – Pass 2 generates machine code – The instructions for the two passes need not be in memory simultaneously – So we could Run pass 1 Load the code for pass 2 on top of pass 1’s code Run pass 2

Lecture 12 Page 67 CS 111 Winter 2014 Making Overlays Work Need a special loader that is overlay aware Explicit instructions are used to invoke the loader – Which knows which segments can be used as overlays – Also need to fiddle with linking Can be done without OS support But very complicated and not widely used today

Lecture 12 Page 68 CS 111 Winter 2014 But Overlays Suggest Something Overlays are bad because they require users to think about what memory segments are disjoint Why force the users to think about it? Why not have the system do it for them? Could be done statically (e.g., program analysis), but why not dynamically? Why not have the system determine at run time what needs to be in memory?