CS 3013 A-Term 1999
More detailed information can be found here, including: time and place, purpose, prerequisites, books, grading, cheating, and computer systems and labs.
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 are as follows:
You might 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:
There are 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:
The projects (I often call them labs) are the programming assignments you will have for the course. I encourage you to work in groups of two for the projects. I'd prefer to limit the groups to only 2, but if you really want a larger group, come talk to me. 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!
tar xvf
to extract)
With the exception of project 0, you will need to turn in your assignments on-line. Check here for information on how to turn in your assignments.
In this section are any code samples discussed in class, practice exams or any other demonstration-type class materials. Samples will be updated soon after the discussion in class begins.
Final exam stuff:
Here is the simple "Up Yours" client-server example that shows the use of threads as in Project 4. They use the same socket libraries as the client-server sample from Project 3:
server.c
- the "Up Yours" server.
client.c
- the "Up Yours" client.
server.h
- the "Up Yours" header file.
Makefile
- the Makefile to build the client and server.
Here are the demos that have separate add and subtract threads that access a global variable:
add1.c
- add and subtract to an unprotected variable.
add2.c
- add and subtract to an variable protected by a mutex.
Makefile
- the Makefile to build the add programs.
Misc:
get-opt.c
- code that parses command line arguments (fairly) painlessly.
Here is the simple "Bite Me" client-server example that shows the use of the socket wrappers used in Project 3:
server.c
- the "Bite Me" server.
client.c
- the "Bite Me" client.
server.h
- the "Bite Me" header file.
sock.c
- the socket wrapper code.
sock.h
- the socket wrapper header file.
Makefile
- the Makefile to build the client and server.
Mid-term stuff:
Here are some sample semaphore and shared memory programs:
critical.c
- critical section without using semaphores example.
critical-sem.c
- critical section using semaphores example.
ipckill
- nifty utility to help clean up resources.
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 sample curses
programs:
bounce.c
- a
sample program showing a curses "ball" bouncing around a box.
walk.c
-
a sample program showing how to make a person "walk" around a box.
get-key.c
-
a sample program showing how to capture keyboard input.
Here are some sample Java programs:
Exec.java
- Shows
how the exec()
call works.
PropertiesDemo.java
-
Shows how to get and set system propeties.
ReadStdIn.java
- Shows how to read from the keyboard.
StringDemo.java
- Shows a
demo of some string manipulation routines.
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
use-proc-table.c
-
code showing two-processor solution to access processor table.
obj-module.c
-
basic object module for a program.
Here are some code samples from Linux:
sched.c
- the
"dispatcher" in Linux.
sched.h
- the system
header file in Linux
linux-pcb.h
-
specific fields of the Linux process control block (pcb)
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.) 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: