CS420 Operating Systems
Fall 2019

Dr. M.S. Jaffe   


Location and Time: Section 1: TTh noon - 1:15, Building 54
Section 2: TTh 2:50 - 4:05, Building 52, room A
Office Hours: MWF 11-1, TTh 1:50 - 2:50
Textbook: Silberschatz, Galvin, & Gagne, Operating System Concepts, 9th Ed.
Reference Materials: http://ultra.pr.erau.edu/~jaffem/classes/cs420/cs420_standard_web_pages/cs420_references.htm
Prerequisites: CS125 or equivalent (see the section on Programming, below)
Final Exam: Section 1: 10:15 - 12:15, Monday 9 Dec; Section 2: 8 - 10, Thursday, 12 Dec

Overview: The course will cover, at a minimum, chapters 3 - 10 of the text. Chapters 1 and 2 I don't much care for and we'll use some slides of mine instead. After the basics (chapters 3 - 10), if we have time, we'll cover parts of chapters 11 through 13. Part 1 of the text is essentially an introduction and overview that we'll cover very quickly.  Parts 2 and 3 cover process and memory management, respectively —the two most interesting and significant of the three essential functions of  all operating systems (and the third, I/O management, is not as conceptually strange as the first two; you can figure it out on your own, in other words).  We'll be spending our time on fundamental concepts and vocabulary to describe the services that nearly every operating system must provide (and why), the various alternatives that have been developed to provide them, and the relative strengths and weaknesses of each. 

  Goals and objectives:   Course Outline


  • Understand the relationship between the OS and the hardware on which it executes, including the basics of how the OS and the hardware must cooperate to help enforce a computer security policy.
  • Understand the major, sometimes conflicting, purposes of modern operating systems and the issues and compromises that must be dealt with to satisfy them.
  • Understand the major components, features, services, and even some of the algorithms required in modern operating systems
  • Be able to use vendor documentation to learn how to request OS services from within application programs written in C
  • The CPU (including the privileged mode bit and its relationship to computer security), interrupts, system service calls, and the IVT
  • Process management
    • Processes, PCBs, context switching, and the process state diagram
    • Interprocess communications
    • Threads and TCBs
    • Scheduling
      • Short term
      • Long-term
      • (Midterm scheduling gets covered later, as part of memory management with demand paging)
    • Process synchronization (race conditions, critical sections, mutex locks, and Dijkstra semaphores)
  • Memory managment
    • Binding, linking, and loading
      • Compile time binding
      • Load time binding
      • Execution time binding
    • Contiguous memory management schemes and issues
      • MFT
      • MVT
        • External and internal fragmentation
        • Compaction and its costs
    • Noncontiguous memory management
      • Paged memory management
        • The page table
        • Translation look aside buffers
      • Segmented memory management and segment tables (and their importance to computer security)
      • Segmented and paged memory management
      • Demand paging, thrashing, and the mid-term scheduler
  • File systems and I/O management (topics as time permits)

Programming: There will be several small to medium sized programming assignments in which you make system service calls to the operating system to get a feel for how some of the theoretical concepts of this class work in practice. Your programming must be done on the campus UNIX environment; homework submission instructions are here. As always, if you need help, come see me — I get paid to help you (and usually enjoy it, come to that). The campus Linux operating system is provided by a Red Hat Linux, whose documentation can be found online and which will be the source of the information needed to complete (and enjoy, I hope) the programming assignments. Please read the integrity policy for the programming in this course; you will be held accountable for compliance with it whether you've read it or not.

Grading: There will be a midterm worth 30% and a final worth 40%, both exams closed notes, closed book. The remaining 30% will be equally apportioned among the 4 or 5 programming assignments. I grade on the curve, so difficult exams should not per se be cause for panic. At the end of the semester, the upper half of the class gets A's and B's, lower half gets C's and below. I do not feel obligated to gives D's or F's to match the A's, but I don't hesitate to do so for performance significantly below the rest of the class. Note: Regardless of overall curve, you can't get an A in this class without having successfully completed all the programming assignments.

Other stuff. Some items are included here because I think they're important, some because some bureaucrat or other thinks they're important (in some cases, I actually agree; in some I don't):


This page last changed 17 Mar 2019 by M.S. Jaffe