COS 431: Operating Systems -- Syllabus 
Fall, 2010


Catalog Description
Study of the structure of current computer operating systems. Topics include I/O management, memory management, multiprogramming, linking loaders, real and virtual systems, batch and time sharing. Prerequisites & Notes: COS 226, COS 335 or permission. Credits: 3
Extended Course Description:
The following classic operating system topics will be discussed: overall operating system structure, processes, process management, and process communication, process scheduling, threads, synchronization, deadlocks, memory management, virtual memory, file systems, and I/O systems. Projects in UNIX and C are assigned, as well as a full scale operating system simulation, BRAIN10. Students will work both individually and in groups.
Place and Time:
Tuesday/Thursday, 8:00am-9:15am, Room 227 Neville Hall
Instructor:
Larry Latour, Assoc. Prof., Dept. of Computer Science
Office: 222 Neville Hall
Tel: 581-3523
Email: Firstclass (Larry Latour) or larry_latour@umit.maine.edu
Office Hours: Tuesday/Thursday 1:00pm-2:00pm and by appointment
Textbook:
Silbershatz, Galvin, and Gagne, Operating Systems Concepts, 8th Edition , Wiley & Sons, Inc., 2009.
Ada Notice:
If you have a disability for which you may be requesting an accommodation, please contact Ann Smith, Director of Disabilities Services, 121 East Annex, 581-2319, as early as possible in the term. 

Computer accounts:

You will need a UNIX account to do the first assignment. If you don't have one, you will need to complete an account request form (available from the CS office) and submit it to the Department office. If you have access to UNIX elsewhere (e.g., LINUX on a home machine or your home department), you might still want to get an account on the UMCS machines; it might make your life a little easier when it comes time to demonstrate your programs. Those who are running intel-based Macs can also do a good deal of Unix work under Mac OS X.

Grading:

Grades will be based on the following work: I expect that you attend class regularly. Although this is not part of the final grade, you are responsible on tests for EVERYTHING discussed in class, unless otherwise noted. Missing class is no excuse for missed information. Coming to class consistently late is not proper behavior. We all know that the class is 8:00am. Deal with it!

The Part ZERO Unix programming portion of the major project is an individual assignment, while Parts 1-4 BRAIN10 portion of the project is a 2 member group project in which you and your team will design and implement an operating system, BRAIN10, in C!. You will be expected to prepare a poster (typically 18" x 23") describing the interface, architecture, and concepts behind your completed BRAIN10 system. See the project description documents (to be handed out in class and available on firstclass) for more details.

You must complete and present, as a group and individually, (at incremental project due dates and during the public presentation session) all five parts of the major project in order to pass the course with a D or better.

Assignments:

Unless otherwise announced, (1) all projects are to be demonstrated to me in my office and (2) all source code and supporting documentation for the assignments are to be submitted on the web ONLY. It is your responsibility to give me the URLs for the individual and group Web pages in a timely manner. These will be kept confidential.

The Importance of Deadlines:

A critical part of the discipline of software development is the deadline. Therefore:

Acknowledgement that this syllabus has been read and understood:

All students must send an email to the instructor acknowledging that they have read and understood the entire syllabus.

Web Page and Firstclass Conference:

In addityion to this course webpage (http://www.umcs.maine.edu/~larry/latour/courses/431/f10) There will be a course firstclass conference [cos431(latour)] containing course-related information, announcements, and links to related sites. You are encouraged to check on both the web page and firstclass conference often for new information. Of particular interest is a Web version of the Introduction to UNIX in the UMaine CS Dept. pamphlet, available in both single-page and multiple-page forms.

Academic Honesty:

Academic dishonesty includes cheating, plagiarism and all forms of misrepresentation in academic work, and is unacceptable at The University of Maine. As stated in the University of Maine's online undergraduate "Student Handbook," plagiarism (the submission of another's work without appropriate attribution) and cheating are violations of The University of Maine Student Conduct Code. An instructor who has probable cause or reason to believe a student has cheated may act upon such evidence, and should report the case to the supervising faculty member or the Department Chair for appropriate action.

Topics:

Chapter 1: Introduction
Purpose of an Operating System, OS Structure, Overview of Process Management, Memory Management, Storage Management, Protection and Security, Distributed Systems, Special-Purpose Systems, Computing Environments, Open-Source OS.
Chapter 2: Operating System Structures
Operating-System Services, User Interface, System Calls, System Programs, OS Design and Implementation, OS Structure, Virtual Machines, OS Debugging, OS Generation, System Boot.
Chapter 3: Processes
Process Concept, Process Scheduling, Operations on Processes, Interprocess Communication, Examples of IPC Systems, Communication in Client–Server Systems.
Chapter 4: Threads
Thread Concept, Multithreading Models, Thread Libraries, Threading Concerns, OS Examples.
Chapter 5: CPU Scheduling
Basic Concepts, Scheduling Criteria, Scheduling Algorithms, Thread Scheduling, Multiple-Processor Scheduling, OS Examples, Algorithm Evaluation.
Chapter 6: Process Synchronization
Background, The Critical-Section Problem, Peterson’s Solution, Synchronization Hardware, Semaphores, Classic Problems of Synchronization, Monitors, Synchronization Examples, Atomic Transactions.
Chapter 7: Deadlocks
System Model, Deadlock Characterization, Methods for Handling Deadlocks, Deadlock Prevention, Deadlock Avoidance, Deadlock Detection, Recovery from Deadlock.
Chapter 8: Main Memory
Background, Swapping, Contiguous Memory Allocation, Paging, Structure of the Page Table, Segmentation, Example: The Intel Pentium.
Chapter 9: Virtual Memory
Background, Demand Paging, Copy-on-Write, Page Replacement, Allocation of Frames, Thrashing, Memory-Mapped Files, Allocating Kernel Memory, Other Considerations, Operating-System Examples.
Chapter 10: File-System Interface 
File Concept, Access Methods, Directory and Disk Structure, File-System Mounting, File Sharing, Protection.
Chapter 11: File-System Implementation
File-System Structure, File-System Implementation, Directory Implementation, Allocation Methods, Free-Space Management, Efficiency and Performance, Recovery, NFS, Example: The WAFL File System.
Chapter 12: Mass-Storage Structure
Overview of Mass-Storage Structure, Disk Structure, Disk Attachment, Disk Scheduling, Disk Management, Swap-Space Management, RAID Structure, Stable-Storage Implementation, Tertiary-Storage Structure.
Chapter 13: I/O Systems
Overview, I/O Hardware, Application I/O Interface, Kernel I/O Subsystem, Transforming I/O Requests to Hardware Operations, STREAMS, Performance.

Last Updated: 8/29/2010