|CPSC 331||Operating Systems||Fall 2005|
An operating system is an essential part of a computer system - every computer system comes with one, whether it be Windows XP, Mac OS X, Linux, or something else. The operating system is what sits between the computer's users and its hardware, providing a convenient interface by which the users can access the hardware as well as managing the use of that hardware. Given this role, the operating system is perhaps the most critical piece of software running on a computer - if it doesn't work correctly and reliability, the computer may well be unusable.
The goal of this course is to examine what goes into constructing a modern operating system. Three main components of an operating system will be studied: process management (including multiprogramming, multithreading, and synchronization issues), memory management, and storage management (including file-system management). Both theoretical and practical aspects of these topics will be emphasized; the latter through a series of programming projects in which students will construct major portions of a simple operating system.
This is a programming course, and it should be expected that a fair amount of time will be spent designing and implementing code.
M 2:30-3:45pm, T 3:30-5pm, R 10:15-11:30am, F
|Class Hours and Meeting Place||
Lecture/discussion MWF 12:20-1:15pm, Lansing 300
|Course Web Page||
Operating System Concepts, 7th edition
Additional material will be handed out or posted on the course webpage.
This course, like the other 300- and 400-level computer science courses, explores a particular subdiscipline of computer science. The study of operating systems reveals the details of software that you use every time you turn on a computer, but which you probably take for granted and hardly give a second thought. Since operating systems are so fundamental to the functioning of a computer system, it is important for a well-rounded computer scientist to have some understanding and appreciation of the tasks and complexities involved in creating modern operating systems.
By the end of the course, the successful student should be able to:
|Course Content Overview||
After a brief introduction to operating systems and their history, the course will focus on three major services that modern operating systems provide: process management, memory management, and storage management. Time permitting, additional topics such as protection and security will be covered. The objectives listed below paint - in broad strokes - what the successful student should be able to do at the end of each section.
Process Management: The process - a term used to describe an executing program - is the fundamental unit of work in a computer system. As a result, supporting the creation, termination, scheduling, communication, and synchronization of processes is at the heart of an operating system's job.
Memory Management: Since the CPU cannot access disks and other secondary storage directly, every process needs main memory in order to run. The operating system is responsible for handling memory allocation and deallocation, keeping track of how main memory is allocated, and moving processes in and out of main memory as needed.
Storage Management: Secondary storage (such as hard disks) is necessary to provide large-capacity non-volatile storage. The operating system makes the computer more convenient for users by hiding the physical details of the myriad of types of storage devices behind a single abstraction: the concept of a file. The operating system is then responsible for supporting the logical file system (including providing mechanisms for creating, deleting, and modifying files and directories) and for mapping the logical operations onto the physical storage devices.
|Assignments and Evaluation||
Exams: There will be a midterm exam with both an in-class and a take-home component, and there will be a take-home final exam. More information about the exams will be provided closer to the exam dates.
Homework: There will often be one or two homework problems assigned in class, due at the beginning of the next class. Come to class on the due date prepared to discuss the homework. Problems will be announced in class and posted on the course webpage. Homeworks must be legibly written - typing is preferred, but neatly handwritten assignments are acceptable. The two lowest individual problem scores will be dropped when computing the homework component of the final grade. See the course policies for the late policy and collaboration policy for homeworks.
Projects: A core element of the course will be programming projects, in which you'll get hands-on experience with many of the theoretical concepts covered by implementing major components of an operating system. Unless otherwise noted, 50% of the grade on each project will be based on design and the other 50% on the implementation. This is to emphasize the importance of developing a good design before starting the implementation, and to reward a good design even if the implementation isn't completely in place. See the course policies for the late policy and collaboration policy for projects.
Final Grades: Final grades in this course will be computed as follows:
On-time attendance and class participation (see the course policies) are expected, though they are not formally factored into your final grade. However, missing class - for any reason - often results in lower grades because important material was missed. Similarly, not participating in class even if you are physically present may mean that you aren't actively following the material and thus may be missing more sophisticated or subtle points. Whether or not your grade is impacted for these reasons is up to you - it is your responsibility to get notes from another student or otherwise catch up on missed material. Also note that class participation and the number of unexecused absences are considered when deciding whether or not to round up a final grade which is just below a grade-level cutoff. See the course policies for the definition of unexcused and excused absences.
There are no officially scheduled extra credit assignments - do your best on each regular assignment as it comes along, rather than blowing something off with the idea of making up for it later with extra credit. That being said, there may be opportunities for extra credit on some assignments. Extra credit problems, if present, are likely to be longer, harder, more sophisticated, and/or trickier than the regular problems. You should view extra credit as a bonus for going deeper into the material rather than as a safety net.