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:
-
Operating System Concepts with Java, 8th Edition;
Abraham Silberschatz, Peter Galvin, and Greg Gagne;
Wiley, 2009;
ISBN 978-0-470-50949-4
- A Java book of your choice (recommended)
Recommended Java Books:
Supplemental References:
-
Linux in a Nutshell, 6th Edition;
Ellen Siever, Stephen Figgins, Robert Love and Arnold Robbins;
O'Reilly, 2009;
[eBook version
available online via UW Library]
-
Understanding the Linux Kernel, 3rd Edition;
Daniel P. Bovet and Marco Cesati;
O'Reilly, 2005
-
The Design of the Unix Operating Sytem, Marice J. Bach;
Prentice Hall, 1986
-
Advanced Programming in the Unix Environment, 2nd Edition;
W. Richard Stevens and Stephen A. Rago;
Addison Wesley, 2005
-
Java Threads, 3rd Edition;
Scott Oaks and Henry Wong;
O'Reilly, 2004
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:
- Process management: the scheduling, execution and termination
of application programs and the synchronization of events
- Memory management: the loading of application programs in memory
and the dybnamic allocation / deallocation of memory required by those programs
- File system: the provision of a mechanism for
on-line storage of and access to both data and programs residing on
the disks
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:
- Learn logical design of operating systems including processes, threads,
CPU scheduling, synchronization, deadlocks, memory management, virtual memory,
file systems, I/O systems, network programming, protection, and security
used in the popular real-time operating systems.
- Learn the use of Java to illustrate many operating-system concepts
and to implement each concept of process management, memory management, and file system.
Course Learning Outcomes
Upon successful completion of the course, students shall be able to:
- Understand OS interfaces: dual (user/kernel) modes, system calls, traps,
interrupts, and command interpreters.
- Understand the process concept and writing programs to manage processes and
facilitate inter-process communication.
- Understand the thread concept and writing programs to manage and schedule multithreads.
- 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.
- Understand the main memory concepts (paging and segmentation)
as well as tracking logical-to-linear and linear-to-physical memory mapping.(a)
- 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)
- 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):
-
Announcements:
a discussion area you should check regularly for announcements by the instructor
-
General Discussion:
intended for discussions about assigned readings, lectures,
assignments, labs and/or exams
-
Other Items of Interest:
intended for links to and discussions about
other items relevant to the course
or students taking a 400-level computer science 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.
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.