In a dynamic multiprogramming environment, with processes of different sizes starting and terminating all
the time, it became important to make wise choices about how to allocate memory. It was all too easy to end up
with processes scattered throughout memory, with small unallocated blocks of memory between, and no blocks
of memory large enough to run another program. For example, a ready program might require 12K of space,
and there might be more than that much unused memory, but the unused memory might be scattered widely,
with no one block being 12K or larger.
Unusable memory scattered between allocated partitions is called ???external fragmentation.??? On the other
hand, unused memory within an allocated block is called ???internal fragmentation.??? Internal fragmentation
results because the OS allocates memory in rather large units, usually in ???pages??? of 1024 to 4096 memory
addresses at a time. Almost always the last page allocated to a process is not entirely used, and so the unused
portion constitutes internal fragmentation.
Unused memory blocks are called ???holes,??? and much research was devoted to finding the most efficient
way to allocate memory to processes. The ???best fit??? approach sought the smallest hole that was big enough for
the new process.
Pages:
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321