
分布式系统进展(Distributed Systems)
Project 1
Due date:
March 21, 2007
For all projects in the Distributed Systems course, you will form teams of three students. For each project, you may pick a system/language you like, design the project, implement it, and write a project report about it.
The first project is related with the Readers and writers problem which is a classical example of resource management in concurrent programming. Two types of users, Readers and Writers, can access a shared file. The file is allowed to be read by many readers simultaneously, but to be written by a single writer at a time when no reader is reading.
In
this project, you are asked to solve the readers and writers problem by using
the client-server model and a kind of
communication facility. Your program consists
of several clients (readers and writers), a file
access authorization server, and a shared file bank
server. Clients may read/write different files or share a single file.
Before
a client being able to access a file from the shared file bank server, it must
first communicate with the authorization server to get a ticket (an encrypted
permission which can be decrypted only by the shared file bank server). The file
access authorization server receives requests from clients
and manipulates up to N different files. The request message involves
the following fields: the ID of the client, the type of the request
(R/W),
and the name of the file that the client wants to access. A transaction
of accessing a file from a client is as follows:
You should test your program by different cases. For example, suppose your system manipulate five files A, B, C, D and E. One possible test case is to start with 30 clients that randomly access (with 30 percent of writers) a randomly selected file. Each client repeat 100 times. You should design at least 5 different test cases and you should use at least 3 computers to run your project.
Project Report: the report is a short paper (2-4 pages) for what your project will be. It should contain a problem description and motivation, a description of the design of your solution, a description of your implementation, and an evaluation of how well your system solved the original problem.