Introduction to Bare Machine and Resident Monitor 

Bare Machine

The simplest form of organization of main memory is Bare Machine where the entire memory is given to the designer, there is no partition in the memory. Now it is up to the designer to decide that which part of the memory will contain the monitor and which part of the memory will be used for storing of temporary data, for storage of raw data, for storage of processed data, everything.

So everything has to be decided by the system designer. Usually this is the type of memory organization which is used for implementation of dedicated systems that is if I wanted to design a computer which is not to be used for general purpose computing. I can have a computer for controlling some power plant or for controlling some process. In that case the computer that I will use for that control operation, I will not want that computer to do any general purpose computation.

Memory organization using in Bare machine has the following features - 

  • ·         No Protection.
  • ·     No Overhead.
  • ·     Simplest form of memory management.
  •          User have complete control and operating system has none.
  • ·   This is used by hardware diagnostics, by the system boot code, real time/dedicated system, maximum flexibility to user and minimum hardware cost.
  • ·     No os service. It means OS manage nothing instead of its entire address space is given to the program and all the managing left to it.
bare machine and resident monitor memory organization

Figure 1: Bare Machine and Resident Monitor Based Memory Organization 

Resident Monitor

In case of resident monitor system, the memory is partitioned, divided into two partitions. One of the partition is occupied by the monitor program or the operating system and the second partition contains the user data or the user program.

User program should not be able to modify anything into the monitor area of the memory. So what we essentially need is protection of the monitor or protection of the operating system against any user program.

So how that can be done? Whenever the user program tries to access any of the memory location, the program will generate the address of the memory location which is to be accessed. Now if the part of the memory or  the partition within the memory which is occupied by the operating system or the monitor is well defined. Then I can check on the address that is being accessed by the user program. If essentially what I have to have is what is called a fence address.
While execution of a user program, the CPU generates the address. The address of the memory location that is to be accessed while execution of the user program. I also have a fence address which is the boundary between the user area and the monitor area. So I have to compare this fence address with the address that is generated by the CPU. So I have to compare these two addresses.  In such a system, the hardware must protect the monitor code  (OS code) from the user; this is often done with a fence address as follows:

bare machine

Figure 2: Protection of Monitor Space using fence address.

Must check each memory reference against fence ( fixed or variable ) in hardware or register. If user generated address < fence, then illegal.

Keywords: definition of resident monitor, what is bare machine, definition of fence address,logical address,memory, operating system code protection , user process