Skip to main content

Learning Resources

This module is populated from the local chunked books in library/raw/semester-05-os-networking/books. Use this page as a source map, not as an instruction to read everything.

Source Stack

BookRoleHow to use it in this module
Operating Systems: Three Easy Pieces (Arpaci-Dusseau)Primary teaching sourceDefault escalation for processes, scheduling policies, context-switch mechanics, and proportional-share; best for "how Linux actually does it" intuition
Operating System Concepts (Silberschatz, Galvin, Gagne)Selective support for rigorUse for formal definitions of scheduling metrics, real-time scheduling (RMS/EDF), and multi-processor scheduling approaches with case studies
Computer Networking (Kurose & Ross)Not this moduleReserved for semester 5 networking modules
Unix Network Programming (Stevens)Not this moduleReserved for semester 5 IPC/networking modules

Resource Map by Cluster

Cluster 1: What a Process Is

NeedBest local chunkWhy
operational intro to processesOSTEP 4.1: The Abstraction: A ProcessClean, no-prerequisite description of what a process is
CPU virtualization framingOSTEP 2.1: Virtualizing the CPUMotivates why processes exist at all
process creation detailOSTEP 4.3: Process CreationStep-by-step creation walk-through
process states and transitionsOSTEP 4.4: Process StatesThe canonical 3+ state diagram with text
PCB and the process listOSTEP 4.5: Data StructuresActual xv6 struct proc shown in code
fork semanticsOSTEP 5.1: The fork() System CallWorked example of parent/child divergence
exec semanticsOSTEP 5.3: The exec() System CallWhy exec replaces rather than returns
why fork/exec are separateOSTEP 5.4: Why? Motivating the APIThe shell-redirection argument
other process APIOSTEP 5.5: Other Parts of the APIwait, signals, and related calls
concepts-book framingOS Concepts: Chapter 3 ProcessesTextbook-style rigorous introduction
scheduling queues modelOS Concepts: 3.2.1 Scheduling QueuesAlternate framing: multiple queues per state
creation formallyOS Concepts: 3.3.1 Process Creation (Part 1)Parent-child hierarchy and resource sharing
creation, part 2OS Concepts: 3.3.1 Process Creation (Part 2)fork + exec with full example
process terminationOS Concepts: 3.3.2 Process TerminationOrphans, zombies, wait

Cluster 2: CPU Scheduling Policies

NeedBest local chunkWhy
scheduling problem setupOSTEP 7.1: Workload AssumptionsFCFS, SJF, STCF derived step by step
response time as a metricOSTEP 7.6: A New Metric: Response TimeShows why turnaround alone is not enough
Round-RobinOSTEP 7.7: Round RobinQuantum tradeoff with numbers
MLFQ rulesOSTEP 8.1: MLFQ Basic RulesThe two core rules with motivation
MLFQ priority changeOSTEP 8.2: Attempt #1: How to Change PriorityDemotion and gaming the scheduler
MLFQ tuningOSTEP 8.5: Tuning MLFQRealistic parameters and edge cases
MLFQ summaryOSTEP 8.6: MLFQ SummaryOne-page recap of the full algorithm
concepts-book scheduling introOS Concepts: Chapter 5 CPU SchedulingClean uniprocessor framing
scheduling metricsOS Concepts: 5.2 Scheduling CriteriaUtilization, throughput, turnaround, response, waiting defined
round-robin formalOS Concepts: 5.3.3 Round-RobinSecond exposition of RR with worked averages
multilevel queuesOS Concepts: 5.3.5 Multilevel QueueMLFQ's simpler non-feedback cousin

Cluster 3: Scheduler Metrics and Fairness

NeedBest local chunkWhy
metrics, appliedOSTEP 7.1: Workload Assumptions (metrics)Turnaround formalized
response time in contextOSTEP 7.6: A New Metric: Response TimeAdds interactive workloads
proportional share introOSTEP 9.1: Tickets Represent Your ShareThe fairness-as-share formulation CFS uses
ticket mechanismsOSTEP 9.2: Ticket MechanismsStride scheduling and alternatives
assigning tickets (shares)OSTEP 9.5: How to Assign Tickets?The unsolved policy question behind nice
proportional share summaryOSTEP 9.7: SummaryCFS-as-rigorous-proportional-share
metrics formalismOS Concepts: 5.2 Scheduling CriteriaRigorous metric definitions
multilevel queue / prioritiesOS Concepts: 5.3.5 Multilevel QueueWhere priority classes live
rate-monotonic schedulingOS Concepts: 5.6.3 Rate-Monotonic SchedulingRMS schedulability test and example

