Check at least twice weekly. See News for last update
A. Udaya Shankar
Office hours: MW 1:30-2:00 (AVW 4141)
but easily expandable (email for an appt).
Office hours: On Piazza.
Office hours: On Piazza.
CSIC 1121. MW 2:00-3:15pm
CSIC 1121. MW 10:00-12:00pm
This course is a hands-on introduction to operating systems,
including topics in:
multiprogramming, communication and synchronization,
memory management, IO subsystems, and resource scheduling polices.
The objective is an in-depth understanding of how an operating system
manages resources in a computer and provides programmers with a
machine and device independent interface.
The classes emphasize concepts.
There is a significant programming project (GeekOS).
You are provided with the source code (about 3000 lines of C and some assembly)
of a "Unix-style" skeleton operating system for a PC-like x86 platform.
You have to understand a large part of this code
and augment it with various OS functionality:
interprocess signals, semaphores, cpu scheduling,
memory paging, file system, etc.
The programming environment is Gnu/Linux.
The x86 platform is simulated by QEMU.
You can use the linuxlab cluster, but you will probably want to run
the environment on your own machine.
Overall it is very intensive and time consuming.
Topics covered (in order approximately):
- Introduction to operating systems
- Overview of GeekOS
- Processes/threads: implementation, protection, scheduling
- Concurrent processes: reasoning, synchronization, communication.
- Deadlocks: prevention, avoidance, detection.
- Memory management
- File systems: interface, implementation
- I/O systems (disks, etc.)
- Other topics (e.g, security, networking, etc.)
Operating System Concepts, 6th edition or later,
Siberschatz, Galvin and Gagne, Wiley.
These notes are old (except for 10x) but useful.
(Notes 1-3 are trivial, given GeekOs.)
You will get a letter grade for project and a letter grade for the rest.
If you get D or F in either, then that is your course grade.
If you get C or higher in both,
then your course grade will be determined by both as follows.
"Approx" means +/− 5%.
For example, projects can become 50% and class particpation can become 0%.
Midterm 1: approx 15% (Date: TBD)
Midterm 2: approx 15% (Date: TBD)
Final : approx 25% (Mon Dec 17 1:30pm-3:30pm)
Project: approx 45%
Class participation: approx 5%
Missed exams or submission deadlines
Each project has a regular deadline and one or two late deadlines,
which will be fixed soon after the project is assigned.
No submissions after the last late deadline.
If you miss an exam or project deadline
due to medical or family emergency, please see me.
If it's due to illness,
please bring documentation signed by a health care professional.
- If you miss a midterm exam, the weight of the exam will be moved
to the next exam.
Any regrade request (for exams, homeworks, projects) must be submitted
within a week of the grade being posted.
Projects are to be done individually.
Do not show others your source code.
Do not look at another's source code.
You can discuss your program with others.
You can jointly examine the unmodified GeekOS distribution source code.