Memory Management Unit - Examples - VAX

VAX

VAX pages are 512 bytes, which is very small. An OS may treat multiple pages as if they were a single larger page, for example Linux on VAX groups 8 pages together, thus the system is viewed as having 4 KB pages. The VAX divides memory into 4 fixed-purpose regions, each 1 GB in size. They are:

  • P0 space, which is used for general-purpose per-process memory such as heaps,
  • P1 space, or control space, which is also per-process and is typically used for supervisor, executive, kernel, and user stacks and other per-process control structures managed by the operating system,
  • S0 space, or system space, which is global to all processes and stores operating system code and data, whether paged or not, including pagetables,
  • S1 space, which is unused and "Reserved to Digital".

Page tables are big linear arrays. Normally this would be very wasteful when addresses are used at both ends of the possible range, but the page table for applications is itself stored in the kernel's paged memory. Thus there is effectively a 2-level tree, allowing applications to have sparse memory layout without wasting lots of space on unused page table entries. The VAX MMU is notable for lacking an accessed bit. OSes which implement paging must find some way to emulate the accessed bit if they are to operate efficiently. Typically, the OS will periodically unmap pages so that page-not-present faults can be used to let the OS set an accessed bit.

Read more about this topic:  Memory Management Unit, Examples