Operating Systems Course

Free online course · 9 lessons

Learn how an operating system virtualizes the CPU and memory, supports concurrency and persists data, and how it protects and isolates programs. After the course you can reason about processes, threads, memory and storage in any system you build or run.

By Studeli

Start with lesson 1

What you will learn in 9 lessons

Every lesson includes all nine study tools

  • Study Guide
  • Summary
  • Walkthroughs
  • Practice Questions
  • Flashcards
  • Explain It
  • Key Terms
  • Cheat Sheet
  • Concept Map
  1. Explain how an operating system virtualizes the CPU with processes, system calls and context switches, and create processes with fork, exec and wait.

    5 learning goals
    1. 1.Explain what an operating system does
    2. 2.Describe processes and the states they move through
    3. 3.Create and control processes with fork, exec and wait
    4. 4.Explain user mode, kernel mode and system calls
    5. 5.Explain how the OS shares the CPU with limited direct execution
  2. Compare scheduling policies such as FIFO, shortest job first, round robin and multi-level feedback queues using turnaround and response time.

    6 learning goals
    1. 1.Describe what a CPU scheduler does and how to measure it
    2. 2.Compare FIFO, shortest-job-first, round-robin and priority scheduling
    3. 3.Schedule without knowing run times using a multi-level feedback queue
    4. 4.Share the CPU in proportion with tickets, strides and virtual runtime
    5. 5.Schedule work on several CPUs
    6. 6.Explain and use the schedulers of real operating systems
  3. Explain how the operating system gives each process its own address space using base and bounds, segmentation and free-space management.

    5 learning goals
    1. 1.Explain how the operating system gives each process its own memory
    2. 2.Use the memory API and see how the operating system supports it
    3. 3.Translate addresses with base and bounds
    4. 4.Translate addresses with segmentation
    5. 5.Manage free space and fragmentation
  4. Translate addresses with page tables and TLBs, compare multi-level page tables and evaluate page replacement policies when memory is full.

    5 learning goals
    1. 1.Translate virtual addresses with paging
    2. 2.Speed up translation with the TLB
    3. 3.Make page tables smaller
    4. 4.Go beyond physical memory with swapping
    5. 5.Choose page replacement policies and prevent thrashing
  5. Create threads, identify race conditions and critical sections and protect shared data with locks.

    5 learning goals
    1. 1.Explain what threads are and create them with POSIX threads
    2. 2.Find race conditions and critical sections in concurrent code
    3. 3.Protect shared data with locks and mutexes
    4. 4.Explain how locks are built from hardware support
    5. 5.Design lock-based concurrent data structures
  6. Coordinate threads with condition variables and semaphores, solve producer–consumer and readers–writers problems and prevent deadlock and other concurrency bugs.

    5 learning goals
    1. 1.Coordinate threads with condition variables
    2. 2.Use semaphores to lock, order and limit threads
    3. 3.Recognize and fix non-deadlock concurrency bugs
    4. 4.Prevent, avoid and detect deadlock
    5. 5.Build concurrent programs with events instead of threads
  7. Explain how the operating system talks to devices through interrupts, DMA and drivers, and compare hard disks, SSDs and RAID levels for performance and reliability.

    5 learning goals
    1. 1.Explain how the operating system talks to devices
    2. 2.Model hard disk drive performance and schedule disk requests
    3. 3.Explain how flash-based SSDs work and how they compare with hard disks
    4. 4.Use RAID to balance capacity, performance and reliability
    5. 5.Detect and repair storage errors with checksums
  8. Use the file and directory API, explain how file systems store data with inodes and allocation structures and compare journaling and log-structured approaches to crash consistency.

    6 learning goals
    1. 1.Use the file and directory interface
    2. 2.Explain how a simple file system stores and finds data
    3. 3.Explain how the Fast File System uses locality for speed
    4. 4.Keep a file system consistent across crashes
    5. 5.Explain how a log-structured file system writes and reclaims space
    6. 6.Compare how distributed file systems share files over a network
  9. Explain how operating systems authenticate users, control access to resources and isolate workloads with virtual machines and containers.

    5 learning goals
    1. 1.Explain how hardware and the kernel protect the system
    2. 2.Authenticate users and give processes an identity
    3. 3.Control access to files and other resources
    4. 4.Run operating systems inside virtual machines
    5. 5.Isolate applications with containers

Make your own Study Materials

Turn your notes, slides and documents into Study Guides, Practice Questions, Flashcards and 6 more tools.

Get Started