CS 3013 A-Term 2000
More detailed information can be found here, including: time and place, purpose, prerequisites, books, grading, cheating, and
Here is the list of topics covered in this course. The mapping to chapters from the text may be modified as the course progresses.
The reading material for the various chapters, laid out roughly as it is presented in class, is as follows:
You should check out the assignment timeline to help you plan for doing homeworks, projects and exams.
Slides from the in-class lectures will be available shortly after they are presented, depending upon how things go. Here is what we have so far:
Admin | ppt | |
Introduction | ppt | |
Processes | ppt | |
Scheduling | ppt | |
Synchronization | ppt | |
Threads | ppt | |
Memory Management | ppt | |
Virtual Memory | ppt | |
Files | ppt | |
I/O Devices | ppt |
There are 3-4 short homework assignments. Homeworks are to be turned in individually. Discussion of problems among students is encouraged, but when it comes to ultimately solving the problem, your answers must be your own.
Homework and due-dates will be placed here as they are defined. Here is what we have so far:
The projects (I often call them labs) are the programming assignments you will have for the course. You must work in groups of 2 for the projects. Within the first week, you must form groups and inform the TAs (cs3013_ta@cs.wpi.edu). Groups of 3 are possible, too. Working in groups will give you valuable ``real-world'' experience as well as provide you with a ``built-in'' source for help. Do remember, however, that all exams will be taken alone. Make sure each group member understands the programs completely!
Another constraint is that the labatory you will use for the assignments has only 30 machines. Your group will be assigned a machine to use for the projects, although you can use alternate machines (when they are free) for browsing, etc. Note that each group will have priority on it's machine, even if others are using it. Please see the Fossil Web page for more information.
You will need to turn in your assignments on-line using turnin.
In this section are any code samples discussed in class, practice exams or any other demonstration-type class materials.
Here are some samples showing the use of software signals:
signal.c
- simple use of a Unix signal handler.
signal2.c
- another simple use of a Unix signal handler.
signal3.c
- still another simple use of a Unix signal handler.
signal-usr.c
- using user-defined signals
signal-alarm.c
- using signal to catch alarms.
signal-child.c
- using signal for parent-child communication.
Final exam stuff:
Mid-term stuff:
Here are some sample programs concerning Unix Process stuff:
fork.c
- Simple use of
the fork()
call
execl.c
- Simple use
of the execl()
call
micro-shell.c
- a
very simple Unix shell written in C.
Here are some code samples from the SOS:
dispatcher.c
- the dispatcher code
system.h
- the
global system header file
timer.c
- the
procedure called when a timer interrupt occurs
semaphore.c
- the
semaphore implemenations
use-proc-table.c
-
code showing two-processor solution to access processor table
system-thread.h
-
changes to the system header file to support threads
obj-module.c
-
a sample object module
Here are some sample semaphore and shared memory programs:
critical.c
- critical section without using semaphores example
(compile with gcc critical.c shm.c
).
critical-sem.c
- critical section using semaphores example
(compile with gcc critical-sem.c shm.c
).
shm.c
- shared memory wrappers needed to compiled the "critical" samples
shm.h
- header file for shm.c
critical-sem.c
- critical section using semaphores example.
ipckill
- nifty utility to help clean up resources.
Fresh from the minds of professors Claypool, Finkel and Wills comes the Free/Open Source Laboratory (aka the "Fossil lab"). The Fossil lab is funded under an NSF grant designed for laboratory use in the cs3013 (Operating Systems) and cs4513 (Distributed Computing Systems) courses. The lab includes 30 brand-spankin' new PC's running Linux on a dedicated network and a server running Linux for use as a router and firewall. Students using the Fossil lab have the opportunity to run experiments on a dedicated machine, do some kernel "hacking" and gain valuable system administration experience that is not possible in current CS laboratory environments.
You might also want to check out "The Cathedral or the Bazaar", an interesting look at open source software development.
Some useful course material (e.g. slides, notes, Java simulations, etc.):
You can also have a look at the Yahoo! Operating Systems pages and related WWW pages:
Or perhaps you would like to know more about some of the companies involved in commercial Operating Systems: