The project is to implement a SPIM based mini OS/application that demonstrates process creating/scheduling and InterProcess Communication.
* Implement cooperative processes by writing two routines: *pcreate* and *yield*. pcreate sets up a new process in the system. yield transfers control from one process to the other. Demonstrate the functionality of these by implementing a two process system that prints a random number of lines then yields. Be sure to implement an actual run queue using the FIFO that must be implmented in the next section.
* Implement a muxtex that uses a separate FIFO to transfer processes that are waiting to get into the critical section from the run queue. Two functions *mutex_in and mutex_out* must be implemented along with a modified sample of the above test processes to demonstrate. This section must implement a FIFO of Process Control Blocks that will be used by both the pcreate/yield functions and the mutex_in/mutex_out functions.
* Implement the Dining Philosophers' problem that happens to yield at the most inopportune moment: after getting the forks but before eating. When a process begins the thinking phase, generate a random number of cycles between 5 and 15 that the philosopher will [url removed, login to view] each philosopher print that they are thinking, then yield for the number of cycles specified. Obviously these DP processes must utilize the two sections above.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Installation package that will install the software (in ready-to-run condition) on the platform(s) specified in this bid request.
3) Exclusive and complete copyrights to all work purchased. (No GPL, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site).
Microsoft Windows XP