CS370: Operating Systems


red-line
[Schedule] [Assignments] [Grading] [Syllabus] [Infospaces] [Canvas] [Home]

Schedule


Last updated on Monday, August 31, 2026 1:21 PM
Professor Lecture Coordinates
 

Shrideep Pallickara

Office Hours:
Fridays 3:00-4:00 pm in CSB-364 and via Zoom
E-mail: compsci_cs370@colostate.edu





 


Natural Resources Room-140
TTH 2:00-3:15 pm

All e-mails should be addressed to:
compsci_cs370@colostate.edu


Graduate Teaching Assistants
Cameron Seuss

Collin Conrad

Undergraduate Teaching Assistants
Ryan Baldwin

Wilson Valentine



Key to Notation
Readings will be from the Operating Systems Concepts book by Silberschatz, Galvin, and Gagne 10th edition. John Wiley & Sons, Inc. ISBN-13: 978-1119800361. [SCG]
Additional Useful References
(1)
Andrew S Tanenbaum and Herbert Bos. Modern Operating Systems. 4th Edition, 2014. Prentice Hall.
ISBN: 013359162X/978-0133591620. [AT]
(2) Thomas Anderson and Michael Dahlin. Operating Systems: Principles and Practice, 2nd Edition.
Recursive Books. ISBN: 0985673524/978-0985673529. [AD]
(3) Kay Robbins & Steve Robbins. Unix Systems Programming, 2nd edition, Prentice Hall
ISBN-13: 978-0-13-042411-2. [RR]
(4) C Programming Language (2nd Edition). Brian W. Kernighan and Dennis M. Ritchie.
Prentice Hall. ISBN: 0131103628/978-0131103627
(5) Concurrent Programming in Java(TM): Design Principles and Pattern (2nd Edition).
Doug Lea. Prentice Hall. ISBN: 0201310090/978-0201310092.




   
Introduction References and HW
This module provides an overview of the course, grading criteria, and a brief introduction to high level operating systems concepts. We will explore the differences between kernel mode and user-mode and why they exist. We will also look at the role the operating system plays between applications and the underlying hardware. Ch {1,2} [SGG]
Ch {1} [RR]
Ch {1} [AT]

Ch {1} AD




 

Objectives:

  1. Summarize basic operating systems concepts
  2. Highlight key developments in the history of operating systems
  3. Explain the distinction between kernel mode and user mode, and why that distinction matters.
 
08/25

08/27


Lecture 1

Lecture 2

   
Processes Readings
Processes are a foundational construct in organizing computations within a system. This module will contrast differences between programs and processes. A key idea covered in this module is the notion of multiprogramming which can used to give the illusion that multiple processes are executing concurrently. We will explore the layout of processes in memory and the various pieces of metadata associated with a process that are maintained in a Process Control Block (PCB). The PCB plays a foundational role in how the OS context-swictches between different processes. There is quite a bit of bookkeeping involved in maintaining the illusion that everything is happening at once. Ch {3} [SGG]
Ch {2} [AT]
Ch {2, 3} [RR]
Ch {2, 3} [AD]






  Objectives:
  1. Contrast programs and processes
  2. Explain the memory layout of processes
  3. Describe Process Control Blocks
  4. Explain the concept of Interrupts and Context Switches
  5. Describe process groups
  6. Trace the state of a process through its creation, execution, blocking, and termination. 
 
09/01

09/03



Lecture 3
   
Inter-Process Communications Readings
One of the operating system’s main jobs is to keep processes isolated, making sure they run independently without interfering with each other. But sometimes, isolation isn’t enough: processes need to communicate. In this module, we’ll explore how the OS makes that possible. We’ll break down the three key mechanisms that allow processes to exchange information while still maintaining order and control. Each IPC mechanism makes different trade-offs, and choosing between them is part of the problem rather than merely a matter of syntax.

Ch {3} [SGG]
Ch {2} [AT]
Ch {2, 3} [AD]




  Objectives:
  1. Explain inter-process communications based on Shared Memory
  2. Explain inter-process communications based on Pipes
  3. Explain inter-process communications based on message passing
  4. Contrast inter-process communications based on shared memory, pipes, and message passing
  5. Design programs that implement inter-process communications
  6. Select an appropriate IPC mechanism for a given communication pattern and justify that choice.

 
09/08

09/10



   
Threads  
Think of a thread as a lightweight unit of execution within a process: small, fast, and designed to coexist with other threads inside that process. But why would we want multiple units of execution inside one process? The main reason comes down to efficiency: simplified data sharing and rapid context switching. When multiple threads run inside the same process, they can share data easily, without the overhead that comes with communication between separate processes. Achieving this kind of seamless sharing across independent processes would be far more complex and much slower. Ultimately, threads give us a way to keep things both parallel and tightly connected, striking a balance between speed and coordination. As we will see, easy sharing is both their great advantage and the source of several interesting problems.

