COMP 790, Spring 2020: Operating System Implementation

Latest Announcements

11/25: This course does count as an elective for the BS.
11/6: Initial webpage posted

See all announcements RSS 2.0 feed

Course Info

  • Note: Please send all course-related email (excepting confidential email) to comp790ta-s20 at cs dot unc dot edu. This list includes the instructor, TAs, and LAs.
  • Course Objectives and Description

    The primary objective of this course is to gain a detailed understanding of how computer systems work. For instance, when one types a command at the console, what is the chain of hardware and software events that lead to the command returning the correct value? This deep understanding is of practical and philosophical importance. It is practically immportant to understand how computer systems work when you are trying to make them do something new, either for research or industry. More philosophically, a computer scientist with an advanced degree should not view any part of the computer as "magic," but should either understand how it works or have the tools to figure it out.

    This course will focus on implementing key OS kernel features in the JOS kernel. JOS provides skeleton code for much of the less interesting components of the OS, allowing you to focus on key implementation details. The JOS lab was developed at MIT, and has been used at several other universities, including Stanford, Texas, and UCLA.

    Lectures and readings in the course will serve to draw out general principles, add needed background for the labs, and map details from the JOS implementation to real-world OSes, like Linux and Windows. In my own experience, most of the mapping is fairly intuitive: once you understand the simple code in JOS, the same pattern is clear in the much more complicated Linux source code.

    This course will not attempt to provide a comprehensive introduction to operating systems. Some previous exposure to the basics of multi-programmed operating systems will be assumed.

    Detailed information about the course is available on the syllabus.

    Note for BS Students

    Undergraduates are welcome to take this course, provided they have taken COMP 530 with a B+ or higher. The DUS (Ketan Mayer-Patel) has confirmed that this course can be counted as an COMP elective for the major.

    Acknowledgements

    Portions of this course design, organization, policies, syllabus, web design, etc. came from Mike Walfish and Erez Zadok. I owe previous course staffs at several universities a debt of gratitude for developing the JOS labs.

    We thank past course TAs for their contributions to lab management: Chia-che Tsai and Connor Fitzsimmons. Amit Arya ported JOS to the amd64 architecture, which we will be using at for this course. Abhinand Palicherla significantly revised JOS64. Patches to JOS64 have also been contributed by Varun Agarwal, Vivek Kulkarni, and Sagar Trehan.

    We are also using the hypervisor functionality in JOS64 as an optional feature. Virtualization support in JOS 64 was developed by Abhinand Palicherla and Jiahong Huang.

    This course website was created using the Coursegen toolkit written by Dave Andersen and Nick Feamster. Thanks!


    Last updated: 2020-01-14 09:45:50 -0500 [validate xhtml]