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