Unit 3 MemoryManagement
Unit 3 MemoryManagement
asia
UNIT – III
Memory Management
Address binding of instructions and data to memory addresses can happen at three different stages
Compile time: If memory location known a priori, absolute code can be generated; must recompile
code if starting location changes
Load time: Must generate relocatable code if memory location is not known at compile time
Execution time: Binding delayed until run time if the process can be moved during its execution from
one memory segment to another. Need hardware support for address maps (e.g., base and limit
registers)
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Dynamic Loading
Routine is not loaded until it is called
Better memory-space utilization; unused routine is never loaded
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Useful when large amounts of code are needed to handle infrequently occurring cases
No special support from the operating system is required implemented through program design
Dynamic Linking
Linking postponed until execution time
Small piece of code, stub, used to locate the appropriate memory-resident library routine
Stub replaces itself with the address of the routine, and executes the routine
Operating system needed to check if routine is in processes’ memory address
Dynamic linking is particularly useful for libraries
System also known as shared libraries
Swapping
A process can be swapped temporarily out of memory to a backing store, and then brought back into
memory for continued execution Backing store – fast disk large enough to accommodate copies of all
memory images for all users; must provide direct access to these memory images Roll out, roll in –
swapping variant used for priority-based scheduling algorithms; lower-priority process is swapped out so
higher-priority process can be loaded and executed Major part of swap time is transfer time; total transfer
time is directly proportional to the amount of memory swapped Modified versions of swapping are found on
many systems (i.e., UNIX, Linux, and Windows)
System maintains a ready queue of ready-to-run processes which have memory images on disk
Contiguous Allocation
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Multiple-partition allocation
Hole – block of available memory; holes of various size are scattered throughout memory
When a process arrives, it is allocated memory from a hole large enough to accommodate it
Operating system maintains information about:
a) allocated partitions b) free partitions (hole)
OS OS OS OS
process 8 process 10
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
I/O problem
Latch job in memory while it is involved in I/O
Do I/O only into OS buffers
Paging
Logical address space of a process can be noncontiguous; process is allocated physical memory
whenever the latter is available
Divide physical memory into fixed-sized blocks called frames (size is power of 2, between 512 bytes
and 8,192 bytes)
Divide logical memory into blocks of same size called pages Keep track of all free frames
To run a program of size n pages, need to find n free frames and load program
Set up a page table to translate logical to physical addresses
Internal fragmentation
p d
m-n n
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Paging Example
Free Frames
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Page #
Frame #
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Shared Pages
Shared code
One copy of read-only (reentrant) code shared among processes (i.e., text editors, compilers, window
systems).
Shared code must appear in same location in the logical address space of all processes
Private code and data
Each process keeps a separate copy of the code and data
The pages for the private code and data can appear anywhere in the logical address space
Shared Pages Example
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
pi p2 d
12 10 10
Address-Translation Scheme
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Segmentation
Memory-management scheme that supports user view of memory
A program is a collection of segments
A segment is a logical unit such as:
main program
procedure function
method
object
local variables, global variables
common block
stack
symbol table
arrays
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
1
1 4
3 2
4
3
user space
physical
memory space
Segmentation Architecture
Logical address consists of a two tuple:
o <segment-number, offset>,
Segment table – maps two-dimensional physical addresses; each table entry has:
base – contains the starting physical address where the segments reside in memory
limit – specifies the length of the segment
Segment-table base register (STBR) points to the segment table’s location in memory
Segment-table length register (STLR) indicates number of segments used by a program;
segment number s is legal if s < STLR
Protection
With each entry in segment table associate:
validation bit = 0 Þ illegal segment
read/write/execute privileges
Protection bits associated with segments; code sharing occurs at segment level
Since segments vary in length, memory allocation is a dynamic storage-allocation problem
A segmentation example is shown in the following diagram
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
Segmentation Hardware
Example of Segmentation
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
jntuworldupdates.org Specworld.in
Smartzworld.com Smartworld.asia
jntuworldupdates.org Specworld.in