Project Specification - Distributed Shared Memory at the File Level of Granularity

Windows NT provides for sharing of memory sections and files among processes on the same execution platform. It also provides a network file system. The goal for this project is to build subsystem which could support sharing files across multiple Windows NT execution platforms with release consistency semantics when similtaneous updates can take place at the level of views. To keep the problem simple sharing will be restricted to no more than three systems. This project is to design and implement such a capability for controlled sharing of files across multiple copies of Windows NT. The capability desired is:

a) C and/or C++ programs must be able to share read/write access to a single copy of a file and similtaneously update disjoint views of a file.

b) The consistency model is to be release consistency.

c) Be able to open the same file on three different NT execution platforms with specification of access mode on each open. The access modes are read and read/write.

d) Be able to execute similtaneous write operations (on different views of the file) on the two platforms with maintenance of consistency through use of appropriate synchronization operations. For example, if both processes open the file for writing then the updates from each processor will be merged in the order in which they occur. Each process will see the modifications made by the other process immediately immediately following execution of the appropriate synchronization operations.

d) The implementation should be as an NT protected subsystem which is actually a runtime system library. The implementation should be in either C or C++. The implementation should use the Win32 interface as much as possible.

e) The operations to be implemented include:

i) Open_Shared_File Open a file for shared read or read/write (The file may reside in the local file system of either platform.)

ii) Define_View - define a view of the file and insure it is disjoint from any other view.

iii) Map_View - Map the views of the file to each workstation.

iv) Release_with_Merge - Merge the results of an update to a view into the master copy of the file.

iv) Close_with_Merge which integrates the updates in each view.

The work products for the project include:

a) Specification of the file sharing subsystem user interface including file open and synchronization operations

b) Specification of the protocols for use of the synchronization operations.

c) Specification of the data structures which define the state of the subsystem.

d) Specification of the internal flow of control in the subsystem as it implements each function.

e) Specification of the test programs for the file sharing file subsystem. ( Source code, inputs and outputs)

f) The actual code for the file sharing subsystem.

g) Output of the test cases and demonstration that the system works.

The resources which are available include:

a) Reference books from Microsoft.

b) NT source code

c) Access to NT with compilers