Operating Systems (Spring 2020) | SNU Systems Software & Architecture Laboratory


   The final project #6 has been announced here. The due date is 11:59PM, June 21.

(Posted Jun 2, 2020)

   The grading policy for this course has been finalized as follows: Final exam 50%, Project assignments 50% (PA1 1%, PA2 2%, PA3 6%, PA4 9%, PA5 12%, PA6 20%).

(Posted May 21, 2020)

   We plan to have a final exam from 11:00 to 12:15 on June 18 (Thursday). We will use two lecture rooms, 302-106 (for even student IDs) and 302-107 (for odd student IDs), for the final exam. The scope will be Textbook (chapters shown in the schedule page), xv6, and lecture slides. You are allowed to bring a cheat sheet if you want (A4-sized, both sides, handwritten only). I hope to see you all!

(Posted May 21, 2020)


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

Day Topic Reading
3/17 Course overview (online)
Introduction to operating systems (online) 2
3/19 (online)
3/24 Architectural support for OS (online) 6
3/26 Processes (online) 4, 5
3/30 Lab #1 (7:00pm ~, online)
3/31 CPU scheduling (online) 7, 8
4/2 (online)
4/7 Virtual memory (online) 13, 14, 15, 16
4/7 Lab #2 (7:00pm ~, online)
4/9 (online)
4/14 Paging (online) 18
4/16 Page tables (online) 20
4/21 TLB (online) 19
4/21 Lab #3 (7:00pm ~, online)
4/23 Memory mapping (online)
4/28 Swapping (online) 21, 22
4/30 National Holiday
5/5 National Holiday
5/7 Virtual Memory Implementations (online) 23
5/7 Lab #4 (7:00pm ~, online)
5/12 Threads (online) 26, 27
5/14 (online)
5/18 Supplementary Class (7:00pm ~ 9:00pm) (online)
5/19 Locks (online) 28
5/21 Semaphores (online) 31
5/25 Supplementary Class (7:00pm ~ 9:00pm) (online)
Condition variables (online) 30
5/26 Hard disk drives (HDDs) (online) 36, 37
5/28 Solid state drives (SSDs) (online) 44
6/1 Supplementary Class (7:00pm ~ 9:00pm) (online)
6/2 (online)
6/4 File systems (online) 39
6/4 Lab #5 (7:00pm ~, online)
6/9 File system implementation (online) 40
6/11 Fast file system (online) 41
6/16 File system consistency (online) 42
6/18 Final Exam

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


For project submission and automatic grading, we are running a dedicated server at http://sys.snu.ac.kr. If you want to access the sys server outside of the SNU campus, please send a mail to the instructor.

Project #6: Kernel threads

A kernel thread is a thread that always runs in the kernel space. Modern operating systems heavily use kernel threads to perform a certain task asynchronously. Currently, xv6 does not support kernel threads, so it’s your task in this project to extend xv6 so that it can support the creation and termination of kernel threads. Also, you will need to implement preemptive priority scheduling (for both kernel threads and user processes) and priority donation for sleeplock.

  • Project specification available here
  • Due date: 11:59PM, June 21.

Project #5: Memory sharing across fork()

When the fork() system call is invoked, xv6 simply copies all the memory used by the parent process to the child process. In this project, you will implement efficient memory sharing between the parent and child process. The goal of this project is to understand the paging hardware of RISC-V and how the operating system manages virtual-to-physical address mapping to improve memory efficiency.

  • Project specification available here
  • Due date: 11:59PM, May 24.

Project #4: Simplified Linux 2.4 scheduler

Currently, the CPU scheduler of xv6 uses a simple round-robin policy. The goal of this project is to understand the scheduling subsystem of xv6 by implementing a simplified version of the Linux 2.4 scheduler algorithm.

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

Project #3: Terminating processes

xv6 does not provide any way to terminate the currently running process. Hence, when a user runs a process that falls into an infinite loop, there is no way to terminate that process. The goal of this project is to implement a mechanism that can terminate one or more processes at once when the ctrl-c key is pressed in the shell prompt, using the notion of process group introduced in the previous project assignment.

  • Project specification available here
  • Due date: 11:59PM, April 12.

Project #2: System calls

System call is a mechanism that allows user applications to ask a variety of services to the operating system kernel. The goal of this project is to understand how those system calls are implemented in xv6-riscv.

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

Project #1: Hello world, xv6

xv6 is an instructional operating system developed by MIT based on Dennis Ritchie and Ken Thompson’s Unix version 6 (v6). In this course, we will use xv6-riscv that is the version recently ported to a modern RISC-V multiprocessor. The goal of this project is to make your Linux or macOS development environment ready and say hello to xv6.

  • Project specification available here
  • Due date: 11:59PM, March 25.

xv6 Resources

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 topics on general operating system concepts such as process management, memory management, I/O systems, and file systems, with the in-depth study on the latest Linux operating system. In addition, students are required to perform several hands-on projects with the xv6 instructional OS.
Textbook Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces, Arpaci-Dusseau Books, August 2018 (Version 1.00)
Reference 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, 4th Edition, Pearson, March 2014.
Prerequisites M1522.000800 System Programming
4190.308 Computer Architecture
Grading Exams: 60% (Midterm 25%, Final 35%)
Projects: 40% (4 ~ 5 project assignments planned)
* Grading policy is subject to change
Teaching Assistant Yeon-Gyu Jeong (81887821 at snu)
Seong-Yeop Jeong (seongyeop.jeong at snu)