Next | Prev | Up | Top | Contents | Index

Defining the Address Space

Each user-level process has a virtual address space. This term means nothing more than the set of memory addresses that the process can use without error. When 32-bit addressing is in use, addresses can range from 0 to 0x7fffffff; that is, 231 possible numbers, for a total theoretical size of 2 gigabytes. (Numbers greater than 231 are are in the IRIX kernel's address space.)

When 64-bit addressing is used, a process's address space can encompass 240 numbers. (The numbers greater than 240 are reserved for kernel address spaces.) For more details on the structure of physical and virtual address spaces, see the IRIX Device Driver Programmer's Guide and the MIPS architecture documents listed on page xxii.

Although the address space includes a vast quantity of potential numbers, usually only a small fraction of the addresses are valid.

A segment of the address space is any range of contiguous addresses. Certain segments are created or reserved for certain uses.

The address space is called "virtual" because the address numbers are not directly related to physical RAM addresses where the data resides. The mapping from a virtual address to the corresponding real memory location is kept in a table created by the IRIX kernel and used by the CPU hardware.


Address Space Boundaries
Page Numbers and Offsets
Address Definition
Address Space Limits
Delayed and Immediate Space Definition
Page Validation
Read-Only Pages
Copy-on-Write Pages

Next | Prev | Up | Top | Contents | Index