This is a distributed system created for our Operating Systems course, MCON-234.
- A Server receives connections from Worker and Client programs
- The Server assigns an ID number to the Clients and Workers as they connect
- Clients send job descriptions to the server
- The Server assigns a job ID and puts the job on a queue to be assigned to a Worker
- The Server assigns the job to the Worker who will complete it in the least amount of time
- The Worker spends 2s completing a task it is optimized for, or 10s completing a task it isn't optimized for
- The Worker then informs the Server that it has completed the task
- The Server then informs the Client that its task has been completed
These programs are fully multi-threaded, and the Client and Worker programs communicate with the Server using sockets.