CSCI6411 - Advanced Operating Systems

Posted on January 15, 2017 by Gabriel Parmer

Location: Rome 204

Office Hours: ???

This course covers a subset of the fundamental concepts of operating systems, focusing on resource management and abstraction. This includes OS structure, processes and thread management, communication with peripherals (I/O), synchronization, deadlocks, memory management, Virtual Machines, cloud infrastructures, and abstractions for cloud computation.

Please note that the workload for this class is heavy and programming intensive. This is not a good class to take if you want an easy class to fill in three credits. This is a good class to take if you want to deeply understand how systems work.

Objectives and Structure

Objectives - In completing this class, students will…

Structure - This class has lectures broken into two main activities: lectures and code discussion.

Prerequisites and Expectations

Prerequisites:

If you are not comfortable with C, at least go through Essential C and the exercises in the Course Material Section.

You very much need to comfortable coding quite a bit, and comfortable doing it in C. You will have very little support for booting you up in C, so if you aren’t comfortable with it, you might be putting yourself into a bad position.

Responsibilities - Students must

Technology - Students must

Course Materials

This class will use three key techologies:

  1. Linux POSIX for a threading library,
  2. xv6, a monolithic OS for teaching UNIX, and
  3. Composite, a research platform created at GWU.

None of these technologies have extensive documentation. General Linux programming can be found online, while xv6 and Composite are more limited in documentation. There is no book for the class, so attendance and understanding in class is essential.

xv6

You can fork the xv6 source on github. When you do, test that you can run it with make, and make qemu.

In the end, you have to get comfortable walking through the code. Using a code indexing system will make this easier. ggtags for emacs does great, but there are corresponding technologies for nearly all editors.

Composite

C Catchup

If you’re having trouble with C, here is a list of references:

It is your responsibility to get up to speed in C, so please use these resources.

Once you are more advanced in C, it will be useful to read the style guide for Composite, our research OS here at GWU.

Lectures, Material, and Assignments

Please see piazza for these details.

Grading

There is no credit for late submissions. You cannot procrastinate in this class.

Academic Honesty and Cheating

Just as you can do a google search for code online, it is trivial for us to do the same. We have caught numerous people cheating in the past in this way. If you feel pressured about an assignment, please come see me instead of cheating.

You are not allowed to collaborate on the homeworks and projects with anyone outside of your team. Teams are not allowed to collaborate. You should never see another team’s code outside of the class-sanctioned code-reviews which will always be after the deadline. The group projects require collaboration amidst each group, but no collaboration between teams is permitted.

Please refer to the academic integrity policy linked from the course web page. This policy will be strictly enforced. If you’re having significant trouble with an assignment, please contact me. If you are looking at code from another student, or from an outside source that is not prescribed by the course, or other students are looking at your code, you are probably not adhering to the academic honesty code.

Academic Integrity Policy Credit: I’d like to thank Prof. Narahari for the first versions of this academic honesty policy.