Nachos-dfs: Nachos plus Distributed File System Project


nachos-dfs is based on Tom Anderson's nachos-3.4. With nachos, students write an operating system in C/C++. The user programs run on a simulated MIPS R2000; they are written in C and cross-compiled for the MIPS. The main feature of nachos-dfs (compared to nachos-3.4) is a new project, the Distributed File System (DFS) project, which is offered as an alternative (or conceivably a supplement) to the File System and Network projects that come with nachos-3.4.

Compared to the nachos File System project, the DFS project emphasizes programming experience with different topics (namely, caching and message-based process synchronization, instead of directory data structures), which I think are more beneficial to students. I find the nachos Network project unsatisfying, because it does not involve user programs running on the simulated machine, so it does not build on students' work in previous projects.

Students implement a DFS in which each nachos process is both a client and a server. The nachos processes communicate using the nachos PostOffice (built on top of sockets). In addition to support for basic file operations on remote files, students implement client caching of recently-used blocks of remote files, with a timer-based invalidation mechanism to ensure that cached data is not too old.

I have used nachos-dfs under Linux (Red Hat 6.0) with GNU g++ and under Solaris with Sun CC and GNU g++. Additional information about compiling nachos-dfs and cross-compiling user programs is available from my OS course's Project Mechanics page.

For more information, see the nachos-dfs README and the Summary of Differences Between nachos-dfs and nachos-3.4.

I hope you find this project useful. Comments and suggestions are greatly appreciated.

nachos-dfs distribution (version 2.1, December 1999) (350 KB)

Scott D. Stoller Telephone: 631-632-1627
Computer Science Department FAX: 631-632-8334
Computer Science Bldg, Room 1429
Stony Brook University
Stony Brook, NY 11794-4400
My PGP Public Key

Last modified: 8 November 2012