An operating system serves as the layer between our applications and hardware. It is a program that creates processes, schedules execution of processes, manages memory and i/o. We will look into the algorithms of all of these tasks in order to understand the concepts of operating systems and their interconnections.