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 |
|
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.
|