This program requires the analysis, implementation, testing and documentation of C programs that implement a server process and client processes communicating with each other via interprocess communication. The data will be read from a file instead of sending it from the client to the server.
PART 1: Implement a deadlock detection algorithm. More information on the algorithm will be provided to the coder.
The input is Request Matrix, Allocation Matrix, Available Resource Vector and Existing Resource Vector. The program should determine whether there is deadlock in the process state given in the Allocation Matrix depending upon the state of the Request matrix and what the deadlocked processes are.
The program should read data from a file. For example, the input file format is:
4 4 //The # of processes is 4, the # of resource types is 4
2 0 0 1
1 0 0 1
2 1 0 0
2 0 1 0 //Request Matrix representing requests from clients
0 0 1 0
2 0 0 1
0 1 2 0
0 0 0 0 //Allocation matrix representing what is already allocated to clients
2 3 0 0 //Available vector
4 4 2 1 //Existing resource vector
The program should print output like:
"There are deadlocked processes, they are process 0 and process 1."
PART 2: Implement Deadlock Recovery by using Recovery through killing processes strategy. (More information available on this upon request)
The program should terminate one of the processes causing deadlock and return its resources to the Available Resource Vector. This is done until there are is no deadlock in the system. Then the processes that are killed are restarted at some random point of time in the future.
The output will be a sequence of the Request Matrices in such a way that all the processes terminate successfully.
This program MUST be completed successfully within the allowed time frame. Late code can not be accepted and therefore all money will be refunded to me if the program is late.
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
This program must be written in C and compile using gcc on the Sun system in UNIX.