base and limit registers
Think of a hotel giving a guest a room: 'Your room starts at door 305, and you have 3 rooms.' Two numbers fully describe the guest's space — where it begins and how big it is. The guest may roam freely inside, but security stops them at the edge. The base register is 'where your space begins' and the limit register is 'how big your space is'. Together they are the simplest possible memory protection and translation scheme.
Concretely, the base (or relocation) register holds the smallest physical address the process is allowed to use, and the limit register holds the size of its region. On every memory access, the hardware does two things in this order: first it checks that the logical address is less than the limit; if not, it traps to the OS as an addressing error. If the check passes, it adds the base to the logical address to form the real physical address. So a process living at base 90000 with limit 5000 can legally produce logical addresses 0 through 4999, which become physical 90000 through 94999, and nothing outside that.
Why it matters: this is the textbook starting point for understanding memory protection. Crucially, only the OS (in kernel mode) can load these registers; a user program cannot, so it cannot grant itself more memory or move its own boundary. On a context switch the OS reloads them for the next process. The scheme is simple and fast but assumes each process occupies one single contiguous block — its main limitation, which paging and segmentation later relax.
Process P has base = 90000, limit = 5000. Access to logical 4999 -> check 4999 < 5000 passes -> physical 94999, allowed. Access to logical 5000 -> check 5000 < 5000 fails -> trap, the OS kills P with a segmentation/addressing fault.
Two registers give both relocation (add base) and protection (check limit).
Loading the base and limit registers must be a privileged operation — if a user process could change them, protection would collapse. This is why memory protection depends on dual-mode operation.