Cluster 4: Context Switching and Overhead

NeedBest local chunkWhy
limited direct executionOSTEP 6.1: Limited Direct ExecutionFoundation: user mode vs kernel mode
restricted operationsOSTEP 6.2: Problem 1 - Restricted OperationsTraps and the syscall mechanism
switching, part 1OSTEP 6.3: Problem 2 - SwitchingWhy voluntary yield is not enough
switching, part 2OSTEP 6.3: Switching (Part 2)Timer interrupts and forced preemption
switching, part 3OSTEP 6.3: Switching (Part 3)The actual register-swap code
context-switch costOSTEP 6.5: Summary (HOWLONGCONTEXTSWITCHESTAKE)Measured numbers for context-switch cost
TLB issue on switchOSTEP 19.5: TLB Issue - Context SwitchesWhy TLB is the silent tax
concurrency introOSTEP 26: Concurrency: An IntroductionSets up thread vs process
thread creationOSTEP 26.1: Thread CreationTwo threads, one address space
shared data problemOSTEP 26.2: Why It Gets Worse - Shared DataMakes the "shared state" tradeoff concrete
cache management framingOS Concepts: 1.5.5 Cache ManagementWhy caches matter for switch cost
threads & concurrencyOS Concepts: Chapter 4 Threads & ConcurrencyRigorous thread model
Linux threadsOS Concepts: 4.7.2 Linux ThreadsHow clone gives you thread-or-process

Cluster 5: Scheduling in Modern Systems

NeedBest local chunkWhy
single-queue pitfallsOSTEP 10.4: Single-Queue SchedulingWhy one lock does not scale
multi-queue schedulingOSTEP 10.5: Multi-Queue SchedulingPer-CPU runqueues and balancing tradeoffs
multi-CPU summaryOSTEP 10.7: SummaryConsolidated multi-core policy
synchronization in schedulerOSTEP 10.2: Don't Forget SynchronizationLock-related multi-core pitfalls
proportional share summaryOSTEP 9.7: SummaryCFS internals connection
multi-processor approachesOS Concepts: 5.5.1 Approaches to Multi-Processor SchedulingSymmetric vs asymmetric, push vs pull
processor affinityOS Concepts: 5.5.4 Processor AffinitySoft vs hard affinity with examples
Linux CFS, part 1OS Concepts: 5.7.1 Example: Linux Scheduling (Part 1)CFS structure and vruntime
Linux CFS, part 2OS Concepts: 5.7.1 Example: Linux Scheduling (Part 2)Real-time classes and group scheduling
Windows schedulerOS Concepts: 5.7.2 Example: Windows SchedulingPriority-boost-style scheduler

Exercise Support Chunks

Use these when concept pages are understood but fluency is weak:

External Resources (Read-If-Curious)

Only use these if you want a second exposition or deeper background. The module is completable from the local chunks alone.

Use Rules

  • If you are stuck on what a process is or how it is created, start with OSTEP chapters 4-5 (Cluster 1 chunks).
  • If you are stuck on scheduling policy mechanics, go to OSTEP chapters 7-9. OS Concepts 5.2 is the second escalation for formal metric definitions.
  • If you are stuck on context-switch cost, OSTEP chapter 6 plus chapter 19.5 (TLB) cover it completely.
  • If you need the formal real-time bound (RMS or EDF), OS Concepts 5.6.3 is the canonical reference.
  • If you need production-relevant Linux detail (CFS, cgroups, containers), escalate to the external LWN and Brendan Gregg links -- the books do not cover cgroups v2 in depth.
  • Open one chunk for one concept gap; do not drift through a whole chapter sequence.
  • If re-reading does not fix the problem, run the experiment (Practice 1 Gantt exercise, Practice 3 context-switch estimate, or Kata 2). Physical measurement beats more reading.