1. Introduction

3 parts (pieces):

  1. Virtualization: CPU, memory

  2. Concurrency: threads [and processes]

  3. Persistence: file system

OS Design Goals:

  • Abstractions (APIs)

  • Performance (minimize overhead)

  • Protection (isolation)

  • Reliability

  • Other: security, energy-efficiency, mobility (dynamic networking)

How:

  • Software: operating system (kernel)

  • Hardware: user mode vs. kernel mode, privileged instructions, system calls, traps