|
USM LINKS Computer Science
WEB PAGES CMInfo
RESOURCES Math Resources |
SYMPOSIUM
MINISYMPOSIA
|
December 4-5, 1998
University of Southern Mississippi
Hattiesburg, Mississippi
Bogdan D. Czejdo, Thomas Gallagher and Brian Ham
The paper discusses verification of engineering software that includes many cooperating modules. The process of verification will be described on the example of software for iterative engineering design. In this case one module is responsible for the interactions with the designer. The other module performs automatic iterations. There is a need to synchronize these modules correctly in order to guarantee proper cooperation and to avoid synchronization problems such as deadlocks and livelocks. Generally, the synchronization of concurrent modules is a nontrivial issue and verification of the software is necessary.
A multiprogramming computer simulator is used to test and correct concurrent software. The simulator can work in two modes. It can simulate execution of a program or a skeleton of the program. In the mode of program simulation, the pseudo-assembly language instructions such as MOVE, COMPARE, BRANCH, READ, and WRITE can be executed together with synchronization primitives such as WAIT SEMAPHORE and SIGNAL SEMAPHORE. In the mode of skeleton program simulation, only the synchronization primitives are executed. The programs or program skeletons are executed concurrently using Round Robin scheduling algorithm.
The simulator will keep track of each process~Rs environment data including program counter (PC), entrance time, execution time, and current state. The simulator has typical ready, waiting, and blocked queues for determining the state of each process. The user has the capability of executing the simulator one step at a time. One step can be defined as one instruction, sequence of instructions until I/O is encountered, or sequence of instructions until process preemption takes place. This allows the user to inspect all parameters of the simulator including the state of each process, the next instruction to be executed, and the blocked queues that determine the synchronization restrictions.
The user also has the capability of changing many simulator parameters at run time. The capabilities include changing the PC value within a process, and memory content. The changing of memory content can involve synchronization primitives WAIT SEMAPHORE and SIGNAL SEMAPHORE. The time quantum for Round Robin scheduling algorithm can be set by the user during run time that allows to trace synchronization between processes in various circumstances.
The simulator can detect deadlocks and show the sequence of events leading to the deadlock. It can be used to detect errors in engineering software design, to correct it, and to verify that the correction solved all problems. The simulator is also a valuable tool to teach the concepts of multiprogramming, and process synchronization by using experimentation method.
To obtain more information about the meeting send e-mail to: fscc98@pax.st.usm.edu.