Design and implement client program Client program communicates with server on the behalf of its application programs. Whenever application programs call file system calls, client intercepts these calls to check whther they are accessing local file system or remote file system. For remote file system, client calls remote procedures to access remote file system. Sever should not maintain any protocol state information about any of its clients in order to function correctly. That is, server is stateless.
Stateless servers have a distinct advantage over stateful servers in the event of a failure.
It is attractive that we can improve the performance by caching file data and meta data in both client and server main memories. Caching in client side can reduce the communication dramatically. To implement caching, cache consistency has to be dealt with since data and metadata can exist across separate executions. This propject also require expertise in UNIX file system calls and writing shared libraries.