READ THIS FIRST

The class will be held in person, conforming to the university guidelines. Attendance in the class and the recitation sections is required. Excused absences will be permitted according to the university rules. This is a project-oriented course in which you must complete 7 projects. The details of the projects will be discussed in the recitation sections More details about the functioning of this will be announced here or through Piazza. You should regularly visit this page and Piazza. You are encourage to ask and answer any questions posted on Piazza.

Overview

The goal 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 difficult and time-consuming programming project (GeekOS). You are provided the source code (a few thousand lines of C and some assembly) of a skeleton "Unix-style" operating system kernel for a PC-like x86 platform. You have to understand a large part of this code and augment it in various ways: pipes, fork, signals, semaphores, cpu scheduling, memory paging, file system, etc. The x86 platform is simulated by QEMU. The programming environment is Gnu/Linux.

Administrative stuff

Instructor

Ashok Agrawala

Email: agrawala AT cs DOT umd DOT edu (put "412" in the subject)
Office: IRB 5204
Zoom Room: umd.zoom.us/my/agrawala
Office hours: By Appointment

Topics

  • Processes: What is a process, how to create them, run them concurrently, and achieve
  • Threads: What is a thread, how to implement them.
  • Scheduling: how to achieve good response times (of interactive applications) and throughput (of background applications).
  • Synchronization: Locks, conditions, deadlock freedom, liveness.
  • Memory management: Paging, segmentation, swapping, memory allocation, etc.
  • File system Interface and Implementation: function calls, mounting file systems, organization of disk blocks, allocation, recovery.
  • Disk and storage systems
  • Other topics: security, networking, etc.

Projects and GeekOS

  • One late submission: One project can be turned in after the weekend (when due Friday, it can be turned in on Monday). The best way to use this is to submit both a regular submission and a late submission for every project if you so like. Then at the end you can choose which project (if any) to apply it to.
  • Minimum requirement: To pass the course, for each project you must pass a minimum number of public tests by the last day of classes for the semester. This number will be given when the project is assigned.

Course grade

We will be using several assessment tools for this semester for this course, including

  • Reading and other assignments from the text
  • Exams
  • Projects
  • Class participation
    Participation means asking good questions and/or answering questions well. To make my life easier, you will get these points only if you're just below a cutoff (otherwise it doesn't matter).
  • Note the minimum requirement in projects.
  • Regrade requests must be submitted within a week of the project grade being posted or the exam being returned. After that, they won't be processed.

Text

Required: Operating System Concepts, Silberschatz, Galvin and Gagne, 10th edition, from ZYbooks.com
  1. Sign in or create an account at learn.zybooks.com
  2. Enter zyBook code: UMDcmsc412AgrawalaFall2024
  3. Subscribe
You have to enroll at this site as a student. This is an online book from which reading and other assignments will be given.

Videos (Neil Spring)

Excused Absence and Academic Accommodations

Recently the University approved a policy for class absence for students. All students are expected to attend ALL classes. Any student who needs to be excused for an absence from a single lecture, recitation, or lab due to a medically necessitated absence shall:

  1. Make a reasonable attempt to inform the instructor of his/her illness prior to the class.
  2. Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness. Each note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and may result in disciplinary action.
  3. This self-documentation may not be used for the Major Scheduled Grading Events as defined below and it may only be used for only 1 class meeting during the semester.
Any student who needs to be excused for a prolonged absence (2 or more consecutive class meetings) or for a Major Scheduled Grading Event, the student must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. No diagnostic information shall be given. University is in the process of specifying the Excused Absence policy for this semester and we will conform to it.

Disability Support Accommodations

Academic Integrity

Read the CS Department Academic Integrity policy
Also read the sections Academic Integrity and Code of Student Conduct in UMD's Course Related Policies

Projects are to be done individually.
Consider each programming assignment to be a take-home exam.
Do not expose your source code to others. Do not leave it potentially accessible to others, e.g., unlocked unattended laptop, publicly accessible websites, unsecured servers, unsecure communications. Do not use any parts of other's source code. This also applies to code from online searches, e.g., Sourceforge, Stackoverflow, Google.
Interaction via course discussion forum is permitted. Discussion of problems and code solutions is permitted as long as you do not write down code during your discussion and you wait at least 30 minutes after the end of the discussion before you write code based on the discussion.

Procrastination and Piazza

Do not wait for project or exam deadlines before asking your questions.
Piazza is not a replacement for office hours as far as getting responses from staff is concerned.
Response times on Piazza will inevitably deteriorate as the semester goes by. Early on, the projects are simple and your questions are relatively precise. Later projects are more intricate and typically there is a flood of vague questions (eg, "Why is this not working?") just before due dates. It's unlikely you will get helpful answers to such questions in time and on Piazza.
This also applies to questions about class material. Just before exams, there is usually a flood of questions that should have been asked in office hours or class when the material was covered. Again, it's unlikely you will get helpful answers in time and on Piazza.