Base and bounds


In computing base and bounds refers to a simple form of virtual memory where access to computer memory is controlled by one or a small number of sets of processor registers called base and bounds registers.
In its simplest form each user process is assigned a single contiguous segment of main memory. The operating system loads the physical address of this segment into a base register and its size into a bound register. Virtual addresses seen by the program are added to the contents of the base register to generate the physical address. The address is checked against the contents of the bounds register to prevent a process from accessing memory beyond its assigned segment.
The operating system is not constrained by the hardware and can access all of physical memory.
This technique protects memory used by one process against access or modification by another. By itself it does not protect memory from erroneous access by the owning process. It also allows programs to be easily relocated in memory, since only the base and bounds registers have to be modified when the program is moved.
Some computer systems extended this mechanism to multiple segments, such as the i bank and d bank for instructions and data on the UNIVAC 1100 series computers or the separation of memory on the DEC PDP-10 system into a read/write "low" segment for the user process and a read-only "high" segment for sharable code.
Segmented virtual memory is a further generalization of this mechanism to a large number of segments. Usually the segment table is kept in memory rather than registers.