Operating Systems (Fall 2026) | SNU Systems Software & Architecture Laboratory

Course Information

When 11:00 - 12:15 (Tuesday / Thursday)
Where Lecture room #301-203, Engineering Building I
Instructor Jin-Soo Kim
Professor, Dept. of Computer Science and Engineering, SNU
Language Korean
Course Description This course covers fundamental operating system concepts, such as process management, memory management, I/O systems, and file systems, with an in-depth study of the latest Linux operating system. In addition, students will engage in several hands-on projects using the xv6 instructional OS.
Textbook Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces, Arpaci-Dusseau Books, November 2023 (Version 1.10)
References Thomas Anderson and Michael Dahlin, Operating Systems: Principles and Practice, 2nd Edition, Recursive Books, August 2014.
Andrew S. Tanenbaum and Herbert Bos, Modern Operating Systems, 5th Edition, Pearson, March 2022.
Prerequisites M1522.000800 System Programming
4190.308 Computer Architecture
Grading Exams: 75% (Midterm 30%, Final 35%)
Projects: 35%
* Grading policy is subject to change
Teaching Assistants TBD

Schedule

The following schedule is tentative and subject to change without notice.

Day Topic Reading
9/1 Course overview
9/3 Introduction to operating systems 2
9/8 Architectural support for OS 6
9/10
9/15 Processes 4, 5
9/17 CPU scheduling 7, 8
9/22
9/24 Virtual memory 13, 14, 15, 16
9/29 Paging 18
10/1 Page tables 20
10/6 TLB 19
10/8 Memory Mapping
10/13 Swapping 21, 22
10/15 Midterm Exam
10/20 Virtual Memory Implementations 23
10/22
10/27 Threads 26, 27
10/29 Locks 28
11/3
11/5 Semaphores 31, 32
11/10 Monitors
11/12 Condition variables 30
11/17 I/O (Makeup Class, Available in eTL)
11/19 Hard disk drives (HDDs) (Makeup Class, Available in eTL) 36, 37
11/24 File systems 39
11/26 File system implementation 40
12/1 Fast file system 41
12/3 File system consistency 42
12/8 Solid state drives (SSDs) 44
12/10 Final Exam

Credit: Most of slides for this lecture are based on materials provided by the authors of the textbook and references.

Projects

For project submission and automatic grading, we are running a dedicated server at https://sys.snu.ac.kr. If you want to access the sys server outside of the SNU campus, please send a request via a Google Form whose URL is posted in the eTL.

Project #4: Holy COW!

COW (Copy-on-Write) is a virtual memory technique that lets multiple address spaces share the same physical memory until one of them tries to modify it. Instead of eagerly copying all user memory during fork(), the kernel marks shared pages read-only and creates a private copy only on a write fault. In this project, you will implement COW in xv6 in two stages: first for user pages, and then for leaf page-table pages as well. The goal of this project is to understand the xv6 virtual memory subsystem.

  • Project specification available here
  • Due date: 11:59 PM, May 31 (Sunday).

Project #3: CPU Hotplugging

CPU hotplugging is the ability of an operating system to dynamically bring a CPU core online or take it offline while the system is running. This mechanism is useful for power management, fault isolation, and adapting the number of active CPUs to the current workload. In this project, you will extend xv6 so that individual harts can be turned on and off at runtime in a controlled and safe manner. The goal is to understand the low-level interaction between the scheduler, interrupts, and multiprocessor hardware while implementing a practical OS mechanism for dynamic CPU management.

  • Project specification available here
  • Due date: 11:59 PM, May 3 (Sunday).

Project #2: System Calls

System calls are interfaces that allow user applications to request various services from the operating system kernel. This project aims to explore and understand how system calls are implemented in the xv6 operating system.

  • Project specification available here
  • Due date: 11:59 PM, April 5 (Sunday).

Project #1: Hello world, xv6

xv6 is an instructional operating system developed by MIT based on Ken Thompson and Dennis Ritchie’s Unix version 6 (v6). In this course, we will use xv6-riscv, a version recently ported to a multi-core RISC-V machine. The goal of this project is to set up your development environment on Linux or macOS and familiarize yourself with our project submission server.

  • Project specification available here
  • Due date: 11:59 PM, March 17 (Tuesday).

xv6 Resources