This course covers the basic principles of operating systems. Major
concepts to be discussed include processes and threads,
concurrency and synchronization,
CPU scheduling, memory management, storage,
file systems, and security.
(Grade of C or better in CS 310) and (grade of C or better in CS 367 or ECE 445). The students should be fluent in C programming language in order to complete the course work, which includes substantial programming projects.
Required textbook:
1. Operating Systems Principles and Practice, by Thomas Anderson and Michael Dahlin, Second Edition.
ISBN: 978-0-9856735-2-9, Recursive Books.
Recommended textbooks:
1. Operating
Systems: Three Easy Pieces, by
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau (free online)
2. Operating System Concepts, by Silberschatz,
Galvin and Gagne, 10th Edition, John Wiley & Sons 2018, ISBN: 978-1-118-06333-0.
Upon completion of this course, the students should be able to:
Demonstrate knowledge of operating systems features, evolution, and
design
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
Demonstrate knowledge of process scheduling, basic memory management,
storage systems, and file system management
Be able to implement basic algorithms for OS services such as memory
management and process scheduling
Demonstrate knowledge of security threats to an operating system from
both processes and networked sources and show an understanding of
protection techniques
Demonstrate knowledge of how system calls work along with the mechanisms for interrupt handling
There will be several programming projects in using the Operating
System OS/161. All projects will be programmed using the C language.
Submission of the projects and homework is via the
Blackboard.
Projects are very time-consuming, and most likely are significantly
more time-consuming than your projects in other
classes. You will need to understand the OS kernel code, design new
OS features, and implement and test them!
Each project will come with the specific instructions, as well as
late penalty.
There is no late token. Always start your project as early as you can!
Remember to frequently backup your work.
If your code does not compile, you will get no credit.
We reserve the right to use MOSS and other software to detect plagiarism.
35% Final exam (The final exam will be cumulative; that is, it will include all topics discussed during the term.)
No credit if your project does not compile. Late homeworks/projects
will have a penalty (specified in each assignment) and will not be accepted
3 days after the due date. There is no make-up for missed exams.
The students are responsible for keeping back-ups of their work while
they are working on an assignment.
For group programming assignments, each member of the group must make a separate submission. If a student makes multiple submissions, only the last submission will be graded. It is critical that the students double check the files they are submitting, as submitting a wrong, corrupted, or empty file is very likely to result in a score of 0 for that assignment.
If you think your work is not correctly graded then you must
initiate contact with the grader within a week of receiving the grade
(either email or on the
Blackboard). Grade contesting beyond this time window will not be
allowed.
If you have a learning or physical difference that may affect your
academic work, you will need to furnish appropriate documentation to
GMU Disability Resource Center.
If you qualify for accommodation, the DRC staff will give you a form detailing appropriate accommodations for your instructor. If you have such a condition, you must talk to the instructor during the first week of the term about the issue.