previous | start | next

Minix 3 Virtual Addresses

Minix 3 uses segments without paging. A process has 3 local segments:

  1. text
  2. data
  3. stack

Memory allocation in Minix 3 is not dynamic. A process gets a fixed amount of physical memory. E.g., the illustration shows the segments and gap for a process that has been allocated a block of size 10K from physical address 200K up to 210K.

Text \__ 200K (0x32000)
Data \__ 203K (0x32c00)
Gap \__ 207K (0x33c00)
Stack \__ 208K (0x34000)
\__ 210K (0x34800)
Virtual Physical Length
Text 0 0xC8 3
Data 0 0xCB 4
Stack 0x5 0xD0 1

 

In Minix 3 a contiguous block of physical memory is allocated for a process. This includes the three segments and the gap. During execution the stack will "grow" into the gap reducing the gap size during function calls, but no new physical memory is allocated. Similarly in Minix 3, if a process invokes malloc no new physical memory is actually allocated to the process. Minix 3 just adjusts the size of the data segment within the physical block of memory that is already allocated to the process.



previous | start | next