Description
This is a graduate-level course that covers the concepts
and design principles of modern operating systems, both from theory
and practical aspects, spanning four major aspects: virtualization,
concurrency, persistence, and distributed systems. Fundamental
concepts such as processes, synchronization, scheduling and memory
management will be presented.
Course website
The materials will be published on our course website:
https://tddg.github.io/cs571-spring21/.
Prerequisites
Grade of C or better in CS310 and CS 367 and CS 465. All
students *MUST* be comfortable with programming in the C language.
This is a strong requirement.
Teaching assistant (TA)
Michael Crawshaw
- Email
- mcrawsha@masonlive.gmu.edu
- Office hours
- TBD
Textbooks
The only required textbook for this
class is OSTEP, which is an excellent resource for learning OS and is
completely free. The material of this class is based on OSTEP and is
publicly available at:
Other textbooks but not required:
- Operating Systems Principles and Practice, by Thomas
Anderson and Michael Dahlin, Second Edition. ISBN:
978-0-9856735-2-9, Recursive Books, Ltd.
- Operating System Concepts, by Silberschatz, Galvin and Gagne (9th Edition, John Wiley & Sons 2012, ISBN 978-1-118-06333-0).
Course outcomes
Upon completion of this course, the students should be able to:
- Demonstrate knowledge about the role and purpose of the operating systems
- Demonstrate knowledge about different design
philosophies of operating systems (LDE, interrupts, cooperative
scheduling, non-cooperative scheduling) and the involved
trade-offs.
- Show an understanding of the need for concurrent
operation of multiple tasks (processes/threads) and an ability to
solve basic process synchronization problems that arise from
concurrent operation settings.
- Be able to explain the main performance
evaluation criteria for computer systems and how the operating system
design can have an impact on these.
- Demonstrate the knowledge about process scheduling,
basic memory management, storage and I/O systems (HDDs), file system
management techniques, and their impact on the overall
performance.
- Demonstrate the basic knowledge about distributed
systems including RPC, MapReduce, Network File Systems (NFS), and Google
File System.
- Be able to implement a suite of basic algorithms
proposed for the main OS and/or system programs using both C (e.g.,
green threads, shell) and Go (e.g., MapReduce).
Topics
- Introduction
- CPU scheduling
- Memory management and virtual memory
- Concurrency
- Synchronization
- I/O and storage systems
- Distributed systems
- File systems
Projects
There will be several programming projects You need to
be comfortable with programming in C to complete these assignments.
You don't have to be familiar with Go. You will learn how to use Go
as we go. Details concerning the projects will be presented in
class. All students should have accounts on the VSE Unix cluster (aka zeus.vse.gmu.edu).
Instructions and related links can be found here.
Your projects written in C will be tested and graded on the zeus server. Your projects written
in Go will be tested and graded on zeus or a cloud server (that has the Go runtime installed).
Grading policy
Your grade will be calcuated as follows:
- 50% projects
- 10% homeworks
- 20% midterm exam
- 30% final exam
The final grade is computed according to the following rules:
- A+: >= 97%; A: [92%, 97%); A-: [87%, 92%)
- B+: [82%, 87%); B: [77%, 82%); B-: [72%, 77%)
- C+: [66%, 72%); C: [63%, 66%); C-: [60%, 63%)
- D+: [56%, 60%); D:[53%, 56%); D-: [50%, 53%)
- F: < 50%
Note: No credit if your project does not compile. Late
submissions of homeworks and programming assignments
will be penalized at 15% each day, and will not be
accepted after 3 days of the due date. The students are
responsible for keeping back-ups of their work while
they are working on an assignment.
The final exam will be cumulative;
that is, it will include all topics discussed during the
term. No early exams will be given.
No early exams will be given and makeup exams are strongly discouraged.
If you must miss an
exam, you should provide an official/verifiable proof of
why you are missing the exam BEFORE the exam. Once it is
validated, a makeup exam may be arranged.
Academic integrity
All students must adhere to the
GMU Honor Code
and the
Computer Science
Department's Honor Code
Policies. The students are supposed to work individually on
the homeworks, assignments projects, unless told otherwise.
We reserve the right to use
MOSS
to detect plagiarism. Violation of the Honor
Code will result in an F.
Accommodations for disabilities
If you have a documented learning disability or other condition that may
affect academic performance, you should:
- make sure this documentation is
on file with Office for Disability Services (SUB I, Rm. 4205; 993-2474;
http://ods.gmu.edu) to determine the accommodations you need;
- talk
with the instructor within the first week of the semester
to discuss any accommodation needs.