The course follows a bottom up construction of a general-purpose operating system beginning with the hardware interface and ending with the user interface. Specific topics covered include concurrent processes, process management, I/O, virtual memory, file management, resource scheduling, and performance measurement. Students are assumed to be familiar with general machine architecture, functions of system software (compilers, loaders, editors, etc.), data structures, and to have some experience with UNIX or another multiprogramming operating system.

The class is dual-listed as an undergraduate (COS 450) and graduate course (COS 550); graduate students will have additional reading and must prepare a presentation for the class (see below).

Instructor

Stephen Houser houser@maine.edu

Course Objectives

After completing this course, you should be able to:

  • Describe what the purpose of an operating system is.
  • Describe the major challenges in an operating system design and implementation.
  • Describe the major functional components of an operating system.
  • Describe the typical architectures of operating systems.
  • Describe how an operating system is designed and implemented.
  • Develop code that extends an existing operating system.
  • Evaluate operating system designs and functions.

The course is designed to meet the following program outcomes of the Computer Science program at the University. While, your work will be assessed within the program against these outcomes they are not used in grading your work.

  • An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution
  • An understanding of professional, ethical, legal, security and social issues and responsibilities
  • An ability to use current techniques, skills, and tools necessary for computing practice.

Prerequisites and Expectations

  • COS 285 Data Structures
  • COS 251 Systems Programming

The course involves a fair amount of independent learning, experimentation, and work. Internet resources on network programming are plentiful and class time is limited. You will be expected to read (or at least skim and absorb) enough of these materials to be prepared for class.

Textbook

You will use the textbook in and out of class. The examinations will combine material from in-class discussion and the textbook. The textbook is the reference for the course. All textbook material may not be covered during in-class discussions, yet you will still be responsible to demonstrate an understanding of it on the examinations.

Operating System Concepts Essentials 2nd Edition 2013, Silberschatz, Galvin, and Gagne.

