CS 537: Introduction to Operating Systems
Lecture 2
Spring 2004

Most recent news: Final Grades

Lecture: Tuesday and Thursday at 11:00am - 12:15pm
Discussion: Thursday at 2:25pm - 3:25pm
Where: 1325 Computer Sciences (Timetable Entry)

Instructor: Anoop Gupta
Office: 1308 Computer Sciences
Office Hours: Tue 2-3pm, Fri 10-11am, and by appointment (e-mail)
Office Phone: 262-6602
e-mail address: ganoop@cs

TA: Alan Bailey
Office: 1331 Computer Sciences
Office Hours: Mon, Wed 12:00-2:00pm, and by appointment (e-mail)
e-mail address: awbailey@cs

TA: Minyi Xu (Mike)
Office: 1343 Computer Sciences
Office Hours: Mon, Thu 3:30-5:30pm
e-mail address: minyi@cs



Watch this space for the latest updates. Last updated: Thu May 13 17:23:54 CDT 2004
May 13: Final grades have been assigned and can be seen in the grade file in your handin directory.
May 11: You have until Wednesday, May 12, 2 pm, for any appeals on P5 and Final Exam. Grades will be finalized after that, with no more appeals entertained.
May 11: Final exam is graded. You can see your final class rank in the grade file in your handin directory. The distribution for final exam is:
Score 55-59 60-64 65-69 70-74 75-79 80-84 85-89 90-94 95-99
Count 2 3 3 5 3 7 11 6 1
Count 41, mean 79.95, median 83, standard deviation 10.524.

May 11:
Project 5 has been graded and details are as usual in the p5_grade.txt of your handin directory.
Score 65-69 70-74 75-79 80-84 85-89 90-94 95-99 100
Count 3 1 2 3 6 3 13 10
Count 41, mean 90.88, median 95, standard deviation 9.935.
May 03:
The final exam will be in room 1221 COMP S&ST on Monday, May 10, 12:25 - 2:25 pm.
May 03: CSL End of Semester Announcements about your CS login accounts.

News Archive


CS 537 is intended as a general introduction to the techniques used to implement operating systems and related kinds of systems software. Among the topics covered will be process management (creation, synchronization, and communication); processor scheduling; deadlock prevention, avoidance, and recovery; main-memory management; virtual memory management (swapping, paging, segmentation and page-replacement algorithms); control of disks and other input/output devices; file-system structure and implementation; and protection and security.

This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in CS354) and data structures (e.g., stacks and hash tables). You will need to be able to program in Java to perform the assignments in the course.

Lecture Information

11:00 - 12:15 Tuesday and Thursday 1325 Computer Sciences
2:25 - 3:25 Thursday 1325 Computer Sciences

Lecture 1 of this course is being taught by Prof. Marvin Solomon this semester. It will be very similar to this lecture. In particular, the two lectures will use the same projects.

Important announcements will be sent to the class mailing list or will be posted to the News section above, so please read your mail frequently and watch for the news on this page (particularly around project time)! You are responsible for the material sent to that list and for announcements in the class. The mail sent to the class list is also archived. Note that if you are not officially enrolled in the class, we cannot add you to this mailing list because it is automatically generated by the CSL. Talk to them if you are having trouble.

There are three mailing lists associated with this class, cs537-2list@cs.wisc.edu for lecture 2 (this lecture), cs537-1list@cs.wisc.edu for the other lecture, and cs537-list@cs.wisc.edu, which goes to both sections. These lists are also archived -- see cs537-1list, cs537-2list, and cs537-list. Each message sent to these lists goes to all students (over 60 students per lecture), so before you post, please consider whether your message is likely to be of interest to the whole class. Help avoid spam! Questions about projects, etc. are better sent to the instructor or ta, who will relay them to the whole list if appropriate.



Applied Operating Systems Concepts, Sixth Edition by Abraham Silberschatz, Peter Galvin, and Greg Gagne, John Wiley and Sons, 2003.
This text is only recommended rather than required, since the main "text" for this course is a set of online lecture notes. This book is useful for reference, for an alternative point of view, and for those who like the security of having a large, heavy, and expensive book to turn to. I chose this book because it is the most widely used text book for a course like this one. Used copies should be available at the bookstore.

The Fifth Edition may be used interchangably for the purposes of this course.

Another recently used text book that covers the same material is Modern Operating Systems, Second Edition by Andrew S. Tanenbaum, Prentice Hall, 2001.

The Java Programming Language, Third Edition by Ken Arnold, James Gosling, and David Holmes, Addison-Wesley, 2000.

There are literally thousands of books on the Java programming language and I have only looked at only a few of them, so there may very well be a better book, but this one is quite good.

Online References

There is a set of online lecture notesfor this course by Prof. Marvin Solomon (instructor for CS537 Section 1). Lots of additional helpful materials about Java are available on the web.

The following references are available online at the Java home site.

You will be referring to the last of these particularly frequently.


There will be five programming projects, all in the Java programming language. Unix workstations are provided for your use, but you may use any computer to which you have access that implements the Java programming language (version 1.4.2). However, if you do not use the Computer Sciences Department's computers, you will be responsible for transferring any required data sets or software packages to your computer and for tranferring programs and results back to the CS department machines to hand them in.

The first assignment will be an easy "get acquainted" exercise designed to help you become familiar with the computing environment and the Java language, particularly the Thread feature of Java. Subsequent projects will involve process synchronization, processor scheduling, memory management, and file-system implementation. Each student should do the first assignment individually. For the remaining projects, students will be required to work in groups of two students because it is important to know how to work well in a group. Both members of a pair will receive the same grade on a project. Feel free to discuss projects with anyone, but you must not share code with anyone but your partner. That means you may not use in any way code written by other students in this class, code from previous semesters, or code from similar courses elsewhere. In summary, the only Java code you may use is code you write, code we give you, and Java classes from the standard Java libraries. Cheating will be vigorously punished. See the student handbook for more details. Enough said!

Assignments are due at 1:00 a.m. on the dates indicated.

Why Java?

Sometimes the projects in this course are in C or C++, sometimes they are in Java, and sometimes they are in a mixture of languages. This time we will be using only Java in both Lecture 1 and Lecture 2. There are several arguments in favor of Java, but two in particular are most relevant to this course:

This course will assume that all students are Java programmers at the level of someone who has completed CS 367 with an A or AB. If you are familiar with C++ but not Java, check out the excellent introduction to Java and/or Prof. Solomon's tutorial Java for C++ Programmers. See The Java Tutorial and/or the Java book for lots more information about Java.


There will be a midterm and a final exam, each of which will count for 19% of your grade.
The midterm will be 7:15-9:15 PM Wednesday, March 10, room 1221 Computer Sciences.
The final exam will be 12:25 - 2:25 PM Monday, May 10, room 1221 Computer Sciences.

The first programming project (getting started) will count for 2% of your grade. The remaining four projects will account for the remaining 60% of your grade. They may not all be equally difficult (generally they will get progressively harder throughout the term), but they will all count equally.

Course Schedule

The following schedule is tentative; it may be updated later in the semester, so check back here frequently.

Week Dates Topic
1 Jan 20 Introduction
2-6 Jan 22 - Feb 19 Processes, Synchronization, Processor Scheduling
6-11 Feb 24 - Apr 6 Memory Management and Virtual Memory
11-14 Apr 8 - Apr 22 File Systems and Disks
14-15 Apr 27 - May 4 Protection and Security
Programming Assignments
3 Wednesday, Feb 4 at 1:00 am Project 1 -- Shell
6 Wednesday, Feb 25 at 1:00 am Project 2 -- Synchronization
9 Thursday, Mar 25 at 1:00 am Project 3 -- Performance
12 Friday, Apr 16 at 1:00 am Project 4 -- File Systems, Part I
15 Friday, May 7 at 1:00 am Project 5 -- File Systems, Part II
8 Wednesday, Mar 10 Midterm Exam, 7:15 - 9:15 pm, room 1221 Computer Sciences
16 Monday, May 10 Final Exam, 12:25 - 2:25 pm, room 1221 Computer Sciences

Lectures & Discussions

Tuesday Lecture Thursday Lecture Thursday Discussion
20-Jan Introduction 22-Jan Processes Project 1
27-Jan Synchronization 29-Jan Synchronization & Semapores Java Thread States
03-Feb Semaphores (cont...)
05-Feb Examples & Monitors
Reading Assignments
10-Feb Monitors, Message Sys, Deadlocks
12-Feb Deadlocks & Process Scheduling Project 2
17-Feb Scheduling Algorithms 19-Feb Review 1 Java Synchronization (Alan)
24-Feb Memory Management 26-Feb Memory Management (cont...) - office hours -
02-Mar Memory Management & Paging 04-Mar Review 2 - office hours -
23-Mar Paging 25-Mar Paging - office hours -
30-Mar Paging(for multi-processes) 01-Apr Segmentation Review: Paging
06-Apr Disk Structure 08-Apr FileSystem Project 4 (Alan)
13-Apr FileSystem - Implementation 15-Apr FileSystem - Implementation (cont) Project 4 (Alan)
20-Apr More About FileSystem
22-Apr RAID Project 5 (Alan)
27-Apr Protection and Security
29-Apr Cryptography
Project 5 (Alan)
04-May Final Review 06-May - office hours - Project 5 (Alan)

Thu May 13 17:23:54 CDT 2004
CST 2004

Copyright ©2004 by Anoop Gupta. All rights reserved.