• Instructor: Youjip Won, ywon@kaist.ac.kr
  • TA: Dohyun Kim (ehgus421210@kaist.ac.kr), Minsu Jang (nobleminsu@gmail.com), SeungWon Yoo (swyoo98@kaist.ac.kr)
  • Lecture : Mon 13:00 – 14:30, N1-112, Wed 13:00 – 14:30, N1-112
  • TA Hour: TBA
  • Office Hour: TBA
  • course webpage: https://piazza.com/class/kywaer13kxsbf?cid=1

Syllabus

Class Overview
This course will deal with the design and implementation of the Operating System. Operating System is one of the most complex softwares. It is a software that manages hardware. It hides out the details of the hardware to the application. It allows the application to use the underlying hardware as if the hardware is exclusively allocated to it and sometimes it allows the multiple applications to share a certain object or hardware resource without any conflict. It also protects the system against unexpected system failure or against malicious attacks. Operating System is complex by nature. That is primarily because despite that it is a software, it needs to manage entirely different breed, the hardware. Operating System consists of several key concepts: process management, memory management, file system management and I/O subsystem. In this class, we will examine the details of each topic. Student will get exposed to implementation aspect of individual concepts. This course will be programming intensive.

This course will consists of lecture on Monday and lab on Wednesday. On Monday, we will have lectures that deal with the contents in the textbook. On Wednesday, we will have lab sessions. On Wednesday’s class, students are expected to preview the materials provided (slide sets and video recordings).

Project Overview and Handout
We will use PintOS in the course project. There will be four projects in total. Two before mid term and two after mid term. Please do start early. Pintos is educational OS developed by the people in Stanford U. It is a good platform to implement the basic concepts of the operating systems. https://web.stanford.edu/class/cs140/projects/pintos/pintos.html. For the project, we need to submit the report and the link of your github (or bitbucket) to TA. The TA’s will clone your code and will run it if it runs well. For the report, please follow the guideline of 2.2.5 https://oslab.kaist.ac.kr/ee415-spring-2022-proj1/
Course will be lead via piazza (https://piazza.com/class/kywaer13kxsbf?cid=1).
We will use this site as on-line discussion, Q/A and uploading all course materials. Please sign-up.

  • Project 1 (2/28 ~ 3/23) : Threads (Handout)
  • Project 2 (3/23 ~ 4/13) : User Program (Handout)
  • Project 3 (4/13 ~ 5/11) : Virtual Memory (Handout)
  • Project 4 (5/11 ~ 6/8) : File System (Handout)
  • Supplementary Material : Pintos Introduction

Quizzes

Exams

Policies

  • There will be two exams (mid-term and final). Both of them are equally weighted.
  • There will be four course projects. The course projects can be done in group of maximum two. Communication skill is one of the most important skills for engineers. In practice, people work as a team with few exceptions. Sometimes, you need to listen to the others and sometimes you have to convince the others. When you turn in the code, you turn in the code individually and separately. The codes between the partners can be precisely identical or can be slightly different. Either way, you are required to turn in your own code.
  • Please do not post your code for the course project publicly. That will deprive other people from the opportunity to work on his own.

Textbooks and resources

Grading
Project & Homework(70%)
– each project will be graded with 100 scale. (four projects sums up to 400 mark).
– each homework will be graded with 20 point scale. ( The total number of homeworks are not determined yet. If there are four homeworks, the total mark for homework will be 80.)
Total mark for project and homework for the above example will be 480. That will be scaled to 70% of the entire grade.
MidTerm (15%)
Final (15%)

Schedule

• Week 1 lecture(2/28): Overview (Slide), Introduction to Operating Systems (Slidevideo link), The Process (Slidevideo link), Process API (Slidevideo link)
lab(3/2): Installing and running Pintos (Slidevideo link), Alarm Clock (Slidevideo link)
(Project 1 out: Thread, due on 3/23, 11:59 PM)
• Week 2 lecture(3/7): Limited Direct Execution (Slide – video link1, video link2, video link3, video link4, video link5), Scheduling: Introduction (Slide – video link) , MLFQ (Slidevideo link)
lab(3/9): No-Labs
• Week 3 lecture(3/14): Scheduling: Proportion Share (Slidevideo link1, video link2, video link3), Multiprocessor Scheduling (Slide – video link), Address Spaces (Slide – video link)
lab(3/16): Priority scheduling (Slide – video link), Advanced scheduler (Slide1video link1, Slide2video link2)
• Week 4 lecture(3/21): Memory API (Slide video link), Address Translation (Slide video link), Segmentation (Slide video link)
lab(3/23): Argument passing (Slidevideo link) (Project2 out : User program, due on 4/13, 11:59 PM)
• Week 5 lecture(3/28): Free-Space Management (Slidevideo link), Paging: Introduction (Slide – video link)
lab(3/30): System call (Slidevideo link1)
• Week 6 lecture(4/4): Paging: Faster Translations (Slidevideo link), Smaller Tables (Slidevideo link), Mechanisms (Slidevideo link)
lab(4/6): Denying write to executable files (Slidevideo link)
• Week 7 lecture(4/11): Swapping: Policies (Slidevideo link), Concurrency (Slidevideo link), Thread API (Slide – video link)
lab(4/13): Paging (Slide1video link1, Slide2video link2) (Project 3 out: Virtual Memory, due on 5/11, 11:59 PM)
• Week 8 Midterm (4/18) 13:00~16:00 (No lecture during midterm week)
• Week 9 lecture(4/25): Locks (Slidevideo link), Lock-based Concurrent Data Structures (Slidevideo link), Condition Variables (Slidevideo link)
lab(4/27): Stack Growth (Slide – video link)
• Week 10 lecture(5/2): Semaphores (Slidevideo link), Common Concurrency Problems (Slidevideo link)
lab(5/4): Memory Mapped Files (Slide – video link)
• Week 11 lecture(5/9):  I/O Devices (Slide – video link), Hard Disk Drives (Slidevideo link), RAIDs (Slidevideo link)
lab(5/11): Indexed and Extensible Files (Slide1video link1, Slide 2video link2, Slide background –  video background) (Project 4 out: Filesystem, due on 6/8, 11:59 PM)
• Week 12 lecture(5/16): File and Directories (Slidevideo link), File System Implementation (Slide – video link)
lab(5/18): Subdirectories (Slide1 – video link1, Slide 2video link2, Slide backgroundvideo background)
• Week 13 lecture(5/23): Locality and The Fast File System (Slidevideo link), Crash Consistency (Slidevideo link)
lab(5/25): Buffer cache (Slide1 – video link1, video link2, Slide backgroundvideo background)
• Week 14 lecture(5/30): Log-structured File Systems (Slidevideo link), Flash-based SSDs (Slidevideo link)
Lab (6/1): No-Labs
• Week 15 lecture(6/6): No-lectures
lab(6/8): All questions answered, course summary
• Week 16 Final Exam (6/13) 13:00~16:00 (No lecture during Final week)