Operating Systems
Instructor: Bibhas Ghoshal
Class web page: https://profile.iiita.ac.in/bibhas.ghoshal/teaching_os.html
Administrative
| Discussion forum | Google Classroom — Announcements and Submission of assignments |
| Textbook |
- Operating Systems: Three Easy Pieces, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (University of Wisconsin-Madison) [Website]
- Operating System Concepts, 10th Edition, by Silberschatz, Galvin, and Gagne [Slides]
- Xv6: A simple, Unix-like Teaching Operating System, by Russ Cox, Frans Kaashoek, Robert Morris [PDF link of the book]
- Modern Operating Systems, Pearson, 4th Edition, by Andrew S. Tanenbaum and Herbert Bros [PDF link of the book]
|
| Slides | Lecture slides are the primary reference; Almost everything discussed in class will be on the slides; The PDF slides link out to further reading. |
| Slides | Please download slides from the class web page. |
Course goals
- Cover important systems concepts in general — Abstraction, Resource management,Isolation, Caching, Concurrency, Memory management, I/O, protection.
- Introduce Operating System Concepts — Kernel, Booting, Scheduling, Synchronization, Memory management, Device and I/O, File System. It is very diifficult to use a computer without interacting with the OS, and understanding it makes you a more effective programmer.
- Teach you to deal with larger software systems
Course topics
- Threads & Processes
- Virtual Memory
- Scheduling
- Inter-process Communication
- Concurrency & Synchronization
- I/O
- Disks, File Systems, Network File Systems
- Protection & Security
- Virtual Machines
Note: Lectures will often take xv6 (a lightweight Unix variant) as an example. [xv6 Weblink]
Things to Note :
- Lectures: Chalkboard and slide presentations, supplemented by tutorials. Bring a laptop with Linux (WSL on Windows is fine) or Mac, with xv6 installed.
- Lab: Xv6 based assignments covering OS topics discussed in lecture classes
- Attendance: < 75% will not be allowed to appear in End-Semester Exam.
- Surprise quiz: Will be announced during lecture class. Another reason for attending all lectures
- Weekly evaluations of tutorial and lab assignments (done by TAs) — Lab assignments to be submitted on Google Classroom.
- Mid-semester and End-semester Exam: will be announced by the Academic Section.
- Final project evaluation: will be announced in class and on Google Classroom.
Programming assignments
- Implement parts of the xv6 operating system — built for x86 hardware, run on a hardware emulator.
- Homeworks due every Friday.
- Implementation projects on Threads, User processes, IPC, Synchronization, OS security, Virtual memory, File system : Will be announced post-mid-sem and evaluated before end-sem .
- Lab 1 distributed at the end of this week.
- Projects to done in groups of up to 6 people — Select your group members as early as possible.
Grading
Midsem = 25 marks | End sem = 40 marks | Internal Assessment = 35 marks
| Internal assessment component | Marks |
| i. Two Quizzes (pre-mid sem and post-midsem; can be surprise quizzes) | 10 |
| ii. Lab assignments | 10 |
| iii. Project — 50% passing test cases, 50% design & style / Lab Test | 10 |
| iv. Attendance | 5 |
| Total | 35 |
No incompletes before mid-sem or end-sem — Talk to the TAs/instructor as soon as possible if you run into real problems. Please turn in working code: large software systems aren't just about producing working code, they're about producing code other people can understand. That is why we have group projects.
Weekly schedule
| Week |
Lecture |
Tutorial |
Lab |
Resources |
Announcements and submission of assignments happen on Google Classroom. Slides, lecture videos, tutorials, lab assignments, and handouts are posted on the class web page.