CS 2510: Graduate Operating Systems


Instructor: Jack Lange, Associate Professor
Sennott Square, Office #5407
jacklange@cs.pitt.edu
Office Hours:     Tues. 2-4PM
   
Lectures:    Mon/Weds 3:00 PM - 4:15 PM
Room: Sennott Square, Rm. 5313

Syllabus

Announcements

Readings

  • Operating Systems: Three Easy Pieces
    Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
    Available online

Additional References

  • Intel x86 Architectural Manuals (Vols. 2 and 3 are necessary for Projects)
    Freely available as PDFs from intel here
  • Linux Device Drivers (Very helpful for Projects)
    Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
    Available as a free set of PDFs here
  • Linux Kernel Development (If you think you are interested in kernel development read this first)
    Robert Love
  • Understanding the Linux Kernel (If you're serious about kernel development you'll want to read this at some point)
    Marco Cesati and Daniel P. Bovet

  • Note: up-to-date references are very hard to come by as both hardware and software are evolving at an increasingly fast pace. Its not unusual for interfaces and architectures to be different from what is described, however in general the basic operation is usually the same if not very similar.

Schedule

Topic Slides Reading Assignment Additional Readings
Introduction - x86 background 1, 2, 3, 4 ch. 2
Processes and Threads 5, 6, 7 ch. 4, 5, 6, 26 akaros
Scheduling 8, 9, ch 7, 8, 9, 10 Scheduler Activations and Lottery Scheduling
Locking 10 ch 27, 28, 29
Synchronization 11 ch 30, 31, 32, 33
Time sources and timing 12, 13 handout Lamport Clocks
Consistency Models 14, 15 handout
Midterm
Virtual Memory 16 ch 13, 14, 15, 16 Multics Virtual Memory
Paging and TLBs 17, 18 ch 18, 19, 20, 21
IPC and RPC 19 Implementing Remote Procedure Calls Lightweight Remote Procedure Calls
Local File Systems (FAT32, FFS, LFS) 20, 21 ch 39, 40, 41, 42, 43, 44 UNIX FFS, LFS
Networked File Systems (NFS and AFS) 22 ch 48, 49 NFS
Distributed File Systems (GoogleFS and HDFS) 23 Google File System

Projects

  • Project 0 [Due: ASAP]
    • Download and configure an Ubuntu 16 LTS (64 bit) (server is preferrable) Linux virtual machine environment that you have root access to.
    • This will be the development environment you should use for the projects, and what will be used to evaluate the code you turn in. If your code doesn't work in this environment, then it will be considered as non-functional and graded accordingly. Any virtual machine environment is acceptable, and there are a number of free and non-free options. Free options include KVM (Linux), Xen (Linux), VMWare Player (Windows), VirtualBox (widely compatible). Non-free options are VMWare workstation (Linux/Windows), VMWare Fusion (Mac), and Parallels (Mac). You can also use Qemu but you should note that it is considerably slower than a VM, especially if you are running with a GUI shell.
  • Project 1 (pdf) Due: 10/11
    • You can download the project framework here
    • Update: Assume that the stacks for each thread are a fixed size, and allocated during thread creation. Use the STACK_SIZE macro to set the size of the stack.
  • Project 2 (pdf) Due: 11/6 11/8
    • You can download the project framework here
    • For this project you will likely need to reference a number of external documents such as man pages and web pages.
    • At minimum you will want to look at the GCC-Inline-Assembly-HOWTO for information on incorporating inline assembly code.
    • You will also want to reference the Instruction Set Architecture Manuals (Intel Vol. 2 and AMD Vol. 3). I recommend the Intel versions, but its often worthwhile to cross reference with the AMD volumes as well.
    • Implementing Lock Free Queues paper is here
  • Project 3 (pdf) Due: 12/6
    • Project framework available here: here
    • The 3rd edition of Linux Device Drivers will be helpful if you are not familiar with Linux kernel development. Chapters 1, 2, 3, 8, and 11 will probably be particularly helpful.
    • You will also find the Intel and AMD System Programming Manuals helpful. (Intel Vol. 3a and AMD Vol. 2)

Disability Resources and Services

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact the instructor and Disability Resources and Services, 216 William Pitt Union, 412-648-7890 or 412-383-7355 (TTY), as early as possible in the term.