Syllabus of CS 6233 CS6233 (Graduate) Operating Systems I Professor: Joel Wein Email: wein@poly.edu Professional Website: http://pdc-amd01.poly.edu/~wein Professor s Background/Orientation: He has been a Professor in the Department of Computer Science at NYU-Poly since 1991. His training is as a theoretician (He received his PhD from MIT in theoretical computer science) and he has spent a great deal of time thinking about models for scheduling and resource allocation in operating systems making these systems perform more efficiently. His research in this area has been supported by multiple grants from the National Science Foundation and led to numerous publications. In addition, over the last ten+ years he has had a close affiliation with Akamai Technologies, Akamai operates a 50,000+ node distributed network that serves close to 20% of the internet s content. He is currently a (parttime) Engineering Fellow there, and previously managed multiple engineering efforts related to security infrastructure, multimedia delivery and communications infrastructure. This combination of academic, theoretical and practical experience enables him to bring a somewhat unique perspective to the study of modern systems. Course description Course Overview: This is a graduate-level course that covers an introduction to operating systems. It is geared at graduate students who have not had a good undergraduate course that covers the principles of operating systems. This material is critical for understanding anything about what is really going on in your desktop, your laptop, or in your data center. While it covers material that often finds its place in undergraduate curricula, we will be supplementing that material with some more recent results from the systems literature, and at times we will
jump into the LINUX codebase to see what a real operating system looks like. In addition, there is the opportunity to customize the material based on overall student background entering the course. Finally, we will also focus on some very recent commercial trends in the Operating Systems space, with particular focus on virtualization and how it is transforming the way we think about computing and the way that every Fortune-1000 company manages its information technology infrastructure. Syllabus 1. Overview of Computer Systems 2. Overview of the Evolution of Modern Operating Systems. 3. Processes. 4. Threads 5. Concurrency: Mutual Exclusion and Synchronization- Touch point 6. Concurrency: Deadlock and Starvation 7. Memory Management: Basic 8. Memory Management: Advanced Topics 9. CPU Scheduling 10. I/O Management and Disk Scheduling- Touch point 11. File Systems 12. Advanced Topics in I/O and File Systems. 13. Virtualization: the revolution. What is it good for? How does it work? 14. Introduction to the Impact of Distributed Systems and Networks on Operating Systems. 15. Final Examination. Touch Points: After approximately week 5 and week 10 of the course each student will be required to schedule a brief one on one interaction with me of some sort to discuss how the course is going for you and make any necessary adjustments. Student/Instructor Interaction: I read email frequently at wein@poly.edu and will make every effort to respond in a timely fashion. I am also happy to interact with you over g-mail chat [joelmwein@gmail.com], Skype [joelmwein] or the phone. Outcomes [All measured by quizzes and homework assignments] Week 2: Understand the important elements of the history of Operating Systems and the basics of what an OS does. [Week 2]
Week 3: Week 4: Understand What a Process is Understand the States a Process Can Be In Understand What Information is Needed to Characterize a Process Understand How the OS Controls a Process Understand the issues that lead to the invention of threads Understand what threads are and how they deal with those issues. Understand Applications of Threads Understand User-Level v Kernel Threads Be able to read and understand code that uses threads. Weeks 5-6: Understand the Challenges Concurrency Poses in an Operating System Understand the definitions of key terms like race condition, critical section, mutual exclusion, etc. Understand Multiple Approaches to Enforcing Mutual Exclusion. Understand the Readers-Writers Problem Understand what is a Deadlock, a Deadlock Protection and Avoidance. Week 7-8: Week 9: Understand Requirements for Memory Management Understand Memory Partitioning (Fixed v. Dynamic) Understand Simple Paging and Segmentation Understand the Basic Idea of Virtual Memory Understand Hardware and Software Support for VM Understand a little bit about LINUX Memory Management Understand Basic Objectives for Scheduling Understand Basic Scheduling Algorithms Understand the LINUX Scheduler Week 10-11: Understand Basic Issues in I/O, Geometry of Disks, Basic Disk Scheduling Understand Basic Functionality Offered by File Systems Understand Different Methods of File Organization Understand Different Methods of Secondary Storage Management Understand a little bit about LINUX and Windows File Systems
Weeks 12-15 [Advanced Topics] Understand Motivation and Architecture of Advanced File Systems such as the Fast File System, and Log Structured file system. Understand motivation for RAID and different RAID architectures. Understand motivation for virtualization, its applications, and basic approaches to implementing it. Understand basic issues in distributed systems, including transparency and methods for achieving it. Textbook Operating Systems Internals and Design Principles by William Stallings. Publisher: Pearson/Prentice Hall, published April 2009. Prerequisites: Graduate Standing Expected Student Participation: Online lectures: Each lecture will consist of PowerPoint slides, many accompanied by audio on the material. You are expected to read the relevant material in the textbook, work through the slides, and listen to the audio explanations. Each set of slides will have several Stop and Thinks where you will stop and see if you can answer some questions on the material. Many of these Stop and Thinks will be homework exercises to be handed in, and some will be discussed in the online discussions. Team Assignments Weekly (or close to it) participation in discussion groups. Use of virtual lab, if included in the curriculum: The virtual lab will be used for several illustrative exercises. Exams Course Requirements: The basic course organization is as follows. Biweekly homework exercises including some of the Stop and Thinks.
Biweekly online quizzes during the semester. A final examination, taking in a traditional paper-and-pencil group setting. Your grade will approximately consist of : 25% final examination 30% online quizzes 35% exercises and 10% participation in discussions