2. The techniques needed to implement dynamic
storage allocation techniques depends on how
the space is deallocated.
ie, implicitly or explicitly
3. Explicit allocation of fixed size block
Explicit allocation of variable size block
Implicit deallocation
4. The simplest form dynamic storage allocation.
The blocks linked together in a list and the
allocation and deallocation can done quickly
with less or no storage overhead
A pointer available points to the first block in
the list of available blocks
6. When blocks are allocated & deallocated
storage can become fragmented ie, heap may
consist alternate blocks that are free & in use
In variable size allocation it will be a problem
bcoz we could not allocate a block larger than
any free blocks, even though the space is
available
The first fit method can be used to allocate
variable sized block
7. When a block of size is allocated it search for
the first free block size f>=s. This block is then
subdivided in to a used block of size s& a free
block of size f-s. Its time consuming;
When a block is deallocated ,it check to see if it
is next to a free block .If possible,the
deallocated is combined with a free block next
to it to create larger free block.It helps to avoid
fragmentation.
9. Implicit deallocation requires the cooperation
between user program& runtime packages.this
is implemented by fixing the format of storage
blocks. Optional block size
Optional reference count
Optional mark
Pointers to blocks
User information
10. The first problem is to recognize the block
boundaries,for fixed size it is easy.
In variable size block the size of block is kept in
a inaccessible storage attached to the block.
The second problem is of recognizing the if a
block is in use. Used block can be referred by
the user program using pointers. The pointers
are kept in a fixed position in the block for the
easiness of checking the reference .
11. Two approaches can be used for implicit
deallocation.
Reference counts
Marking techniques
12. We keep track of the no of reference to the
present block. if it ever drops to 0 the block is
deallocated.
Maintaining reference counts can be costly in
time(the pointer assignment p:=q leads to
changes in the reference counts of the blocks
pointed by both p&q)
Reference counts are best if there is no cyclical
reference occurs.
13. Here the user program suspend temporarily &
use the frozen pointers to determine the used
blocks This approach requires all the pointers
to the heap to be known.(conceptually,it’s like
pouring paint to the heap through the pointers)
First we go through the heap&marks all the
blocks unused.Then we follow the pointers
&mark all the reachable blocks as used.Then
sequential scan of heap collects all the blocks
still marked unused.