CS550 - Operating Systems
Prof. Kartik Gopalan
This course will cover classical and advanced concepts in Operating Systems. Topics include:
We will cover a mix of background material and advanced topics. Assignments and course projects will help you get your hands dirty with Linux kernel.
- Processes, Threads, and Events
- Virtual Memory
- Storage and File Systems
- Introduction to Linux Kernel Programming
Time: Mon and Wed 4:40pm to 6:05pm
Location: AM 189
Credit hours and course expectations:
This course is a 3-credit course, which means that students are expected to do at least 9 to 9.5 hours of course-related work or activity each week during the semester. This includes scheduled class lecture/discussion meeting times as well as time spent completing assigned readings, studying for tests and examinations, participating in lab sessions, preparing written assignments, and other course-related tasks.
- CS350 -- Undergraduate OS. You must be familiar with the fundamentals concepts in Operating Systems as covered in CS350.
- You must be proficient with C programming.
- Proficiency in the use of a debugger (such as gdb) is expected.
- You must be comfortable working and programming in the Linux environment.
- 70% - Tests
- Test 1 (23%) : Sep 24 at class time in ENGB-G7 and Q22.
- Test 2 (23%) : Nov 5 at class time in ENGB-G7 and Q22.
- Test 3 (24%) : Dec 14 12:50PM to 2:15PM in ENGB-G7 and Q22.
- 30% - Assignments
Instructor: Kartik Gopalan.
Teaching Assistants: Ozgur Kilic, Akshay Borse, Yukun Liu
Contact email email@example.com -- This email address reaches all the TAs and the intructors, one of whom will respond to you.
Office Hours: Mon and Wed 6:05-7pm after Class, in AM189. Or by appointment within one to two days. Please email firstname.lastname@example.org for appointments.
The primary textbook will be Modern Operating Systems, by Andrew Tanenbaum, Prentice Hall; 4th edition. We will also cover various research papers that will be available online.
Other Recommended Material:
- Kernighan, Ritchie, The C Programming Language
- Linux Device Drivers, 3rd Edition by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. (This book is also available online at http://lwn.net/Kernel/LDD3/).
- Unix Network programming, Vol 1: The Socket Networking API (3rd edition), by W. Richard Stevens, Bill Fenner, Andrew M. Rudoff, Addison-Wesley Professional.
- Operating Systems: Three Easy Pieces
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
- Silberschatz, Galvin, Gagne, Operating System Concepts; 7th or 8th edition
- Virtual Machines: Versatile Platforms for Systems and Processes, By James E. Smith Jim, Jr. Smith, Ravi Nair.
Please clear your browser's cache and reload this page to see the latest listing of slides below.
- Recorded Lecture
- References: Chapter 2, Sections 10.2, and 10.3 of Tanenbaum's book
- Inter Process Communication
- Recorded lecture
- Chapters 7 to 10, and 14, Advanced Programming in Unix Environment, by Richard Stevens.
- Unix man pages
- Recorded Lecture
- Chapter 2 (Section 2.2), Modern Operating Systems, Andrew Tanenbaum
- Chapter 11: Advanced Programming in Unix Environment, by Richard Stevens
- Kernel Modules
- System Calls
- Concurrency - Race Conditions and Deadlocks
- Concurrency - Semaphores, Condition Variables, and Producer Consumer
- Events vs Threads
- Virtual Memory Management
- TLB Coverage and Superpages
- "The UNIX time-sharing system", Dennis M. Ritchie and Ken Thompson, 1974
- Introduction to Virtual Machines
- Operating-System-Level Virtualization (Containers)
- Various sources on the internet
- System Security
- Live Migration of Virtual Machines
Submit your assignment on the blackboard as one zipped compressed file.
Include all your code, a README file, and a Makefile.
If you do not know how to do this, please contact us for help.
DO NOT submit each file individually.
DO NOT include the entire linux kernel (for kernel programming assignments) -- include only the files you change.
DO NOT include object files (.o) or any executable files.