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
(general information about the course, including assessment)
(course policies on attendance, collaboration, late/makeup work, and other things)
(syllabus, including links to handouts, assignments, reading material...pretty much everything you want on a daily basis is here)
(everything you need to know about using Nachos)
(information about C/C++ language features which may be unfamiliar)
(lots of useful information about the Linux systems at HWS)
(review of basic Linux commands e.g. mkdir, ls, cd, cp, ...)
[11/4] I will not be in on Tuesday 11/8 (and there will not be office hours that day). I will check email periodically throughout the day, however.
[10/14] Due to the system downtime last night, the deadline for homework #10 has been extended until Monday. Because #4 was discussed in class, if you were assigned that problem and you have not already handed in your homework, pick one of the other problems in group 2 (either #5 or #6) to do instead. You also have until Monday to complete any bonus questions, even if you have already handed in other problems. #4 is off-limits for bonus points, but any of the other questions are eligible.
[10/13] Since there's at least one conflict with parents weekend, the due date for the take-home part of the midterm has been extended until Wednesday 10/26. Note that this does now overlap with the beginning of the Nachos multiprogramming project - plan accordingly. The in-class part will still be in class on Friday, 10/21.
[10/11] A solution for the sleeping barber problem, along with some discussion of its correctness along the lines of what I was looking for in the design document, is posted on the syllabus page.
[10/10] Information about the upcoming midterm exam has been posted on the syllabus page. It has an in-class part and a take-home part, which you have a weekend to complete. If you have conflicts which prevent you from taking either part during the scheduled time, let me know ASAP.
[10/5] Information about the writing and compiling user programs has been added to the Nachos practicalities page.
[10/5] Information about the bonus possibilities on project 2 has been added to that page.
[10/4] The second Nachos project (user processes) has been posted on the syllabus page. Information about the bonuses will be added to the handout shortly. There have also been some updates to existing Nachos documents:
Some additional sections relevant to this project have been added to the Nachos Companion (mostly in sections 4 and 5).
Some updates have been made to the Nachos Practicalities document, mostly in the directory structure. Information about writing and compiling your own user programs will be added shortly. (You can get a long way through project 2 before needing to write your own user programs.)
[9/27] If you are confused by 'i' and 'j' in the hw #8 problem, check out the clarifications posted on the homework page.
[9/19] Nachos project #1 (synchronization) has been posted on the
syllabus page. Feel free to get an early start! We haven't discussed mutex
locks (not addressed in the book) or monitors/condition variables in class
yet, but between the reading and the project handout, you should be able to
start thinking about the assignment.
The project is due two weeks from Wednesday (10/5). There are a number of parts and writing properly synchronized programs can be tricky, so start early and work steadily (i.e. don't leave it all to the last minute).
[9/19] Office hours on Tuesday 9/20 will be from 2:30-4pm, due to a department meeting.
[9/8] Department picnic! Tuesday 9/20 at 5pm in the Lansing-Rosenberg-Eaton Quad, to be followed by a showing of all three Wallace & Gromit short features on the big screen in Albright Auditorium. (Rain location: Albright lobby.) All majors, minors, and wannabes are invited!
[9/8] Department search: The Math/CS department is still looking to hire a new faculty member in computer science. Students play an important role in the selection process. We are currently looking for students to be on the search committee, which entails (at a minimum) coming to candidates' talks and meeting with candidates when they visit campus. If you are or are thinking about majoring/minoring in CS, then you have a vested interest in who gets hired since you'll most likely be taking classes from them - so participate in the process! If you are interested in participating, please let me or Professor Mitchell know. Note that candidates won't be visiting campus until January/February, so this isn't something you have to fit into your schedule this semester.
[9/6] There is a bug in the comments for simpleshell (hw #3) - the comment for step (3) should read "if background == 0, the parent will wait..." (not 1). This has been corrected in the file, so if you haven't copied the file yet you don't need to worry.
[9/4] Office hours on Monday 9/5 will be 1:45-3pm instead of the usual time, because of a meeting I need to attend.
[9/4] Class on Friday 9/16 will introduce Nachos and will deal with the Nachos thread system as a concrete example of how threads might be supported in a kernel. There is a lot to absorb about Nachos and you don't need to do it all immediately, but class will be more meaningful if you have gotten far enough into the process to identify questions that you may have. The Nachos-based projects will begin on 9/21 and the better your understanding of Nachos when you begin, the more smoothly the projects will go.
[9/4] A solution for homework #1 has been posted, and is available via the syllabus page. Solutions to selected homework problems will be posted.
[9/2] The system-call example from class has been posted on the syllabus page. All in-class programming examples will be posted.
[8/29] The first homework problem is posted on the syllabus page, due on Wednesday 8/31. Remember to check the syllabus every class day for new homework problems.
[8/29] There will be no office hours Friday 9/9 through Thursday 9/15. (I'll be away at a conference.)
[8/29] Welcome to CPSC 331! This web page is your source for a great deal of important and useful material, so you should take a few minutes to familiarize yourself with the website. Check back often for announcements and new information.