Advanced Operating Systems (Fall 2022) | SNU Systems Software & Architecture Laboratory

News

   Please upload your term paper here by 11:55PM on December 18th. The term paper should be in ACM or IEEE conference format (two columns, max 6 pages, either in English or Korean). We will have a mini-conference at 11:00am on December 22nd where each team needs to make a 5min presentation (+ 5min Q&A).

(Posted Dec 7, 2022)

   We will have the final exam from 11:00am to 12:15pm on December 13th (Tuesday). The scope is the lecture slides and the papers [S1] and [MM1] in the reading list.

(Posted Dec 7, 2022)

   The lecture on Nov. 24th will be conducted using Zoom. Please refer to the Zoom link posted in eTL.

(Posted Nov 23, 2022)

Schedule

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

Day Topic Reading
9/1 Course Overview
9/6 Computer systems research I1
9/8
9/13 Introduction to operating systems H1
9/15 System calls
9/20 Storage
9/22
9/27
9/29
10/4 File systems FS1
10/6
10/11 Exam 1
10/13
10/18 LFS FS2
10/20
10/25 Flash memory
10/27
10/28 Project proposal due
11/1 F2FS FS3
11/3
11/8 Modern SSDs SSD1, SSD2, SSD3,
11/10
11/15 Exam 2
11/17 Processes and threads
11/22 Scheduler activations S1
11/24 CPU scheduling (Online)
11/29 Linux Virtual memory
12/1
12/6 Superpage support MM1
12/8
12/13 Final Exam
12/18 Term Paper Due
12/22 Mini-Conference

Credit: Some of the slides are borrowed from the authors’ presentations.

Projects

Assignment #2: Implementing a new system call

Implement a new system call named getcpuutil() whose system call number is 350. It returns an integer value n ranging from 0 to 10000 where n/100.0 represents the CPU utilization in percentage. On the first invocation, it will return the overall CPU utilization since the boot time. In the subsequence call, it will return the overall CPU utilization since the last call.

The information on the amount of time the CPU has spent is already available via the special file /proc/stat. Using that information, you can compute the CPU utilization as 1 - (total idle time / total elapsed time). For more information on the /proc/stat, please refer to the kernel document in ./Documentation/filesystems/proc.rst. You may find the relevant code in the ./fs/proc/stat.c file useful during the implementation of the getcpuutil() system call.

Also, you need to write a user-level program that prints the CPU utilization every second by calling the getcpuutil() system call. Then, run an application of you choice (e.g., Firefox, RocksDB, gzip, or other CPU-intensive application) along with the above program to obtain a graph that shows the variation in the CPU utilization. Please attach the graph in your report with the explanation on your getcpuutil() implementation.

  • Due: 11:55PM, October 16.
  • Submission: Upload your gzipped kernel patch file and your report file (in PDF) here.

How to prepare your compressed patch file

You can prepare a compressed patch file as follows. Assume that the vanilla 5.15.65 kernel is in the ./linux-5.15.65-vanilla directory, while your modified kernel is in the ./linux-5.15.65 directory.

$ (cd linux-5.15.65-vanilla; make distclean)
$ (cd linux-5.15.65; make distclean)
$ diff -uprN linux-5.15.65-vanilla linux-5.15.65 > 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 x86_64_defconfig configuration file.

For more details on generating a patch file, please refer to here.

Assignment #1: Compiling Linux Kernel

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, 5.15.65. You need to submit the screen shots of the booting message where you print your student ID and name, and also the result of the cat /proc/version command.

  • Due: 11:55PM, September 18.
  • Submission: Upload your PDF file here

How to setup your Linux kernel

  • Install the latest VirtualBox 6.1.38 from https://virtualbox.org on your x86_64 machine

  • Download the Ubuntu Desktop 20.04.1 LTS Desktop version here and install it in your VirtualBox.

  • Download the reference Linux kernel 5.15.65 as follows:

    $ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.65.tar.xz
    $ tar xvf linux-5.15.65.tar.xz
    
  • Install prerequisite packages for kernel compiling

$ sudo apt install build-essential ncurses-dev libssl-dev flex bison libelf-dev
  • Compile the Linux kernel 5.15.65 (use x86_64_defconfig to configure your kernel)
$ cd linux-5.15.65
$ make x86_64_defconfig
$ make all
$ sudo make modules_install
$ sudo make install

FYI: The tutorial video is available at https://youtube.com/c/openssds

How to submit your screen shots

  • Modify the Linux kernel to print your student ID and name in the middle of booting message and take a screen shot during booting. Please be creative when you print your name.

  • After the booting, please execute the following command and take a screen shot of its output.

    $ cat /proc/version
    
  • Paste those two screen shots into a word file or a powerpoint file, and upload the file using the Google Form.

Reference Platform

The following shows the reference platform used in this course.

Linux Kernel Resources

Mini Conference

  • When: 11:00am ~ 12:30pm, December 22, 2022.
  • Where: Lecture room #301-101, Engineering Building I
Time Title Team Name
11:00-11:10 Opening
11:10-11:20 Mobile Applications I/O Analysis with eBPF 졸업시켜조 최인혁
최순원
11:20-11:30 Reinforcement Learning based DVFS Governor with Integer-only Operations 기창민조 전창민
양기창
11:30-11:40 Analysis on Performance Overhead by Memory Duplication in VM-based Serverless Environment 구조 임근수
이현승
서성훈
11:40-11:50 Improving Network Throughput in IPsec Environment 컴퓨터구조 김민섭
김상윤
11:50-12:00 Break
12:00-12:10 Applying eBPF to Reduce Append-Checksum-Write Overhead 도와조 강일권
문채원
권형준
12:10-12:20 Performance Ebaluation of Linux File Systems with Blender 타조 김선준
정민효
12:20-12:30 RocksDB Compaction Optimization by Leveraging Small Zone ZNS 희성조 신희원
강성민
12:30-12:40 Inter-VM Interrupt for Event Signaling via Port Addressing Int’l Relations Jaume
Melker
Jihong
12:40-12:50 Extension and Generic Implementation of IPI Tracepoints 학부생이조 박재온
이정범

Reading List

Historical Perspective

Computer Systems Research

File Systems

SSDs

CPU Scheduling

Virtual Memory

Virtual Machines

OS Design

Course Information

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: 5%
Exams: 65%
Term project: 30%
* Grading policy is subject to change
Teaching Assistant TBD