Memory Area | Hardware Protection | OS Protection | Reason |
Page 0 | Invalid | Invalid | Catches NULL pointer use |
Code/Constants | Read-only | Read-only | Unchanging memory, may be shared |
Global Data | Read-write | Read-write | Normal variable use |
Read-only | Copy-on-write | Allows untouched pages to be shared | |
The Heap | Read-write | Read-write | Normal variable use |
Read-only | Copy-on-write | Allows untouched pages to be shared | |
Invalid | Invalid | Invalid | Pages above heap |
Memory Mapped | Read-only | Read-only | Read-only file |
File | Read-write | Read-write | Read-write file |
Read-only | Locked region | Record locking on file region | |
Read-only | Copy-on-write | Allows unaltered sections to be shared | |
Shared Memory | Read-only | Read-only | Another process has r-w |
Region | Read-write | Read-write | Area is shared read-write |
Read-only | Locked region | Record locking on memory region | |
Read-only | Copy-on-write | Allows unaltered sections to be shared | |
Invalid | Invalid | Fill-on-use | Pages below stack |
The Stack | Read-write | Read-write | Normal variable use |
Read-only | Copy-on-write | Allows untouched pages to be shared | |
Shared Libraries | Read-only | Read-only | Unchanging memory, may be shared |
OS Code/Constants | Kernel read-only | Read-only | |
OS Global Data | Kernel read-write | Read-write | |
Invalid | Invalid | Invalid | |
OS Stack | Kernel read-write | Read-write | |
Device Pages | Kernel read-write | Read-write |