class: cs3013@cs.wpi.edu
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. They will be
mapped to chapters from the text as the course progresses. See the reading details for a more in-depth breakdown
on the book chapters. Slides from the in-class lectures will be
available shortly before they are presented (or shortly after they are
presented, depending upon how things go).
There is now a new top-level slide
page.
- Introduction, (week 1), Ch 1-3
- Motivation
- History
- Operating System Concepts
- Operating System Structure
- Processes, (week 2-3), Ch 4-6
- Introduction
- Scheduling
- FCFS
- SJF
- Priority
- Round-Robin
- Multi-Level Queue
- Synchronization and IPC
- Critical Regions
- Semaphores
- Conditional Critical Regions
- Monitors
- Message Passing
- (Midterm exam)
- Memory Management (week 4-5)
- Swapping
- Paging
- Segmentation
- Virtual Memory
- File Systems (week 6-7, as time allows)
- Interface
- Implementation
- Secondary-storage
- Misc (week 6-7, as time allows)
- I/O Devices
- Protection and Security
- Distributed Systems
- Network Structures
- Distributed File Systems
- Coordination, RPCs, ...
- (Final exam)
There will be 4-5 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:
- Homework 1, (Due Tuesday, September 9th), Solution
- Homework 2, (Due Tuesday, September 16th), Solution
- Homework 3, (Due Tuesday, September 23rd), Solution
- Homework 4, (Due Tuesday, October 7th), Solution
- Homework 5, (Due Tuesday, October 14th), Solution
The projects 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!
The projects and due-dates will be placed here as they are defined.
Here is what we have so far:
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.
Sample final exam questions that might
help you prepare for the real thing (with a Solution!).
Sample midterm exam questions that might
help you prepare for the real thing.
Samples for files, command line arguments and sockets shown in
class. These should be helpful for Project 4.
-
Makefile
-- the makefile used to build these samples.
-
mfs.c
-- the
client code using sockets.
-
mfs-server.c
-- the
server code using sockets.
-
server.h
-- shared header file between the mfs client and mfs server.
-
sock.h
-- the
socket wrapper prototypes.
-
sock.c
-- the
socket wrapper source.
-
fileio.c
-- code
that does unbuffered fileio.
-
fileio-stream.c
-- code that does buffered fileio.
-
get-opt.c
-- code that parses command line arguments (fairly) painlessly.
-
ls.c
-- code that does a bare-bones ls
.
Samples of the message queue client and server shown in class. These
should be helpful for Project 3.
-
Makefile
-- the makefile used to build some these samples.
-
q.h
-- the
shared header between the client and server.
-
q-client.c
-- the
client code.
-
q-server.c
-- the
server code.
-
msq.c
-- the message
queue wrapper source.
-
msq.h
-- the message
queue wrapper header.
A few samples that might be helpful/interesting (note, some of
these are compiled with the wrappers given for Project 2):
-
sem.c
-- an example
showing simple semaphore use.
-
critical.c
-- an example
showing how access to an unprotected critical region can lead to
problems (if you run two or more of these at once).
-
critical-sem.c
-- the same critical section code sample protected with semaphores.
-
pipe.c
-- simple use of the Unix pipe.
-
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.
-
creat.c
-- a way to use files for semaphores (sort of).
-
signal-usr.c
-- using user-defined signals
-
signal-alarm.c
-- using signal to catch alarms.
-
signal-child.c
-- using signal for parent-child communication.
-
signal-child.c
-- using signal for parent-child communication.
-
pointer.c
-- simple print a pointer stuff.
-
file-copy.c
-- time a file copy of 1MB.
-
mem-copy.c
-- time a memory copy of 1MB.
-
Makefile
-- the makefile used to build some (only some) of these samples.
Every class day, I will try to put an advanced question related to an
in-class lecture topic. If you feel up to the challenge, check out
the question, think about it and email me your answer. Your answers
will not be graded, per se, but correctly answering several questions
may help "bump" your grade to the next level if you are a borderline
case come the semesters end. Plus, you'll have fun!
Today's Question of the Day
Previous Questions of the Day
Some time ago, Andrew Tannenbaum (computer teacher/researcher) wrote a
critique of Linux (that set off a small flame war). Read his opinion about the merits and future of the
Linux design. Think about the "Microkernel" versus "Monolithic"
arguement as we explore operating system structure. The full
version is available in compressed, rmail format.
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.
A weekly column by Robert X. Cringely that provides a humorous but
profound look at the world of Information Technology.
"What makes
Cringely such an interesting writer is the way he combines a solid
understanding of technology, the ability to explain it simply, and an
irreverence for those who, at the highest levels, hawk it" IEEE
Spectrum, May 1997.
Your text book mentions the Nachos System in the Appendix (pages
699-714). Although this system is too advanced for an intro course on
operating systems, keen students may like to look further into the
Nachos software.
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 Operating Systems:
Mark L. Claypool (claypool@cs.wpi.edu)