[ This is a BACKUP server. Do NOT use unless the primary server is DOWN. ]
In the lecture slides and videos section below, I will post lecture slides and pre-recorded lecture videos before 6pm on the day before the live lecture. Within 24 hours after a live lecture is over, I will add the recording of the live lectures there as well. For a high-level preview of future lectures, please see the tentative slides section below.
One problem with such a Zoom setup is that audio/video equipment can malfunction (e.g., no sound in Zoom, camera is stuck pointing at the wall, etc.). It's also possible that there is no wifi in the lecture classroom! If things like that happens, there is very little I can do and I must continue with the live lecture in classroom. Of course, it's best if you come to the live class.
NOTE: Before you click on any video link, please make sure you have signed into USC Brightspace since these videos are stored in a D2L server on USC Brightspace.
If you have trouble accessing one of the videoes directly, please try the following. Go to USC Brightspace to our class, click on Content and click on Week N Lectures, where N is a week number, then click on the lecture video you want to access. In this case, you are looking at a basic MP4 video player. Then click on the icon at the bottom of the video player that has an arrow pointing to the right-top corner of your screen (it says "Watch In Panopto" if you hover your mouse over it), if it all works, you will be viewing the video in the Panopto video player which is a better video player with more features. If not, you would see a screen that asks you to login to D2L or Panopto. Go back to the previous screen and click on the video to start playing the video in the basic MP4 player for about 10 seconds. Then click on the icon at the bottom of the video player that has an arrow pointing to the right-top corner of your screen (it says "Watch In Panopto" if you hover your mouse over it), this time, it should works. The browser will also memorize your Panopto/D2L credentials. From this point on, you can come back to this web page and click on the video links directly.
Within 24 hours after a lecture is over, I will post the PDF lecture slides I used here.
(May 22, 2025) Lecture 1 (PDF) - course administration, PA1, introduction (Ch 1), the kernel abstraction (Ch 2)
- recording of the lecture - 132 minutes
(May 27, 2025) Lecture 2 (PDF) - introduction (Ch 1), the kernel abstraction (Ch 2)(May 29, 2025) Lecture 3 (PDF) - the kernel abstraction (Ch 2)
- recording of the lecture - 129 minutes
- recording of the lecture (part 1 of 3) - 45 minutes
- recording of the lecture (part 2 of 3) - 44 minutes
- recording of the lecture (part 3 of 3) - 32 minutes
(Jun 3, 2025) Lecture 4 (PDF) - the programming interface (Ch 3), PA2(Jun 5, 2025) Lecture 5 (PDF) - PA2, the programming interface (Ch 3)
- recording of the lecture - 133 minutes
there were errors on slides 59 and 60 and they were fixed in the PDF slides above
it looks like Internet connectivity was intermittent between time index 19:00 and 26:35; video and audio was touch and go for a while
- recording of the lecture - 132 minutes
(Jun 10, 2025) Lecture 6 (PDF) - the programming interface (Ch 3), concurrency and threads (Ch 4)(Jun 12, 2025) Lecture 7 (PDF) - concurrency and threads (Ch 4), synchronizing access to shared objects (Ch 5)
- recording of the lecture - 127 minutes
- recording of the lecture - 128 minutes
(Jun 17, 2025) Lecture 8 (PDF) - exam logistics PA3 synchronizing access to shared objects (Ch 5)
- recording of the lecture - 128 minutes
(Jun 19, 2025) no lecture - Juneteenth (non instructional day)
(Jun 24, 2025) Lecture 9 (PDF) - synchronizing access to shared objects (Ch 5), multi-object synchronization (Ch 6),
- recording of the lecture - 128 minutes
(Jun 19, 2025) no lecture - Midterm Exam
(Jul 1, 2025) Lecture 10 (PDF) - PA4, multi-object synchronization (Ch 6)
- recording of the lecture - 128 minutes
(Jul 3, 2025) no lecture - Independence Day (university holiday)
(Jul 8, 2025) Lecture 11 (PDF) - multi-object synchronization (Ch 6), scheduling (Ch 7)
- recording of the lecture - 129 minutes
(Jul 10, 2025) Lecture 12 (PDF) - scheduling (Ch 7), address translation (Ch 8)
- recording of the lecture - 128 minutes
(Jul 15, 2025) Lecture 13 (PDF) - address translation (Ch 8), PA5
- recording of the lecture - 130 minutes
(Jul 17, 2025) Lecture 14 (PDF) - caching and virtual memory (Ch 9), file systems: introduction and overview (Ch 11)
- recording of the lecture - 121 minutes
(Jul 22, 2025) Lecture 15 (PDF) - file systems: introduction and overview (Ch 11), Storage Devices (Ch 12)
(slide 19 in above PDF has been corrected and is slightly different from what's in the lecture video)
- recording of the lecture - 129 minutes
(Jul 24, 2025) Lecture 16 (PDF) - Storage Devices (Ch 12), Files and Directories (Ch 13)
- recording of the lecture - 128 minutes
(Jul 29, 2025) Lecture 17 (PDF) - Files and Directories (Ch 13)
- recording of the lecture - 70 minutes
(Jul 31, 2025) Lecture 18 (PDF) - Reliable Storage (Ch 14)
- recording of the lecture - 96 minutes
- (Aug 5, 2025) - final exam (firm)
- Administrative
- course administration (PDF)
- exam logistics (PDF)
- housekeeping (PDF) (frequent updates)
- Programming Assignments
- Ch 1: Introduction (PDF)
- (1.1) What Is An Operating System?
- (1.2) Operating System Evaluation
- (1.3) Operating System: Past, Present, and Future
- Ch 2: The Kernel Abstraction (PDF)
- (2.1) The Process Abstraction
- (2.2) Dual-Mode Operation
- (2.3) Types of Mode Transfer
- (2.4) Implementing Safe Mode Transfer
- (2.5) Putting It All Together: x86 Mode Transfer
- (2.6) Implementing Secure System Calls
- (2.7) Starting A New Process
- (2.8) Implementing Upcalls
- (2.9) Case Study: Booting An OS Kernel
- (2.10) Case Study: Virtual Machines
- Ch 3: The Programming Interface (PDF)
- (3.1) Process Management
- (3.2) Input/Output
- (3.3) Case Study: Implementing a Shell
- (3.4) Case Study: Interprocess Communication
- (3.5) Operating System Structure
- Ch 4: Concurrency and Threads (PDF)
- (4.1) Thread Use Cases
- (4.2) Thread Abstraction
- (4.3) Simple Thread API
- (4.4) Thread Data Structures and Life Cycle
- (4.5) Thread Life Cycle
- (4.6) Implementing Kernel Threads
- (4.7) Combining Kernel Threads and Single-Threaded User Processes
- (4.8) Implementing Multi-Threaded Processes
(4.9) Alternative Abstractions
- Ch 5: Synchronizing Access to Shared Objects (PDF)
- (5.1) Challenges
- (5.2) Structuring Shared Objects
- (5.3) Locks: Mutual Exclusion
- (5.4) Condition Variables: Waiting for a Change
- (5.5) Designing and Implementing Shared Objects
- (5.6) Three Case Studies
- (5.7) Implementing Synchronization Objects
- (5.8) Semaphores Considered Harmful
- Ch 6: Multi-Object Synchronization (PDF)
(6.1) Multiprocessor Lock Performance(6.2) Lock Design Patterns(6.3) Lock Contention- (6.4) Multi-Object Atomicity
- (6.5) Deadlock
(6.6) Non-Blocking Synchronization
- Ch 7: Scheduling (PDF)
- (7.1) Uniprocessor Scheduling
(7.2) Multiprocessor Scheduling- (7.3) Energey-Aware Scheduling
- (7.4) Real-Time Scheduling
- (7.5) Queueing Theory
- (7.6) Overload Management
- (7.7) Case Study: Servers in a Data Center
- Ch 8: Address Translation (PDF)
- (8.1) Address Translation Concept
- (8.2) Towards Flexible Address Translation
- (8.3) Towards Efficient Address Translation
- (8.4) Software Protection
- Ch 9: Caching and Virtual Memory (PDF)
- (9.1) Cache Concept
- (9.2) Memory Hierarchy
- (9.3) When Caches Work and When They Do Not
- (9.4) Memory Cache Lookup
- (9.5) Replacement Policies
- (9.6) Case Study: Memory-Mapped Files
- (9.7) Case Study: Virtual Memory
- Ch 10: Advanced Memory Management (PDF)
(10.1) Zero-Copy I/O(10.2) Virtual Machines(10.3) Fault Tolerance(10.4) Security(10.5) User-Level Memory Management
- Ch 11: File Systems: Introduction and Overview (PDF)
- (11.1) The File System Abstraction
- (11.2) API
- (11.3) Software Layers
- Ch 12: Storage Devices (PDF)
- (12.1) Magnetic Disk
- (12.2) Flash Storage
- Ch 13: Files and Directories (PDF)
- (13.1) Implementation Overview
- (13.2) Directories: Naming Data
- (13.3) Files: Finding Data
- (13.4) Putting It All Together: File and Directory Access
- Ch 14: Reliable Storage (PDF)
- (14.1) Transactions: Atomic Update
- (14.2) Error Detection and Correction