The Distributed Shared Memory client and server are fully implemented with
multicasting, multithreaded over UDP protocol. Multicasting realiability is built
into mdsmc using select with a timeout value. If timeout occurs mdsmc resends
reqeust to multicast groups until all servers reply. mdsmd is multithreaded, each
request occurs in its own thread. Race conditions are prevented by using mutex.
Mutex locks the entire table DSM table for new and delete requests, and locks the
respective table entry for read and write reqeusts. mdsmc sends all requests to
mcast group through the mcast socket specified by command line arguments. All
replies are received on a separate receive socket. mdsmd receives all requests
through mcast sockets specified by command line arguments. All replies are sent on
a separate unicast socket.
[view the full project...]