More static, but detailed information can be found here, including: time and place, purpose, prerequisites, books, grading, and computer systems and labs.
Here is the list of topics covered in this course.
You might check out the assignment timeline to help you plan for exams, homework and projects.
The reading material for the various chapters are as follows:
Slides from the in-class lectures will be available the day following class. Here are the electronic versions of what we have so far:
|Parallel Systems and Threads||ppt|
|Virtual Memory Management||ppt|
|Final Exam Review||ppt|
There are 4 (maybe 3) 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:
There are 4 (maybe 3) programming projects that are designed to give you some coding experience and expose you to practical systems issues.
You will work alone or in a group of two for the project. I'd prefer to limit the groups to only 2, but groups of 3 are also possible. If you really want a group with a different number of students, come talk to me.
Projects and due-dates will be placed here as they are defined. Here is what we have so far:
In this section, there will be code samples discussed in class, practice exams or any other demonstration-type class materials.
Final exam stuff:
Some sample thread code that adds and subtracts
an integer (compile with
add1.c- add and subtract to an unprotected variable.
add2.c- add and subtract to an variable protected by a mutex
Sample code for using TCP sockets:
get-opt.c- code that parses command line arguments (fairly) painlessly.
make-zombie.c- code that shows how zombies are created.
make-orphan.c- code that shows how orphans are created.
Here are some sample programs concerning Process stuff :
Here are some code samples of 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 a two-processor solution to access processor table
mem-alloc.c- code to show basic memory allocation
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.
Here are some code samples from Linux:
sched.c- the main kernel scheduling code
sched.h- the header file for
linux-pcb.h- the Linux process control block (pcb) structure.
Linux is a completely free Unix operating system. Linux runs primarily on 386/486/Pentium PC's, but has been ported to various other architectures. If you like Unix, want to learn more about system administration and have access to a PC, I recommend checking it out. Read a short info sheet or a more detailed info sheet for more information. You might also want to check out "The Cathedral or the Bazaar", an interesting look at open source software development, such as Linux.
You might also try the Linux Source Navigator, a CGI interface to browse the entire Linux kernel source. The Navigator formats the raw source tree on-the-fly, using italics, bolds, colors and hyperlinks to present the source in a much more managable format. Right now, there's just a 2.0.0 kernel set up to use i386 architecture, but more versions may be there shortly.
Some useful course material (e.g. slides, notes, Java simulations, etc.) includes:
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: