The Network RamDisk server is a user level program listening to a socket and accepting connections from the NRD clients. Each client is served by a new instance of the server which accesses the same portion of the local workstation's main memory to store the client's disk blocks. When the client makes a read request, the server transfers the requested block(s) over the socket. When the client makes a write request, the server reads the incoming block(s) from the socket, and stores them in its main memory. The server is also responsible for providing periodically (or on demand) information to the client concerning its memory load. An NRD parity server process is by no means different than a storage NRD server one. It just performs block read and write requests responding to client requests without knowing whether it stores memory blocks or parity blocks.
The implementation of the NRD server as a user process offers the advantage of using machines with different Unix-based operating systems as servers, because the porting of such user-level programs is very simple. We have used machines running Digital Unix 4.0 and Solaris 2.6 as NRD servers, and have also ported the server side on the SunOS and Linux operating systems.