(Posted Jun 14, 2023)
(Posted Jun 14, 2023)
The following schedule is tentative and subject to change without notice.
Day | Topic | Reading |
---|---|---|
3/2 | Course Overview | |
3/7 | Computer systems research | I1 |
3/9 | Introduction to operating systems | H1 |
3/14 | System calls | |
3/16 | Storage | |
3/21 | ||
3/23 | File systems | FS1 |
3/28 | ||
3/30 | ||
4/4 | LFS | FS2 |
4/6 | ||
4/11 | Flash memory | |
4/13 | SSDs | SSD1, SSD2 |
4/18 | Invited Talk: NVMeVirt (by Jaehoon Shim @ SNU CSL) | SSD4 |
4/20 | Midterm Exam | |
4/25 | New SSDs | SSD3 |
4/27 | F2FS | FS3 |
4/30 | Project Proposal Due | |
5/2 | Processes and threads | |
5/4 | Scheduler Activations | S1 |
5/9 | ||
5/11 | CPU scheduling | |
5/16 | Cancelled | |
5/18 | Cancelled | |
5/23 | Virtual memory | |
5/25 | ||
5/30 | ||
5/31 | Superpages (Make-up Class @ 9:30am) | MM1 |
6/1 | ARC | MM2 |
6/6 | National holiday | |
6/7 | Linux virtual memory (Make-up Class @ 9:30am) | |
6/8 | Virtual machines | |
6/13 | Final Exam | |
6/16 | Mini-Conference (7:00pm ~ 8:30pm @ 301-203) | |
6/18 | Term Paper Due |
Credit: Some of the slides are borrowed from the authors’ presentations.
Time | Title | Team | Name |
---|---|---|---|
7:00-7:10 | Opening | ||
7:10-7:20 | Comparative Performance Evaluation of Neo4j and AgensGraph DBMSs under Various Storage Conditions | DH_HY조 | 노효영 김대현 |
7:20-7:30 | Analyzing Performance Characteristics of PostgreSQL and MariaDB on NVMeVirt | 길조 | 한주희 최유진 |
7:30-7:40 | Accelerating Graph-based Approximate Nearest Neighbor Search through Computational SSD | GG조 | 심봉근 이하은 |
7:40-7:50 | ROSE: Realistic Operational SSD Emulator | 닮았조 | 김정훈 홍윤재 |
7:50-8:00 | Break | ||
8:00-8:10 | Implementing Controller Memory Buffer (CMB) | 셋이버티조 | 박큰산 오승택 최재원 |
8:10-8:20 | Implementing SKHynix Gold P31 M.2 NVMe on NVMeVirt | 많이느리조 | 김현수 심민규 |
8:20-8:30 | NVMeVirt on M1/M2 | 사과먹조 | 김지환 이호용 |
Implement a new system call named getmemutil()
whose system call number is 491. It returns an integer value n
ranging from 0 to 10000 where n/100.0
represents the (physical) memory utilization in percentage.
The current memory usage information is already available via the special file /proc/meminfo
. Using that information, you can compute the memory utilization as 1 - (the total amount of free memory / the total amount of memory)
. For more information on the /proc/meminfo
, please refer to the kernel document in ./Documentation/filesystems/proc.rst
. You may find the relevant code in the ./fs/proc/meminfo.c
file useful during the implementation of the getmemutil()
system call.
Also, you need to write a user-level program that prints the memory utilization every second by calling the getcmemutil()
system call. Then, run an application of your choice (e.g., Firefox, Redis, RocksDB, or other memory-intensive application) along with the above program to obtain a graph that shows the variation in the memory utilization. Please attach the graph in your report with the explanation on your getmemutil()
implementation.
You can prepare a compressed patch file as follows. Assume that the vanilla 6.1.14 kernel is in the ./linux-6.1.14-vanilla
directory, while your modified kernel is in the ./linux-6.1.14
directory.
$ (cd linux-6.1.14-vanilla; make distclean)
$ (cd linux-6.1.14; make distclean)
$ diff -uprN linux-6.1.14-vanilla linux-6.1.14 > studentID.patch
$ gzip studentID.patch
Please double-check your patch file whether it contains some unnecessary materials. Also, please make sure that you should build your kernel with the default Ubuntu kernel configuration.
For more details on generating a patch file, please refer to here.
Setup your Ubuntu environment in your own machine or in the Virtual Machine, and replace its kernel with the latest longterm support version of the Linux kernel, 6.1.14. You need to submit the screenshots of the booting message where you print your student ID and name, and also the result of the cat /proc/version
command.
Install the latest VirtualBox 7.0.6 from https://virtualbox.org on your x86_64
machine
Download the Ubuntu Desktop 22.04 LTS Desktop version here and install it in your VirtualBox.
Download the reference Linux kernel 6.1.14 as follows:
$ wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.14.tar.xz
$ tar xvf linux-6.1.14.tar.xz
Install prerequisite packages for kernel compiling
$ sudo apt install build-essential ncurses-dev libssl-dev flex bison libelf-dev zstd dwarves
Configure the new kernel using Ubuntu kernel’s config
file
$ cd linux-6.1.14
$ cp /boot/config-$(uname -r) .config
$ scripts/config --disable SYSTEM_TRUSTED_KEYS
$ scripts/config --disable SYSTEM_REVOCATION_KEYS
Compile the Linux kernel
$ make all -j n (replace n with the number of cores)
$ sudo make INSTALL_MOD_STRIP=1 modules_install
$ sudo make install
FYI: The tutorial video is available at https://youtube.com/c/openssds
Modify the Linux kernel to print your student ID and name in the middle of booting message and take a screenshot during booting. Please be creative when you print your name.
After the booting, please execute the following command and take a screenshot of its output.
$ cat /proc/version
Paste those two screenshots into a word file or a powerpoint file, and upload the file using the Google Form.
The following shows the reference platform used in this course.
(I1) ⭐️ Butler W. Lampson, “Hints for Computer System Design,” SOSP, 1983. (The SIGOPS Hall of Fame Award ‘05)
(I2) Roy Levin and David D. Redell, “An Evaluation of the Ninth SOSP Submissions or How (and How Not) to Write a Good Systems Paper,” ACM Operating Systems Review, 1983.
(I3) Aaron B. Brown, Anupam Chanda, Rik Farrow, Alexandra Fedorova, Petros Maniatis, and Michael L. Scott, “The Many Faces of Systems Research - And How to Evaluate Them,” HotOS, 2005.
(FS1) ⭐️ Marshall K. McKusick, William N. Joy, and Samuel J. Leffler, “A Fast File System for UNIX,” ACM TOCS, 1984. (The SIGOPS Hall of Fame Award ‘15)
(FS2) ⭐️ Mendel Rosenblum and John K. Ousterhout, “The Design and Implementation of a Log-Structured File System,” SOSP, 1991. (The SIGOPS Hall of Fame Award ‘12)
(FS3) ⭐️ Changman Lee, Dongho Sim, Joo-Young Hwang, and Sangyeun Cho, “F2FS: A New File System for Flash Storage,” FAST, 2015.
(SSD1) ⭐️ Jeong-Uk Kang, Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho, “The Multi-streamed Solid-State Drive,” HotStorage, 2014.
(SSD2) ⭐️ Matias Bjorling, Abutalib Aghayev, Hans Holmberg, Aravind Ramesh, Damien Le Moal, Gregory R. Ganger and George Amvrosiadis, “ZNS: Avoiding the Block Interface Tax for Flash-based SSDs,” Usenix ATC, 2021.
(SSD3) ⭐️ Jaeyoung Do, Sudipta Sengupta, and Steaven Swanson, “Programmable Solid-State Storage in Future Cloud Datacenters,” CACM, 2021.
(SSD4) ⭐️ Sang-Hoon Kim, Jaehoon Shim, Euidong Lee, Seongyeop Jeong, Ilkueon Kang, and Jin-Soo Kim, “NVMeVirt: A Versatile Software-defined Virtual NVMe Device,” FAST, 2023.
(S1) ⭐️ Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy, “Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism,” TOCS, 1992.
(S2) ⭐️ Carl A. Waldspurger and William E. Weihl, “Lottery Scheduling: Flexible Proportional-Share Resource Management,” OSDI, 1994.
(S3) Carl A. Waldspurger and William E. Weihl, “Stride Scheduling: Deterministic Proportional-Share Resource Management,” Technical Memorandum MIT/LCS/TM-528, MIT Laboratory for Computer Science, 1995.
(S4) Jean-Pierre Lozi, Baptiste Lepers, Justin Funston, Fabien Gaud, Vivien Quema, and Alexandra Fedorova, “The Linux Scheduler: a Decade of Wasted Cores,” EuroSys, 2016.
(MM1) ⭐️ Juan Navarro, Sitaram Iyer, Peter Druschel, and Alan Cox, “Practical, Transparent Operating System Support for Superpages,” OSDI, 2002.
(MM2) ⭐️ Nimrod Megiddo and Dharmendra S. Modha, “ARC: A Self-Tuning, Low Overhead Replacement Cache,” FAST, 2003. (USENIX Test of Time Award ‘14)
(VM1) ⭐️ Edouard Bugnion, Scott Devine, and Mendel Rosenblum, “Disco: Running Commodity Operating Systems on Scalable Multiprocessors,” SOSP, 1997. (Best Paper Award, The SIGOPS Hall of Fame Award ‘08)
(VM2) Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, and Andrew Warfield, “Xen and the Art of Virtualization,” SOSP, 2003.
(VM3) Carl A. Waldspurger, “Memory Resource Management in VMware ESX Server,” OSDI, 2002. (Best Paper Award, The SIGOPS Hall of Fame Award ‘15)
(VM4) Christopher Clark, Keir Fraser, Steven Hand, Jacob Corm Hansen, Eric Jul, Christian Limpach, Ian Pratt, and Andrew Warfield, “Live Migration of Virtual Machines,” NSDI, 2005. (USENIX Test of Time Award ‘05)
(OS1) The Tanenbaum-Torvalds Debate, 1992.
(OS2) Jochen Liedtke, “On μ-Kernel Construction,” SOSP, 1995. (The SIGOPS Hall of Fame Award ‘15)
(OS3) M. Frans Kaashoek, Dawson R. Engler, Gregory R. Ganger, Hector M. Briceno, Russell Hunt, David Mazieres, Thomas Pinckney, Robert Grimm, John Jannotti, and Kenneth Mackenzie, “Application Performance and Flexibility on Exokernel Systems,” SOSP, 1997.
(OS4) Andrew Baumann, Paul Barham, Pierre-Evariste Dagand, Tim Harris, Rebecca Isaacs, Simon Peter, Timothy Roscoe, Adrian Schupbach, and Akhilesh Singhania, “The Multikernel: A New OS Architecture for Scalable Multicore Systems,” SOSP, 2009.
(OS5) Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand, and Jon Crowcroft, “Unikernels: Library Operating Systems for the Cloud,” ASPLOS, 2013.
(OS6) Simon Peter, Jialin Li, Irene Zhang, Dan R. K. Ports, Doug Woos, Arvind Krishnamurthy, and Thomas Anderson, “Arrakis: The Operating System is the Control Plane,” OSDI, 2014. (Best Paper Award)
When | 11:00 - 12:15 (Tuesday / Thursday) |
Where | Lecture room #301-101 |
Instructor | Jin-Soo Kim Professor, Dept. of Computer Science and Engineering, SNU |
Language | English |
Course Description | This course covers advanced operating system concepts as well as a broad spectrum of research topics in computer systems. Quality research papers from SOSP, OSDI, ASPLOS, USENIX ATC, FAST, NSDI, EuroSys, etc. will be used as class materials. Students must be actively involved in reading, presenting, and discussing selected papers to understand the recent trends in operating systems and computer systems research. In addition, students are required to write up a term paper by the end of the semester as a result of their own study on a particular research topic. |
References | • Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems: Three Easy Pieces, Apraci-Dusseau Books, March 2015 (Version 1.00). • 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 Education, Inc., 2015. |
Prerequisites | • M1522.000800 Undergraduate Systems Programming or equivalent • 4190.307 Undergraduate Operating Systems or equivalent • 4190.308 Undergraduate Computer Architecture or equivalent |
Grading | Assignments: 10% Exams: 60% Term project: 30% * Grading policy is subject to change |
Teaching Assistant | TBD |