Ch {4} [SCG]
Ch {2} [AT]
Ch {12} [RR]
Ch {4} [AD]



 

Objectives:

  1. Explain differences between processes and threads
  2. Compare multithreading models
  3. Contrast differences between user and kernel threads
  4. Relate dominant threading libraries: POSIX, Win32, and Java
  5. Design threaded programs that can synchronize their actions
  6. Analyze the costs and benefits of using multiple threads within a process. 

 

09/15

09/17





   
Process Synchronization Ch {5}[SCG]
Ch {4} [AT]



When multiple processes (or threads) run at the same time and need to work together, they have to coordinate their actions carefully. The challenge isn’t just making them run concurrently: it’s making sure they do so correctly and safely. A flawed approach can lead to chaos, with processes stepping on each other’s toes in unpredictable ways. To get a deeper understanding of these challenges, we’ll explore some classic problems in synchronization. These time-tested scenarios reveal the fundamental issues that arise when processes share resources and need to stay in sync. Concurrency is one of those settings in which “almost correct” turns out to have a surprisingly precise technical meaning.

 

Objectives:

  1. Formulate the critical section problem.
  2. Analyze a software solution to the critical section problem (case study: Peterson's solution)
  3. Explain Synchronization hardware and Instruction Set Architecture support for concurrency primitives.
  4. Evaluate classic problems in synchronization: bounded buffers, readers-writers, dining philosophers.
 

09/22

09/24

09/29



   
Atomic Transcations  
This module will cover issues relating to preserving atomicty of transcactions. We will explore issues that arise when a multiplicty of transcactions need to execute concurrently while preserving safety properties. The central question is this: how can operations run concurrently while still producing results that appear correct and orderly? Ch {5}[SCG]
 

Objectives:

  1. Explain serializability of transactions
  2. Assess locking protocols
  3. Explain checkpointing and rollback recovery in transactional systems
 
10/01


   

Mid Term Exam (10/08): Covers all topics covered up until Thursday's (10/01) lecture.


 
   
CPU Scheduling algoirithms  
The kernel’s job isn’t just to run processes: it has to juggle them, making sure they all make progress without stepping on each other’s toes. The trick is in the scheduling. A good scheduling algorithm has to balance several competing goals: latency, throughput, priority, and fairness. No single approach is perfect, so we’ll explore a range of scheduling algorithms, each with its own strengths and trade-offs. Scheduling is less about finding the perfect algorithm than about deciding which imperfection we are willing to live with. Ch {6} [SCG]
Ch {7} [AD]
Ch {2} [AT]




 

Objectives:

  1. Evaluate scheduling criteria including fairness and time quanta.
  2. Explain and compare different approaches to scheduling: preemptive and non-preemptive
  3. Explain and analyze scheduling algorithms: FCFS, shortest jobs, priority, round-robin, multilevel feedback queues, and the Linux completely fair scheduler.
  4. Understand how CPU scheduling algorithms function on multiprocessors.
  5. Evaluate which scheduling algorithm is appropriate for a workload based on competing scheduling criteria
 
10/06

10/08

10/13

10/15




Mid Term Exam


   
Deadlocks  
A large number of processes compete for limited resources on the machine. Incorrect synchronization between these competing processes can lead to deadlocks. In this module, we will look at how to characterize deadlocks and the various mechanisms we can use to prevent them by negating structural requirments necessary for deadlocks to occur. Note that everyone waiting politely for someone else to go first isn't a solution because nobody would. Ch {7} [SCG]
Ch {6} [AT]
Ch {4} [AD]


 

Objectives:

  1. Explain deadlock characterization
  2. Contrast and explain schemes for deadlock prevention
  3. Evaluate approaches to deadlock avoidance
  4. Understand recovery from deadlocks
  5. Determine whether a resource-allocation state is safe using a deadlock-avoidance strategy

 
10/20

10/22



   
Memory Management  
Memory is a shared resource that must be effectively managed across different processes that are executing concurrently, Given that Instruction Set Architectures (ISA) operate on data stored in registers and memory, how memory is managed and shared across competing processes has implications for performance, including completion times and throughput. This module looks at how the OS turns a finite physical resource into a useful and protected abstraction for each process. Ch {8} [SCG]
Ch {3} [AT]
Ch {9} [AD]


 

Objectives:

  1. Understand address binding and address spaces
  2. Explain contiguous memory allocations: including their advantages and disadvantages
  3. Analyze the key constructs underpinning paging systems including hardware support, shared pages, and structure of page tables
  4. Explain memory protection in paging environments
  5. Explain segmentation based approaches to memory management alongside settings in which they are particularly applicable
 
10/27

10/29

11/03

11/05



   
Virtual Memory  
Pure paging-based memory allocation schemes can require processes to be entirely memory-resident. This is often infeasible and wasteful. In this module, we will explore algorithms that facilitate effective allocation of memory while minimizing wasteful allocations. We will also consider aspects of program behavior, such as the working set model, that reduce the total number of pages that need to be allocated to a process. Virtual memory is basically the OS promising more memory than it physically possesses and then working very hard to keep that promise respectable. [Ch {9} [SCG]
Ch {3} [AT]
 

Objectives:

  1. Explain demand paging and page faults
  2. Contrast page replacement algorithms and explain Belady's anomaly
  3. Justify the rationale for stack algorithms
  4. Explain frame allocations
  5. Synthesize the concepts of thrashing and working sets
  6. Trace a page-reference string through different page-replacement algorithms
 
11/10

11/12


   
Virtualization  
Virtualization creates the illusion of multiple virtual machines on the same physical hardware. Virtualization allows a single computer to host multiple virtual machines, with each virtual machine potentially running a different operating system. As part of this module, we will look at Type-1 and Type-2 hypervisors and techniques for effective virtualization. We will also examine what the hardware and the OS must provide to make that illusion convincing.
Ch {7} [AT]
Ch {16} [SCG]
Ch {10} [AD]
 

Objectives:

  1. Explain Virtual Machine Monitors (VMMs)
  2. Justify the Popek and Goldberg requirements for virtualization
  3. Explain how Virtualization works in the x86 architecture
  4. Compare Type-1 and Type-2 Hypervisors
  5. Analyze how privileged instructions and hardware support affect the implementation of virtualization 

 
11/17

11/19





   
Containers  
Containers are a lightweight, performant alternative to virtual machines. Unlike, virtual machines every container does not require its own full-blown OS. In fact, all containers on a single host share a single OS. In this module, we will see how a container is ultimately just a group of processes; a container can do what ordinary processes can do, subject to restrictions and isolation mechanisms enforced by the kernel. The abstraction may be lightweight, but the kernel is still doing the heavy lifting.  
  Objectives:
  1. Explain containers and contrast how they differ from virtualization
  2. Synthesize enabling concepts in containerization including cgroups, namespaces, and capabilities.
  3. Identify key elements that comprise container images
  4. Explain how namespaces, cgroups, and capabilities combine to provide isolation and resource control.
 
11/20



   

Thanksgiving Break
: Fall Recess at CSU November 21-29.

 
   
File Systems  
Data managed on a hard disk must be amenable to updates, discovery, and retrievals. The underlying storage system only deals with disk blocks. In this module we explore a foundational construct in file systems -- the file control block. We will explore how the design of the file control block informs efficiency in retrievals of content. We will round out our discussion of file systems with a look at the Unix File System, the File Allocation Table (FAT), and NTFS. A “file” may seem reassuringly simple from the user’s perspective; however, they do require a lot of machinery underneath.
Ch {5} [AT]
Ch {4} [RR]
Ch {10, 11} [SCG]
 

Objectives:

  1. Summarize file system structure
  2. Contrast contiguous allocation vs indexed allocations
  3. Explain the Unix File System
  4. Explain and contrast Windows File Systems: the File Allocation table and NTFS

 
12/01

12/03



   
Mass Storage  
In this module, we will explore the technologies behind the two popular data storage frameworks: hard disk drives and solid state drives. We will explore the key enablers of these systems. In the case of solid-state drives we will explore issues such as write-amplifications, wear leveling, and read-disturb errors. These devices expose the same basic abstraction to the OS while behaving very differently underneath it. Ch {11} [SCG]
Ch {12} [AD]
 

Objectives:

  1. Explain data storage in hard disk drives
  2. Explain data storage in solid state drives
  3. Compare the performance characteristics and physical constraints of HDDs and SSDs
  4. Explain how write amplification, wear leveling, and read-disturb errors affect SSD behavior and lifetime
 
12/08




   
Disk Scheduling Algorithms  
In this module we will explore the rationale and need for disk scheduling algorithms. We will review several metrics that are used to assess the peformance of disk scheduling algorithms. We will explore and analyze several different disk scheduling algorthms. These algorithms are used to inform disk head movements as data are retrieved. We will look at the major approaches and the trade-offs each makes.
Ch {12} [SCG]
 

Objectives:

  1. Explain the rationale and need for disk scheduling
  2. Profile and interpret the performance of disk scheduling algorithms
  3. Contrast the performance characteriscs of diverse disk scheduling algorithms: FCFS, SSTF, SCAN, C-SCAN, and LOOK
  4. Evaluate the suitability of different disk scheduling algorithms for different workload characteristics
 
12/10



   

Comprehensive Final Exam in Natural Resources Room-140
Tuesday, December 15th, 6:20-8:20 pm


 
   


 



Department of Computer Science, Colorado State University,
Fort Collins, CO 80523 USA
© 2026 Colorado State University