Is a computer program that abstracts the messy details of controlling a computers hardware. It takes care of memory management, disk interaction, and user facing concerns such as the UI, shell, GUI tools and services.