CS 485: Networked Operating System Programming
- Assignment 3! 2007.
- CS485 forum Administrated by Johnathan Kupferer.
- The uic web proxy should now be working with rites.uic.edu
- Assignment 2! 2007.
- Assignment 1! 2007.
- Programs due at start of class via both turnin and list. Programs should be listed using "enscript -Ecpp -G" with include files first in alphabetical order followed by c++ files. Your programs should be self testing, as described in class, and the test results should be included.
- For a general introduction to the structure of OS, see Maurice Bach.
Workload and needed backgroundAs mentioned many times in the first two weeks of the course, the workload in this course is higher than any other in the CS department. This course is the equivalent in work of at least 2 other 400 level courses It is also consistently rated as one of the best courses in the department.
A solid background is needed in C++ programming and in Operating Systems. In addition, courses in network and transactional databases are helpful.
The course work consists of:
- 6-8 Programs
- 2 tests
- 1 final
Tests will cover conceptual issues from kernel design and programming techniques covered.
Please note that 485 is the most rigorous course in the department. It is an enormous amount of work and requires a strong background. Do not take the course unless you are prepared to meet its challenge.
Students who are caught cheating will immediately fail the course, and have the cheating recorded in their record. For 1st year graduate students (because this is a 5 hour course), this usually results in expulsion from the program. Students who already have been caught cheating will go through disciplinary hearings, with the goal of having them expelled from the university.
Students who fail to demonstrate on tests an understanding of the programs they have handed in will fail the course.
You are not to show your program to anyone nor to look at anyone else's program. You may discuss programming concepts but only in general term.
This course covers network programming and systems programming from the operating system viewpoint. Special emphasis is given on standards based APIs, with explanation of typical interfaces.
- The Unix Kernel and Processes System calls, POSIX and XOPEN APIs, Kernel design, Processes
- Signals POSIX signals, signal handlers, default actions
- Creating New Processes fork, wait, waitpid, exec
- File systems File Table, File Descriptor Table, open, close, write, read, dup.
- Inter-Process Communication pipes, named pipes, message queues, shared memory, and semaphores
- Networking Ethernet, internetwork, naming, ip numbers and resolution, ARP, IP semantics.
- Sockets TCP and UDP.
- Remote procedure call OmegaRPC.
- UNIX Network Programming, Richard Stevens, Volume 1, Second Edition, Sockets and XTI, Prentice Hall, 1998, ISBN 0-13-490012-X.
- UNIX System Programming using C++, Terrence Chan.
- The Design of the Unix Operating System, Maurice Bach, Prentice Hall. (Dated description of Unix internals, but very readable)
- POSIX.4:Programming for the Real World, Bill O. Gallmeister, O'Reilly and Associates. (The book on real-time POSIX programming covering IPC, async. I/O, and more).
- Computer Networking: A Top-Down Approach Featuring the Internet, 3rd Edition, James Kurose and Keith Ross.
- Computer Networks (3rd Edition), Andrew S. Tannenbaum, Prentice Hall. (Detailed coverage of low level network stuff)
- Computer Networks: A Systems Approach Larry L. Peterson and Bruce S. Davies, Morgan Kaufman. (More advanced coverage then Tannenbaum)
- The Magic Garden Explained, Benny Goodheart and James Cox, Prentice Hall. (Describes basis for Solaris [SrV5R4] internals).
- STL Tutorial and Reference Guide David R. Musser and Atul Saini, Addison-Wesley.