Memory Management


I tried to give answers to the following questions in this section :

What is Memory Management and what is it needed for?

Memory is a part of the computer system where volatile information can be stored. It is a much faster storage medium than disks or tapes are, but it can only serve as intermediate storage place because the information is lost when the power supply is off.
When the CPU is executing programs it has to get the commands from somewhere, and it must be provided with space to store the results. For the sake of efficiency, only memory is capable of playin the role of a storage medium for the CPU.
Memory Management is needed when a program is to be executed. The Memory Manager then gives the process the requested amount of memory and makes sure that no other process is allowed to change the content of this memory section (Otherwise the result could be data corruption: one program saving data back to disk which has been changed from outside).
The process of giving memory exclusively to a certain program is called memory allocation. The process of freeing that part of memory again and to make it usable for the next process(es) is called memory deallocation accordingly.

Logical organisation of memory

In order to make it accessible every memory cell has got an address. It is given as a hexadecimal number. Looking at this address it is possible for us to treat memory as a single stack of cells, starting with zero and rising up to the total amount of memory:

Memory part Start address End address Size

000D AC00 000F 9FFF 125 KByte

000B B800 000D ABFF 125 KByte

0009 C400 000B B7FF 125 KByte

0007 D000 0009 C3FF 125 KByte

0005 DC00 0007 CFFF 125 KByte

0003 E800 0005 DBFF 125 KByte

0001 F400 0003 E7FF 125 KByte

0000 0000 0001 F3FF 125 KByte

Figure: Logical stack of 1 MB of system memory
(divided into 8 parts of 125 KB each)

What ways of memory allocation are there?

Early systems
Recent systems

© 2000-2001 Peter Gallert, last updated on 8 August 2001