CSS 430: Operating Systems
Autumn 2012

W 3:30-5:30 (UW2-005), F 3:30-5:30 (UW2-041)

Joe McCarthy


Instructor:

Joe McCarthy; Office: UW2-317; Phone: 425-352-5379; Email: joemcc@uw.edu
Office hours: Tu-Fr 5:30-6:00pm, and by appointment

Course Description:

This course introduces the logical design of computer operating systems, and the implementation of OS components and algorithms in Java. Topics covered include processes, threads, CPU scheduling, synchronization, deadlocks, memory management, virtual memory, file systems, I/O systems, protection, and security used in the popular desktop and real-time operating systems.

Prerequisites:

CSS 343: Data Structures and Algorithms

Grading:

Assignment 1 8%
Assignment 2 8%
Assignment 3 8%
Assignment 4 8%
Final Project 18%
Midterm Exam 25%
Final Exam 25%

Required Textbooks:

  1. Operating System Concepts with Java, 8th Edition; Abraham Silberschatz, Peter Galvin, and Greg Gagne; Wiley, 2009; ISBN 978-0-470-50949-4
  2. A Java book of your choice (recommended)

Recommended Java Books:

Supplemental References:

Policies:

All programs, with the possible exception of the final project, are to be done independently (teams of two will be allowed to collaborate on the final project; details to follow). UWB Standards of Academic Integrity will be strictly enforced. You may discuss the problem statement and seek and provide clarifications among each other, either face-to-face or via the online discussion forum, but any submissions (including programs, results, and written reports) to be turned in, must reflect your own work.

All homework / programming assignments are due at the beginning of class on the due date, and no make-up exams will be given. I may grant extensions in exceptionally extenuating circumstances, but only if I am consulted - and agree - beforehand.

Computer use during lecture should be limited to taking notes or searching for information relevant to topics being discussed in class. Please do not use your computer in a way that might distract other students, e.g., social networking, game playing, video watching, etc. Side conversations should be kept to a minimum as a courtesy to other students that are trying to attend to the main discussion.

To request academic accommodations due to a disability, please contact Disability Resources for Students (DRS) UW1-175, (email: drs@uwb.edu, TDD: 425-352-5303, and FAX: 425-352-3581). If you have a documented disability on file with the DSS office, please have your DRS counselor contact me and we can discuss accommodations.

Course Goals:

The overall goal of CSS 430 is for students to learn fundamemtal concepts that are used in and applicable to a variety of operating systems. The course consists of three major areas of focus: The course may also cover protection and security (if time allows), which are increasingly important for modern operating systems that access the Internet. Throughout the course, we will use the Java programming language to illustrate many operating system concepts. Using Java, you will implement a program in each of the focus areas (process management, memory management and file system). As with most technical courses, in addition to ability and motivation, it takes time to learn and master the subject. Expect to spend an additional 10 to 15 hours a week outside of class time on the average.

Course Objectives

The objectives of this course are for students to:

Course Learning Outcomes

Upon successful completion of the course, students shall be able to:
  1. Understand OS interfaces: dual (user/kernel) modes, system calls, traps, interrupts, and command interpreters.
  2. Understand the process concept and writing programs to manage processes and facilitate inter-process communication.
  3. Understand the thread concept and writing programs to manage and schedule multithreads.
  4. Understand how to control critical sections at various levels: hardware (test-and-set and swap instructions), OS (semaphores), languages (monitors), and application (Dekker's algorithm) as well as writing programs with Java monitors.
  5. Understand the main memory concepts (paging and segmentation) as well as tracking logical-to-linear and linear-to-physical memory mapping.(a)
  6. Understand the virtual memory concepts (page fault, replacement, allocation, thrashing, and working set) as well as simulating page-replacement algorithms (FIFO, Optimal, LRU, and 2nd Chance algorithms)
  7. Understand file-system interface, protection, and implementation as well as implementing a Unix-like file-system simulator in Java.

Assignments:

Assignments should be submitted electronically via the Catalyst Dropbox for this section of the course. All assignments are due by the start of the class on the date they are due.

Discussion Guidelines

I encourage you to participate in discussions - online and offline, in class and out of class, with me and with other students. Asking and answering questions is an essential part of the learning process. To ensure constructive engagement, please abide by the principles of non-violent communication in all interactions.

For online discussions, please note there are three discussion areas (shared by both sections of the course):

For assignments, feel free to post questions and/or answers, but do not post your assignment solutions (it is okay to include snippets of code). Also, please use appropriate and clear subject headers (for new threads involving assignments or labs, include the assignment / lab number)

Topics covered and anticipated 430 schedule:

Note that this is an approximate ordering of topics. Chapters will take about the allotted time and not all sections in all chapters are covered.

Week Date (WF) Topics Chapters Reading Assignment
0 Sep 26 Overview and Introduction 1 pp3-47  
  Sep 28 Linux system calls, ThreadOS     Program 1 assigned
1 Oct 3 OS Structures 2 pp49-100  
  Oct 5 Processes 3 pp103-152  
2 Oct 10 Threads 4 pp153-192  
  Oct 12 CPU Scheduling 5 pp193-239 Program 1 due
Program 2 assigned
3 Oct 17        
  Oct 19 Process Synchronization 6 pp241-312  
4 Oct 24        
  Oct 26 Deadlocks
Program 3 assigned
Midterm review
7 pp313-347 Program 2 due
Program 3 assigned
[Program 3 slides]
5 Oct 31 Midterm exam in class 1 - 6 pp3-312  
  Nov 2 Main Memory 8 pp351-391  
6 Nov 7 Virtual Memory 9 pp393-457  
  Nov 9       Program 4 assigned
7 Nov 14 File-System Interface 10 pp461-500 Program 3 due
  Nov 16 File-System Implementation 11 pp501-549 Project assigned
8 Nov 21 Thanksgiving Eve (class canceled)      
  Nov 23 Thanksgiving Break (no classes)      
9 Nov 28 Final Project Explanation     Program 4 due
  Nov 30 Mass-Storage Systems 12 pp551-591  
10 Dec 5 Review & wrap-up      
  Dec 7 CSS Colloquium
(class canceled)
     
11 Dec 12 Final exam in class 8 - 12 pp313-591 Final project due
  Dec 14       Final project due (3:30pm)

Acknowledgments

The materials (including lecture notes and assignments) used in this course are based on materials previously developed by Professors Munehiro Fukuda and Kelvin Sung.