The need for hardware memory protection was first met when operating systems which permitted the running of users’ programs written in a variety of languages, including assembly language, came into use. One early system, the CTSS, had a separate memory to hold the supervisor and this memory could be accessed only when the computer was in privileged mode. More flexibility in the use of available memory space is required and it is now common for computers to be provided with a number of base-limit registers, each of which, when appropriately loaded, points to and delimits a segment of memory; when the computer is operating in normal mode only those parts of the memory that lie within segments pointed to by base-limit registers are accessible. Associated with each base-limit register are a few extra bits which define the type of access permitted, for example, read-only, read-write, execute-only, etc. If an attempt is made to access memory outside the permitted limits or to make an access of a forbidden type, the hardware switches the computer to privileged mode and sends control to a place in memory determined by the nature of the violation that has occurred. This type of organisation is illustrated in Figure 1.1, taken from Wilkes (1975), where a fuller discussion of such memory protection systems will be found.