(Posted Jun 2, 2020)
(Posted May 21, 2020)
(Posted May 21, 2020)
The following schedule is tentative and subject to change without notice.
|3/17||Course overview (online)|
|Introduction to operating systems (online)||2|
|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/7||Virtual memory (online)||13, 14, 15, 16|
|4/7||Lab #2 (7:00pm ~, online)|
|4/16||Page tables (online)||20|
|4/21||Lab #3 (7:00pm ~, online)|
|4/23||Memory mapping (online)|
|4/28||Swapping (online)||21, 22|
|5/7||Virtual Memory Implementations (online)||23|
|5/7||Lab #4 (7:00pm ~, online)|
|5/12||Threads (online)||26, 27|
|5/18||Supplementary Class (7:00pm ~ 9:00pm) (online)|
|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/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|
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.
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.
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.
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.
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.
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.
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.
|When||11:00 - 12:15 (Tuesday / Thursday)|
|Where||Lecture room #301-203, Engineering Building I|
Professor, Dept. of Computer Science and Engineering, SNU
|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)