Figure 9.01 - Drexel University
Download
Report
Transcript Figure 9.01 - Drexel University
Dynamic Storage Allocation
Algorithms for Allocation
First-Fit
Best-Fit
Worst-Fit
Algorithm for Delete
Fifty-Percent Rule
Operating System Concepts
9.1
Silberschatz, Galvin and Gagne 2002
Dynamic Storage-Allocation Problem
How to satisfy a request of size n from a list of free holes.
First-fit: Allocate the first hole that is big enough.
Best-fit: Allocate the smallest hole that is big enough;
must search entire list, unless ordered by size.
Produces the smallest leftover hole.
Worst-fit: Allocate the largest hole; must also search
entire list. Produces the largest leftover hole.
First-fit and best-fit better than worst-fit in terms of
speed and storage utilization.
50-percent rule: Given N allocated blocks another 1/2N
will be lost due to fragmentation 1/3 of memory lost.
Operating System Concepts
9.2
Silberschatz, Galvin and Gagne 2002
Fragmentation
External Fragmentation – total memory space exists to satisfy
a request, but it is not contiguous.
Internal Fragmentation – allocated memory may be slightly
larger than requested memory; this size difference is memory
internal to a partition, but not being used.
Reduce external fragmentation by compaction
Shuffle memory contents to place all free memory together in one
large block.
Compaction is possible only if relocation is dynamic, and is done at
execution time.
I/O problem
Latch job in memory while it is involved in I/O.
Do I/O only into OS buffers.
50-percent rule – Given N allocated blocks another 1/2N will be
lost due to fragmentation 1/3 of memory lost.
Operating System Concepts
9.3
Silberschatz, Galvin and Gagne 2002
Best Fit vs. First Fit
Memory sizes 1300 and 1200
Requests: 1000, 1100, 250
Request
First-Fit
1300, 1200
1000
300, 1200
1100
300, 100
250
50, 100
Operating System Concepts
9.4
Best-Fit
1300, 1200
1300, 200
200, 200
stuck
Silberschatz, Galvin and Gagne 2002
Best Fit vs. First Fit
Memory sizes 1300 and 1200
Requests: 1100, 1050, 250
Request
First-Fit
1300, 1200
1100
200, 1200
1050
200, 150
250
stuck
Operating System Concepts
9.5
Best-Fit
1300, 1200
1300, 100
250, 200
0, 200
Silberschatz, Galvin and Gagne 2002
First-Fit Method
Request a block of size N. Returns first available block
of size N. If no block available, then returns NULL
AVAIL points to first available block
1. [Initialize] Q AVAIL
2. [End of list?] P Next(Q); If P = NULL return(NULL).
3. [Check size.] if Size(P) N goto 4 else Q P; goto 2.
4. [Reserve block.] K Size(P) – N.
if K = 0 Next(Q) Next(P) else Size(P) K;
Return(P+K).
Operating System Concepts
9.6
Silberschatz, Galvin and Gagne 2002
First-Fit Method
Improvements
In step 4, if K < c (small constant) return block of size N +
K.
Roving pointer. Start next search where previous search
ended. This prevents accumulation of small blocks in the
beginning of AVAIL.
Operating System Concepts
9.7
Silberschatz, Galvin and Gagne 2002
Free
Assume AVAIL is sorted by memory location (if P NULL,
Next(P) > P).
return block of size N beginning at location P0.
1. [Initialize.] Q AVAIL.
2. [Advance P.] P Next(Q).
if P = NULL or P > P0 goto 3 else Q P and repeat.
3. [Check upper bound.]
if P0 + N = P and P NULL
N N + Size(P); Next(P0) Next(P)
else Next(P0) P.
4. [Check lower bound.]
if Q + Size(Q) = P0
Size(Q) Size(Q) + N; Link(Q) Link(P0)
else Link(Q) Po; Size(P0) N.
Operating System Concepts
9.8
Silberschatz, Galvin and Gagne 2002
Improvements to Free
Use doubly linked list and tags to free in constant time.
Operating System Concepts
9.9
Silberschatz, Galvin and Gagne 2002
Fifty Percent Rule
If allocation and deletion are used continually in such a way that
the system tends to an equilibrium condition, where there are N
reserved blocks in the system, on the average, each equally
likely to be the next one deleted, and where the probability that
allocating a new block does not change the number of blocks is
p, then the average number of available blocks tends to
approximately 1/2pN.
A
B C C B
A
B B
B C B
B
N = A + B + C (number of reserved blocks)
M = ½(2A + B + ), {0,1,2} (number of available blocks)
Average change in M when a block is freed is (C-A)/N and when
a block is allocated is (1-p)
C - A - N + Np = 0 2M = N + A - C +
Operating System Concepts
9.10
Silberschatz, Galvin and Gagne 2002