ISBN-13: 978-1118804926
ISBN-10: 1118804929
Publisher: John Wiley & Sons
Book Website: [http://os-book.com](http://os-book.com)

NOTE: Operating System Concepts 9th edition is an acceptable, but more expensive substitute. The Essentials version has the same but fewer chapters. We will only be covering material that is in the Essentials version.

In addition to the textbook, you will need the Pintos Documentation to complete the assignments in the course.

Projects

The course is partially project-based. There will be three (3) required programming projects for undergraduate students and four (4) for graduate students. The projects will require you to implement key operating system components within an existing operating system. They will be graded on solving the problem at hand and your design approach documentation. The projects are complex and time consuming. Do not underestimate the time and thought needed to complete them. Start early, work often.

Each project consist of two parts; implementing features and a design document. Each part is 50% of the project grade. The feature implementation requires that you write code to implement features in the Pintos operating system. There is an automated test and grading infrastructure to assist you in your work. The DESIGNDOC is a guided writing exercise. There are several questions about your design that you are required to document. Within the guided questions are hints about good implementation decisions for the project.

Schedule of Projects

Project Project Possible Points
0 Memory Allocation 25 (extra credit)
1 Threads 100
2 User Programs 100
3 Virtual Memort 100
4 File System (graduate) 100

Your code will be submitted (checked in/pushed) on GitHub to an assignment for each project. Details on what needs to be submitted will be included with each assignment. In all cases, you should submit only source code as directed, no binary executable files.

Your code must compile and run on systems other than your own, specifically the instructor’s system as described in the Pintos documentation. Be diligent not to include absolute paths or other common mistakes that prevent your code being compiled and executed on other systems.

Code should work and be your own creation. There are numerous sources of information on the Internet, including code. However, your submissions should be your own work not that of others cut-and-pasted into your projects or that of your classmates. Plagiarism is a serious offence and will be treated accordingly.

Project Grading Rubric

Score Grade Notes
90-100 A Passes all tests, design complete and well thought out
80-89 B Passes most tests and/or design mostly complete
60-79 C Passes some tests and/or design flaws
50-59 D Passes only a few tests and/or design flaws
<50 F Does not pass enough tests, does not satisfy the requirements, did not attempt

Quizzes and Examinations

The course includes weekly quizzes and two (2) examinations. The quizzes cover the material being discussed in class each week. The examinations will cover all the material since the last examination. The questions on the quizzes and examinations will be a combination of material in the assigned sections of the book and what is discussed in class. The questions at the end of each chapter in the book are an excellent reference for what to expect on the quiz and examination questions. Each quiz and examination is built at the time you take it from a pool of applicable questions, so it is very unlikely that any two will be the same.

Exam Possible Points Notes
Weekly Quiz* 100 All quiz scores / 1400, each quiz ~7 points
Midterm Exam 100  
Final Exam 100  

The quizzes and examinations will be conducted within Blackboard (bb.courses.maine.edu).

Quizzes will be available from Fridays (00:00) to Mondays (23:59) for the reading assigned that week. The Chapter 1 quiz will thus be available the Friday after our first meeting and due the Monday before our second meeting. Each exam will be available to you on the day of the exam (the same day as class) and require you to complete all the questions within a specific time duration (60 minutes). We will have abbreviated classes on those days (ending early) to give you time to take the exam. All the quizzes and examinations will be automatically graded and your results immediately available for all non-essay answers. After the due date has passed, you will be able to see more detail about your incorrect answers.

Schedule

The following is the schedule for the course. Topic coverage and due dates may change based on progress, snow-days, holidays, and other events.

WEEK TOPIC READING NOTES & LINKS
Week 1 Course Overview & Introduction, Pintos Introduction Session Ch. 1 Syllabus, Pintos Documentation
Week 2 Operating System Structures, Project 1 - Threads Session Ch. 2 Group Assignments Complete
Week 3 Processes Ch. 3  
Week 4 Threads Ch. 4  
Week 5 Process Synchronization Ch. 5  
Week 6 CPU Scheduling Ch. 6 Project 1 - Threads Due
Week 7 Project 2 - User Programs Session   Midterm Exam (online)
Week 8 Main Memory Ch. 7  
Week 9 Virtual Memory Ch. 8  
Week 10 Mass Storage Systems Ch. 9  
Week 11 Project 3 - Virtual Memory Session   Project 2 - User Programs Due
Week 12      
Week 13 File System Interface & Implementation Ch. 10 & 11  
Week 14 I/O Systems Ch. 12  
Week 15 Protection & Security Ch. 13 & 14  
Finals     Project 3 - Virtual Memory Due, Project 4 - Filesystems Due (graduate only), Final Exam (online)

Grades

Grades for the course will be based on an accumulation of points from the examinations and assignments.

Schedule of Point Accumulation for Final Grade:

COS 450 Points COS 550 Points % Score Grade
540-600 630-700 90-100% A
480-539 560-629 80-89% B
360-479 420-559 60-79% C
300-359 350-419 50-59% D
0-299 0-349 0-50% F

Late Policy

For projects, you are granted three (3) “late days” to use at your discretion. These can be used all on one project, to hand in three days late with no penalty. Or they could be used one day late on each of three projects, again with no penalty. You are however required to indicate you are using late day(s) to the instructor by email prior to or on the original due date. The subject of the email should be “COS 450 Late Submission Project __” and fill in the project number.

Other extensions on projects and any extension on examinations will not be granted except in the case of an emergency. Technical difficulties do not constitute an emergency. Late submissions will be penalized. Lateness will be determined by submission in the University course management system (Blackboard at bb.courses.maine.edu) and the assigned due date.

Accommodations and Inclement Weather

Should you need services or accommodations due to a disability to fully participate in the class, please speak with the instructor or contact the Office of Academic Support for Students With Disabilities, Luther Bonney 242 on the Portland Campus.

Class cancellations are posted on USM’s website (http://usm.maine.edu) and on the Storm Line at 780-4800. You can also receive cancellations and emergency information from the USM Alert text messaging system (http://usm.maine.edu/usmalert).