This is a hands-on course in implementing fragments of advanced operating systems. Several fragments will be written by different groups of students, and will be merged into a complete operating system module. This year's topic is, again, network file systems, as implemented in the client-server model.
File server and client will be implemented on top of UNIX as user processes. They will use sockets or rpc for communication between client and server. After agreement on the protocol and service parameters by the entire class (see design sessions), each group will implement either a client or a server.
Temporally, the course will be broken down as follows:
This is a 2-cedit course, consisting of weekly 2-hour meetings, and is a valid (partial) replacement for the Project course. The course will contain an introduction section, several design, review, and integration sessions, and a presentation. Attendance of all these sessions or equivalent mandatory. Attendance of help sessions optional. Students will work in pairs. Each pair must choose and implement either a client or a server, but a roughly equal number of pairs for each fragment will be enforced.
Operating Systems is an absolute, inviolate, prerequisite to this course, as are any courses preceding it as prerequisites (such as Systems Programming, Data Structures, etc.).
These documents are agreed upon requirements for clients and servers, inlcuding agreement on protocols, etc. You may use design decisions from last year, as well as an already implemented client/server to test your own end of things.