CMSC 23000 Operating Systems
TA: Allan Espinosa
E-mail: aespinosa AT cs DOT uchicago DOT edu
Office: Jones 209
Office hours: TBD
Lectures: TuTh 4:00-5:20 in Ryerson 276
This course provides an introduction to the basic concepts and techniques used to implement operating systems. Topics include processes and threads, interprocess communication and synchronization, memory management, segmentation, paging, linking and loading, scheduling, file systems, and input/output. The course will revolve around the implementation of an x86 operating system kernel.
By the end of this course, students should be able to...
- Use process management and communication primitives to write multiprocess and/or multithreaded code.
- Use synchronization primitives, such as semaphores and locks, to prevent race coditions and deadlocks in their code.
- Implement significant components of an operating system, such as system calls, memory management, and file systems.
- Read and understand source code from other operating systems.
- Develop software collaboratively through the use of version control tools, code reviews, and project management.
CMSC 15400 and a working knowledge of the C programming language are strict prerequisites of this course. Students who have not taken CMSC 15400 must speak with the instructor to ascertain that they meet the prerequisites for this course.
For a more detailed description of this course, please read the Course Syllabus.
This course has two suggested texts:
- Operating system concepts, 8th Ed., Abraham Silberschatz, Peter B. Galvin, Greg Gagne, J. Wiley \& Sons 2008. Available for purchase from the Seminary Co-op Bookstore.
- Modern Operating Systems, 3rd Ed., Andrew S. Tanenbaum, Pearson Prentice Hall 2008.
The lectures will not be tied to any one text in particular and all the material necessary to implement the project will be delivered in the lectures. Thus, students are not required to purchase any of the above texts (although they can be a valuable reference).