EE415: Operating Systems and System Programming
for Electrical Engineering (Spring 2020)
Dept. of Electrical Engineering, KAIST
- Instructor: Youjip Won, ywon@kaist.ac.kr, https://oslab.kaist.ac.kr
- TA: Joontaek Oh (na94jun@kaist.ac.kr), Dohyun Kim (ehgus421210@kaist.ac.kr), Doyoun Kim (dy.kim@kaist.ac.kr)
- Lecture : Mon/Wed 13:00 – 14:30, N1-110
- TA Hour: Wed 16:00 ~ 17:00, N26-219
- Office Hour: Mon 14:30 – 15:30, N26-220
- course webpage: piazza.com/kaist.ac.kr/spring2020/ee415
- Youtube link EE415 : https://www.youtube.com/channel/UCg9wr-9UW3XrEddmZ73LIww
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.
Project Overview
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. Name your report file with the ‘student ID’_LastName_FirstName_Project#. (ex: 2016091111_Soonam_Kim_Project1.pdf)
Course will be lead via piazza (piazza.com/kaist.ac.kr/spring2020/ee415).
We will use this site as on-line discussion, Q/A and uploading all course materials. Please sign-up.
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
-
- Primary Textbook: “Operating Systems: Three Easy Pieces v1.0”, Remzi Arpaci-Duseau and Andrea C. Arpaci-Dusseau (http://ostep.org)
- Korean version: “운영체제: 아주쉬운세가지이야기”, 역자: 원유집외 2명 (홍릉과학출판사)
- Supplements:
- Beginning Linux Programming 4th Ed., Neil Matthew and Richard Stones, July, 2008
- Understanding the Linux Kernel, 3rd Ed.,Daniel Bovet and Marco Cesati, Nov, 2005
- Linux Kernel Development, 3rd Ed., Robert Love, June, 2010
- UNIX Internals: The New Frontiers, Uresh Vahalia, Oct. 1995
- Prerequisite: C/C++, Introduction to Data Structures
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
OSTEP ( Operating systems : Three Easy Pieces )
- Full version
- Introduction
- The Abstraction: The Process
- Interlude: Process API
- Mechanism: Limited Direct Execution
- Scheduling: Introduction
- Scheduling: The Multi-Level Feedback Queue
- Scheduling: Proportional Share
- Multiprocessor Scheduling (Advanced)
- The Abstraction: Address Space
- Memory API
- Address Translation
- Segmentation
- Free-Space Management
- Paging: Introduction
- Translation Lookaside Buffers
- Advanced Page Tables
- Swapping: Mechanisms
- Swapping: Policies
- Concurrency: An Introduction
- Interlude: Thread API
- Locks
- Lock-based Concurrent Data Structures
- Condition Variables
- Semaphore
- Common Concurrency Problems
- Event-based Concurrency (Advanced)
- I/O Devices
- Hard Disk Drives
- RAID
- File and Directories
- File System Implementation
- Locality and The Fast File System
- Crash Consistency: FSCK and Journaling
- Data Integrity and Protection
Pintos Project Slide Set
- Full version
- Introduction
- 명령어 실행 기능의 구현
- 시스템 콜 핸들러 구현
- 프로세스 계층구조 구현
- File Descriptor
- Denying Write to Executable
- Alarm System Call
- Priority Scheduling
- Priority Scheduling and Synchronization
- Priority Inversion Problem
- Multi-Level Feedback Queue Scheduler
- Virtual Memory
- Memory Mapped File
- Swapping
- Stack
- Buffer Cache
- Extensible File
- Subdirectory
EE415 Example Code Set
- Week1 : os_intro
- Week2 : cpu_virtual