A program that runs on the “raw” hardware and supports
Resource Abstraction
Resource Sharing
Abstracts and standardizes the interface to the user across different types of hardware
Virtual machine hides the messy details which must be performed
Manages the hardware resources
Each program gets time with the resource
Each program gets space on the resource
May have potentially conflicting goals:
Use hardware efficiently
Give maximum performance to each user