CS385 - Operating Systems



Instructor Dr. Dries Kimpe <driesk@uic.edu>
Meets 3:30-4:45 pm TR, in 2LCF F004
Office hours TR 5:00-6:00pm, 1109 SEO
Teaching Assistant Sima Behpour <sbehpo2@uic.edu>
TA Office Hours (see Piazza for the up to date information)


By the end of this course, you will have a good understanding of the main elements that work together to form an Operating System. You will have significant experience with C programming for low-level application development, and some exposure to operating system development. You will have acquired familiarity with standard tools for revision control, debugging, application performance and system diagnostics.

While the class combines theory and practice, there will be a focus on practical demonstrations in lecture and extensive hands-on programming experience. Plan to spend 10 +/- 5 hours per week on homework programming, depending on your current proficiency.


We will be using the 9th edition of the main textbook below, but you should be able to get by with the 8th edition as well.

Operating System Concepts 9/e
Silberschatz, Galvin and Gagne

All assignments are done in C. This is an excellent (and classic) introduction to the language.

The C Programming Language
Kernigan and Ritchie
Prentice Hall

additional materials will be supplied throughout the course in the form of URLs.


This class is programming intensive, with all assignments done in C. Basic C programming experience is assumed.
A prior understanding of assembly language is recommended.

Prerequisite(s): CS 361; or CS 201 and ECE 267. Departmental Approval Required


(tentative) Evaluation will be done through 1 midterm (20 points), 1 final (30 points) and 10 homeworks (75 points). Totals of 100 points or higher will count as 100 points for the purpose of the final grade. Grades will be based on a relative curve, determined after the final exam.


Consulting with your classmates on assignments is encouraged, except where noted. However, turn-ins are individual, and copying code from your classmates is considered plagiarism. For example, give the question "how did you do X?", a great response would be "I used function Y, with W as the second argument. I tried Z first, but it doesn't work". An inappropriate response would be "here is my code, look for yourself".

To avoid suspicion of plagiarism, you must specify your sources together with all turned-in materials. List classmates you discussed your homework with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their turned-in materials. Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc, is obviously prohibited, is grounds for failing the course, and will be reported.


There is a piazza page at https://piazza.com/uic/spring2014/cs385/home. The piazza site should be used for questions related to the course content. Please do not email me or the TA for help with homework of understanding of the course. Those questions should be posted on the piazza site. However, questions related to your specific situation ('can I transfer grade' or 'I will miss class' etc.) should be sent by email.


  1. The C programming language (depending on student background)
    1. from source code to executable
    2. relationship to assembly language
    3. types and expressions
    4. functions and function calls
    5. dynamic memory management
    6. essential programmer tools
  2. Purpose, Function and Structure of an OS
    1. Boot
    2. Processes
    3. User / Supervisor modes, privileged instructions
    4. System Calls
    5. Contexts
  3. Process Management
    1. Linking and loading
    2. Processes vs. Threads
    3. CPU Scheduling
  4. Concurrency
    1. Interrupts, multiprocessing, simultaneous multithreading
    2. Synchronization mechanisms
    3. Race conditions and deadlocks
  5. Memory Management
    1. Operation of malloc()
    2. Virtual memory and paging
    3. Memory mapping with mmap()
  6. Understanding and Diagnosing Program Performance
    1. Profiling and the 80/20 rule
    2. The memory hierarchy
    3. Threaded vs. Event-driven programming
  7. Storage Management
    1. File systems
    2. Mass storage devices
  8. I/O and Device Drivers
  9. Protection and Security
Topic revision: r5 - 2014-01-17 - 06:11:35 - Main.driesk
Copyright 2016 The Board of Trustees
of the University of Illinois.webmaster@cs.uic.edu
Helping Women Faculty Advance
Funded by NSF