In the case that I have 1Mb block of memory as follows:
+----------------------------------------------------------------------------+
| 1Mb |
+----------------------------------------------------------------------------+
And say I use the buddy system to allocate processes to this memory block, so that the memory block looks as follows:
+------------------------------------------------------------------------------+
| 128K | 128K | 256K | 512K |
+------------------------------------------------------------------------------+
And say the following requests are have been made and added:
- Request A = 100K
- Request B = 240K
- Request C = 120K.
And let the allocation look as follows:
+-------------------------------------------------------------------------------------+
| A = 128K | C = 128K | B = 256K | 512K |
+-------------------------------------------------------------------------------------+
Now say that I want to release C and add a new Request D = 600K. This would not be possible since there isn't enough contiguous space available for this process.
Now my question is when can it be seen as External Fragmentation?
I know there's internal fragmentation in requests A,B and C but when can you say it's external fragmentation? Only when you know there's a process which would need more memory than what's contiguously available or can all free and unused memory be seen as external fragmentation?
If I missed some key details or information please forgive me, but at the moment this is all I know and well I ask because I'd like to know more.