Reference and Selective Reading
You do not need to read the source books front-to-back for this module. Use the concept pages and practice pages first. Open these local chunks only when you need alternate exposition, more worked examples, or a deeper exercise lane.
Source Roles
| Source | Role | Why it is here |
|---|---|---|
| Operating Systems: Three Easy Pieces (OSTEP) | Primary teaching source | Best operational explanations of processes, scheduling policies, and context-switch mechanics; code-first with xv6 examples |
| Operating System Concepts (Silberschatz et al.) | Formal support | Rigorous definitions of scheduling metrics, the canonical RMS/EDF treatment, and case studies of Linux/Windows/Solaris schedulers |
| Computer Networking (Kurose & Ross) | Not applicable this module | Reserved for networking modules |
| Unix Network Programming (Stevens) | Not applicable this module | Reserved for networking modules |
Read Only If Stuck
Cluster 1: What a Process Is
- OSTEP 2.1: Virtualizing the CPU
- OSTEP 4.1: The Abstraction: A Process
- OSTEP 4.3: Process Creation (detail)
- OSTEP 4.4: Process States
- OSTEP 4.5: Data Structures (PCB)
- OSTEP 5.1: The fork() System Call
- OSTEP 5.3: The exec() System Call
- OSTEP 5.4: Why? Motivating the API
- OSTEP 5.5: Other Parts of the API
- OS Concepts: Chapter 3 Processes
- OS Concepts: 3.2.1 Scheduling Queues
- OS Concepts: 3.3.1 Process Creation Part 1
- OS Concepts: 3.3.1 Process Creation Part 2
- OS Concepts: 3.3.2 Process Termination
Cluster 2: CPU Scheduling Policies
- OSTEP 7.1: Workload Assumptions
- OSTEP 7.6: A New Metric: Response Time
- OSTEP 7.7: Round Robin
- OSTEP 8.1: MLFQ Basic Rules
- OSTEP 8.2: MLFQ - How to Change Priority
- OSTEP 8.5: Tuning MLFQ
- OSTEP 8.6: MLFQ Summary
- OS Concepts: Chapter 5 CPU Scheduling
- OS Concepts: 5.2 Scheduling Criteria
- OS Concepts: 5.3.3 Round-Robin Scheduling
- OS Concepts: 5.3.5 Multilevel Queue
Cluster 3: Scheduler Metrics and Fairness
- OSTEP 7.1: Workload Assumptions (metrics)
- OSTEP 7.6: A New Metric - Response Time
- OSTEP 9.1: Tickets Represent Your Share
- OSTEP 9.2: Ticket Mechanisms
- OSTEP 9.5: How To Assign Tickets?
- OSTEP 9.7: Proportional Share Summary
- OS Concepts: 5.2 Scheduling Criteria
- OS Concepts: 5.3.5 Multilevel Queue (priorities)
- OS Concepts: 5.6.3 Rate-Monotonic Scheduling
Cluster 4: Context Switching and Overhead
- OSTEP 6.1: Limited Direct Execution
- OSTEP 6.2: Restricted Operations
- OSTEP 6.3: Switching Between Processes (Part 1)
- OSTEP 6.3: Switching (Part 2)
- OSTEP 6.3: Switching (Part 3)
- OSTEP 6.5: Context Switch Cost Summary
- OSTEP 19.5: TLB - Context Switches
- OSTEP 26: Concurrency Introduction
- OSTEP 26.1: Thread Creation
- OSTEP 26.2: Why It Gets Worse - Shared Data
- OS Concepts: 1.5.5 Cache Management
- OS Concepts: Chapter 4 Threads & Concurrency
- OS Concepts: 4.2.2 Types of Parallelism
- OS Concepts: 4.7.2 Linux Threads
Cluster 5: Scheduling in Modern Systems
- OSTEP 10.2: Don't Forget Synchronization
- OSTEP 10.4: Single-Queue Scheduling
- OSTEP 10.5: Multi-Queue Scheduling
- OSTEP 10.7: Multi-CPU Summary
- OSTEP 9.7: Proportional Share Summary (CFS framing)
- OS Concepts: 5.5.1 Approaches to Multi-Processor Scheduling
- OS Concepts: 5.5.4 Processor Affinity
- OS Concepts: 5.7.1 Example: Linux Scheduling Part 1
- OS Concepts: 5.7.1 Example: Linux Scheduling Part 2
- OS Concepts: 5.7.2 Example: Windows Scheduling
- OS Concepts: 5.7.3 Example: Solaris Scheduling
Optional Deep Dive
- OSTEP 11: CPU Virtualization Summary Dialogue - retrospective tying the CPU virtualization chapters together.
- OSTEP: xv6 homework on scheduling - simulator homework for hands-on scheduling experiments.
- OS Concepts: 5.8.3 Simulations - textbook scheduling simulator exercises.
- OS Concepts: 5.7.3 Solaris Scheduling - fair-share scheduler case study, different from Linux.
- OS Concepts: 4.5.1 Thread Pools - user-space reasoning around scheduling many short tasks.
- OS Concepts: 4.5.2 Fork-Join - where kernel scheduling meets task-parallel runtimes.
Concept-to-Source Map
| Primary concept | Best source if stuck | Why this source |
|---|---|---|
| The process abstraction | OSTEP 4.1: The Abstraction: A Process | Cleanest intro-level framing |
| The PCB and kernel state | OSTEP 4.5: Data Structures | Actual code for a PCB, not prose |
| fork/exec and process trees | OSTEP 5.4: Why? Motivating the API | The argument for the split API |
| FCFS/SJF/SRTF | OSTEP 7.1: Workload Assumptions | Derives the policies, does not just present them |
| Round-Robin and quantum | OSTEP 7.7: Round Robin | Best quantum-tradeoff discussion |
| MLFQ | OSTEP 8.6: MLFQ Summary | Full algorithm in one place |
| Scheduler metrics | OS Concepts: 5.2 Scheduling Criteria | Rigorous, clean metric definitions |
| Priorities and nice | OS Concepts: 5.3.5 Multilevel Queue | Priority-class framework |
| Real-time (RMS/EDF) | OS Concepts: 5.6.3 Rate-Monotonic | Canonical treatment with utilization bound |
| Context switch mechanics | OSTEP 6.3: Switching Part 3 | Shows the actual switch code |
| Context switch cost | OSTEP 6.5: Summary (HOWLONGCONTEXTSWITCHESTAKE) | Real numbers and methodology |
| TLB and switch cost | OSTEP 19.5: TLB - Context Switches | Focuses precisely on this hidden cost |
| Threads vs processes | OSTEP 26.1: Thread Creation | Two-thread program, one address space -- makes sharing tangible |
| Multi-core scheduling | OSTEP 10.5: Multi-Queue Scheduling | Per-CPU queue + balancer tradeoff |
| Linux CFS | OS Concepts: 5.7.1 Linux Scheduling Part 1 | Only local source with CFS internals |
| cgroups & containers | See external resources (LWN, Kubernetes docs) | Local books predate cgroup v2 details |