The operating system lies between user programs and the bare machine. It's roles are varied depending on the particular hardware and user programs it is designed to work with.
In this section we want to examine the hardware requirements of the bare machine necessary for a modern multiprogramming operating system.