Operating Systems - Binghamton University
Prof. Kartik Gopalan
[Syllabus]
[Course Material]
[Policies]
Course Description:
Advanced topics in operating systems. including process and threads, concurrency, deadlocks, race conditions, synchronization, scheduling, virtual memory, file systems, storage systems, virtualization, security, and kernel programming.
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.
Learning Objectives:
In this course, you will learn classical and advanced concepts in Operating Systems. Topics include:
- Processes, Threads, and Events
- Concurrency
- Scheduling
- Virtual Memory
- Storage and File Systems
- Virtualization
- Security
- Introduction to Linux Kernel Programming
We will cover a mix of background material and advanced topics. Programming assignments will help you get your hands dirty with Linux kernel coding.
Prerequisites:
- CS350 -- Undergraduate OS.
- 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.
Textbooks:
- There is no required textbook for this course.
- A good reference book is Modern Operating Systems, by Andrew Tanenbaum, Prentice Hall; 4th edition.
Other Recommended Books:
- 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.
[Syllabus]
[Course Material]
[Policies]
- Please clear your browser's cache and reload this page to see the latest listing of slides below.
- Course Information
- Introduction
- Processes
- Pre-recorded Lecture
- Not recorded: Definition of processes, process states. Please refer to the pre-recorded lecture link above.
- References: Chapter 2, Sections 10.2, and 10.3 of Tanenbaum's book
- Inter Process Communication
- Pre-recorded lecture
- Chapters 7 to 10, and 14, Advanced Programming in Unix Environment, by Richard Stevens.
- Unix man pages
- Threads
- Pre-recorded Lecture
- 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, Monitors and Condition Variables, Producer-Consumer Problem
- 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
- RAID
- Introduction to Virtual Machines
- Live Migration
- System Security
- Operating-System-Level Virtualization (Containers)
- I/O Models
- Segmentation
- Principles of System Design
[Syllabus]
[Course Materials]
[Policies]