General Information
Time: Tue/Thu (14:30 – 16:00)
Classroom: N1-112
Instructor: Youjip Won (ywon at kaist dot ac dot kr), https://oslab.kaist.ac.kr
Teaching Assistants: Dohyun Kim (ehgus421210 at kaist dot ac dot kr), SeungWon Yoo (swyoo98 at kaist dot ac dot kr), Sukjoon Oh, (sjoon at kaist dot ac dot kr)
TA Hour: Tue (16:00 – 17:00) / N1-310
Overview
The computing devices become essential part of modern human life. We store all traces of our life at the cloud storage. We use the smartphone to log every details of our lives and to communicate with the others. Automotives, HMD and even refrigerator are loaded with variety of application softwares. System software is a fundamental driving force that lets the application softwares to interact with all these computing devices.
In this class, the students will learn the role, the internal design and implementation of the system software. This class emphasizes the understanding the internals of the main components of the system softwares and the operating system such as “process”, “CPU scheduling”, “filesystem”, “locks”, “context switch”, “mode switch” and etc. The students will perform the projects associated with each of these topics.
This is PBL(Project Based Learning) class. The students will learn the course subjects by doing the projects designing and implementing the individual components of Unix OS. The students are required to perform a number of small projects that allow the student to get exposed to the internal details of the modern operating system. TA’s will help the student to perform the projects. For the project, we will use educational but fully functioning operating system called xv6. xv6 is based upon sv6 which is an earlier version of UNIX developed in early 70’s. xv6 offers approximately twenty system calls, essential commands and shell.
Course Materials
- main materials: lecture notes
- xv6: a simple, Unix-like teaching operating system (link)
- xv6 source code (source code commentary, source code repository)
- Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau, “Operating Systems: Three easy pieces”, 2019
- Maurice Bach, “The design of the Unix Operating System”, 1st edition, 1986
Resources
Tool is essential components of Operating System development. You should make yourself familiarized with them. These tools have been around for a few decades. Still, they are one of the most popular tools preferred by the system software developers.
- Online discussion: We will use slack for online real-time discussion. The slack channel address : Link
- Lecture Materials, Question and Answer: We will use piazza to question and answer. Also, we will make the announcement through piazza. (Link)
- Tools Video : ctags , cscope, gdb / Tools Slide : Link
- PC assembly language (pdf)
- Youtube Chnnel for Intro. to OS by Prof. Youjip Won (Link)
Week | Lecture 1 | Lecture 2 | Projects Out (and Due) |
1 | (8/30)Intro (Link) | (9/1) xv6 warm-up (Link) | Analyzing the Boot (~14:30, 9/15), Link |
2 | (9/6) OS Organization (Link) | (9/8) essential tools (Link) | |
3 | (9/13) Booting (Link) | (9/15) Booting (Link) | Page Table (~14:30, 9/29), Link |
4 | (9/20) Page Table and Address Translation (Link) | (9/22) Page Table and Address Translation (Link) | |
5 | (9/27) Trap, Interrupt (Link) |
(9/29) Trap, Interrupt (Link) |
The trap frame and stack frame (~14:30, 10/13), Link |
6 | (10/4) No Class | (10/6) System Call (Link) | |
7 | (10/11) System Call (Link) | (10/13) Lock (Link) | Sleep Lock (~14:30, 11/3), Link |
8 | Midterm |
||
9 | (10/25) CPU-Scheduling (Link) | (10/27) CPU-Scheduling | |
10 | (11/1) buffer-cache (Link) | (11/3) buffer-cache | Semaphore (~14:30, 11/17), Link |
11 | (11/8) logging (Link) | (11/10) logging | |
12 | (11/15) block allocation (Link) | (11/17) block allocation | user-level thread (~14:30, 12/1), Link |
13 | (11/22) inode (Link) | (11/24) inode | |
14 | (11/29) Call Stack (Link) | (12/1) No Class | optimize logging (~14:30, 12/17), Link |
15 | (12/6) Directory (Link) | (12/8) summary | |
16 | Final Exam |
Course Policy
- All homeworks can be done either in the pairs and by yourself. You have to find your partner by yourself and finalized the team by the second week of the semester. If you form a team by yourself, there are 30% extra credit for the homework. You may change your mind and decide
to do the homework by yourself. That is allowed. However, you cannot do the other way. - Plagiarism is not tolerated. If you are found to use part of other people’s code including the one that are publicly available on the web or on the internet, you will get ‘F’ regardless of the rest of your marks. If your code have the same design style with the others even though the code is not precisely identical, you will be questioned for the explanation and will get ‘F’ if there is any possibility that there is plagiarism.