0% found this document useful (0 votes)
23 views26 pages

Myl 12

The document discusses dynamic partition allocation and paging for memory management. It describes how memory can be allocated to programs depending on their requirements using partitions that adjust in size. Paging allows programs to have a contiguous virtual address space while physical memory can be allocated non-contiguously in frames. The memory management unit translates between virtual and physical addresses to map virtual pages to physical frames.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
23 views26 pages

Myl 12

The document discusses dynamic partition allocation and paging for memory management. It describes how memory can be allocated to programs depending on their requirements using partitions that adjust in size. Paging allows programs to have a contiguous virtual address space while physical memory can be allocated non-contiguously in frames. The memory management unit translates between virtual and physical addresses to map virtual pages to physical frames.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 26

Dynamic Partition Allocation

• Allocate memory depending on


requirements

• Partitions adjust depending on memory size

• Requires relocatable code


– Works best with relocation registers
Dynamic Partition Allocation

Program 1

Program 2

Program 3
External Fragmentation

Program 1

These fragments
are not allocated
to any program,
and they are Program 2
wasted.

Program 3
Allocation Policies
• Best Fit
• First Fit
• Worst Fit
• Rotating First Fit
First Fit Allocation
1K bytes
To allocate n bytes, use
the first available free
block such that the block
size is larger than n. 2K bytes 2K bytes

To allocate 400 bytes,


we use the 1st free block 500 bytes 500 bytes
available
Rationale & Implementation
• Simplicity of implementation
Requires:
• Free block list sorted by address
• Allocation requires a search for a suitable partition
• Deallocation requires a check to see if the freed partition
could be merged with adjacent free partitions (if any)
First Fit Allocation
Advantages Disadvantages
• Simple • External fragmentation
• Tends to produce
larger free blocks
toward the end of the
address space
Best Fit Allocation
1K bytes 1K bytes
To allocate n bytes, use
the smallest available free
block such that the block
size is larger than n. 2K bytes 2K bytes

To allocate 400 bytes,


we use the 3rd free block 500 bytes
available (smallest)
Rationale & Implementation
• To avoid fragmenting big free blocks
• To minimize the size of external fragments produced
Requires:
• Free block list sorted by size
• Allocation requires search for a suitable partition
• Deallocation requires search + merge with adjacent free
partitions, if any
Best Fit Allocation
Advantages Disadvantages
• Works well when most • External fragmentation
allocations are of small • Slow allocation
size • Slow deallocation
• Relatively simple
• Tends to produce many
useless tiny fragments (not
really great)
Worst Fit Allocation
1K bytes 1K bytes
To allocate n bytes,
use the largest
available free block
2K bytes
such that the block
size is larger than n.

To allocate 400 bytes,


we use the 2nd free block 500 bytes
available (largest)
Rationale & Implementation
• To avoid having too many tiny fragments
Requires:
• Free block list sorted by size
• Allocation is fast (get the largest partition)
• Deallocation requires merge with adjacent free partitions,
if any, and then adjusting the free block list
Worst Fit Allocation
Advantages Disadvantages
• Works best if • External fragmentation
allocations are of • Tends to break large free
medium sizes blocks such that large
partitions cannot be
allocated
How bad is external
fragmentation? (Knuth)
H: # of holes S: # of used segments

blue: when released, H is decreased by 1


green: when released, H is unchanged
red: when released, H is increased

S = b+g+r H = (2b+g+)/2
At equilibrium, b = r
S = b+g+r = 2b+g = 2H or H = S/2
number of holes is half of number of segments!
Compaction (Burping)

Program 1 Program 1

Program 2
Program 2
Program 3

Program 3
Multiprogramming
• Multiprogramming: Ability to run more than one program
simultaneously
• Early systems: degree of multiprogramming had to be
large to maximize the return on hardware investment
• Multiprogramming requires all programs to be resident in
memory simultaneously
– Can be done by partitioned memory allocation, but
– Size of memory limits the number of programs that can run
simultaneously
Swapping
• Allows to schedule more programs simultaneously than
the memory can accommodate
– Use a partition on disk to “extend” the main memory
– Processes are added until memory is full
– If more programs need to be loaded, pick one program and save its
partition on disk (the process is swapped out, cannot run)
– Later, bring the process back from disk (process is swapped in)
and swap out another process
• Done on an all-or-nothing basis
– The entire process is either in memory or on swap space (cannot
be between both),
Memory & Scheduling

Start Ready Running


Process
Process loaded
I/O
creation, in main I/O Done
requested
resources memory done
allocated Zombie
I/O Wait
Done
Process
Swapped waiting Resources
out Process for I/O deallocated
on disk
Memory & Scheduling (cont’d)
• Need two levels of scheduling:
– Upper level decides on swapping:
• When
• Who
• For how long
– Lower level decides on who actually runs on the CPU (what we
have covered so far)
• Upper level is invoked if there are processes swapped out,
and whenever we need to load more programs than can fit
in main memory
Paging
Memory Partitioning Troubles
• Fragmentation
• Need for compaction/swapping
• A process size is limited by the available
physical memory
• Dynamic growth of partition is troublesome
• No winning policy on
allocation/deallocation P2

P3
The Basic Problem
• A process needs a contiguous partition(s)
But
• Contiguity is difficult to manage

Contiguity mandates the use of physical memory addressing


(so far)
The Basic Solution
• Give illusion of a contiguous address space
• The actual allocation need not be contiguous
• Use a Memory Management Unit (MMU) to translate from the
illusion to reality
A solution: Virtual Addresses
• Use n-bit to represent virtual or logical addresses
• A process perceives an address space extending from
address 0 to 2n-1
• MMU translates from virtual addresses to real ones
• Processes no longer see real or physical addresses
Paged Memory
• Subdivide the address space (both virtual and physical) to
“pages” of equal size
• Use MMU to map from virtual pages to physical ones
• Physical pages are called frames
Paging: Example
Virtual Physical Virtual
0 0

Process 1
Process 0

You might also like