CMSC 412 |
Operating Systems |
Spring 2015 |
Professor | A. Udaya Shankar (email: shankar@cs.umd.edu). Office hours: TuTh 2:00-3:00 (AVW 4141) but easily expandable (email for an appt). |
TA | Kevin Engel (kte@cs.umd.edu). Office hours: Thu 5-6 (CSIC 3107). |
TA | Chester Lam. Office hours: Wed 3-4 (CSIC 3107). |
Class | CSIC 2107. TuTh 12:30-1:45pm |
Discussion | CSIC 1121. MW 1:00-3: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.
There is a significant and time-consuming 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 x86 platform is simulated by QEMU. The programming environment is Gnu/Linux.