CS550 (Section 02) - 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 12:30PM
Location: EB G-7 (Engineering Building - Main campus)
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 25 at class time in EB-G7
- Test 2 (23%) : Nov 11 at class time in EB-G7
- Test 3 (24%) : Dec 11 5:40PM-7:40PM in EB-G7
- 30% - Assignments
Instructor: Kartik Gopalan.
Office Hours: Mon and Wed 2:10-3:10pm in EB G-7 or EB Q-17
Teaching Assistant: Spoorti Doddamani
Office Hours: Mon and Fri 10-11.30am in EB G-7
Contact email firstname.lastname@example.org : Please use this address to reach both the intructor and the TA. One of us will respond to you.
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 (a.k.a. the OSTEP book)
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.
- Course Information
- Inter Process Communication
- Recorded Lecture
- Sample Questions
- Chapter 2 (Section 2.2), Modern Operating Systems, Andrew Tanenbaum
- Chapter 11: Advanced Programming in Unix Environment, by Richard Stevens
- Race Conditions and Deadlocks
- Semaphores and Condition Variables
- Events vs Threads
- Kernel Modules
- System Calls
- Virtual Memory Management
- TLB Coverage and Superpages
- "The UNIX time-sharing system", Dennis M. Ritchie and Ken Thompson, 1974
- Introduction to Virtual Machines
- Live Migration
- Operating-System-Level Virtualization (Containers)
- Various sources on the internet
- System Security
- I/O Models
- Recorded Lecture
- Chapter 6, Unix Network Programming, 3rd Edition, by Richard Stevens
- Principles of System Design
- Assignment 1, Due: September 13th
- Assignment 2, Due: October 11th
- Assignment 3, Due: November 15th
- Assignment 4,
- Due Nov 20: Learn, try out code, and submit code (if any) and README for Tasks A and B. Submit brief plan for how to solve Task C.
- Due Dec 6: Submit completed Task C code and README.
- Dec 1 to 6: Firm deadline to complete all demos.
Submit your assignment on mycourses.binghamton.edu 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.