<< Chapter < Page Chapter >> Page >

Need dynamic memory allocation both for main memory and for file space on disk.

Two basic operations in dynamic storage management:

  • Allocate
  • Free

Dynamic allocation can be handled in one of two general ways:

  • Stack allocation (hierarchical): restricted, but simple and efficient.
  • Heap allocation: more general, but less efficient, more difficult to implement.

Stack organization: memory allocation and freeing are partially predictable (as usual, we do better when we can predict the future).Allocation is hierarchical: memory is freed in opposite order from allocation. If alloc(A) then alloc(B) then alloc(C), then it must be free(C) then free(B)then free(A).

  • Example: procedure call. Program calls Y, which calls X. Each call pushes another stack frame on top of the stack. Each stack frame has space forvariable, parameters, and return addresses.
  • Stacks are also useful for lots of other things: tree traversal, expression evaluation, top-down recursive descent parsers, etc.

A stack-based organization keeps all the free space together in one place.

Heap organization: allocation and release are unpredictable. Heaps are used for arbitrary list structures, complex dataorganizations. Example: payroll system. Do not know when employees will join and leave the company, must be able to keep track of all them using the leastpossible amount of storage.

  • Inevitably end up with lots of holes. Goal: reuse the space in holes to keep the number of holes small, their size large.
  • Fragmentation: inefficient use of memory due to holes that are too small to be useful. In stack allocation, all the holes are together in one bigchunk.
  • Refer to Knuth volume 1 for detailed treatment of what follows.
  • Typically, heap allocation schemes use a free list to keep track of the storage that is not in use. Algorithms differ in how they manage the freelist.
    • Best fit: keep linked list of free blocks, search the whole list on each allocation, choose block that comesclosest to matching the needs of the allocation, save the excess for later. During release operations, merge adjacent free blocks.
    • First fit: just scan list for the first hole that is large enough. Free excess. Also mergeon releases. Most first fit implementations are rotating first fit.
  • Bit Map: used for allocation of storage that comes in fixed-size chunks (e.g. disk blocks, or 32-byte chunks). Keep a large array of bits, onefor each chunk. If bit is 0 it means chunk is in use, if bit is 1 it means chunk is free. Will be discussed more when talking about file systems.

Pools: keep a separate allocation pool for each popular size. Allocation is fast, no fragmentation.

Reclamation Methods: how do we know when memory can be freed?

  • It is easy when a chunk is only used in one place.
  • Reclamation is hard when information is shared: it cannot be recycled until all of the sharers are finished. Sharing is indicated by thepresence of pointers to the data (show example). Without a pointer, cannot access (cannot find it).

Two problems in reclamation:

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Operating systems. OpenStax CNX. Aug 13, 2009 Download for free at http://cnx.org/content/col10785/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Operating systems' conversation and receive update notifications?

Ask