CMSC 714 Midterm (similar to prior Sussman/Hollingsworth exams, but more questions) (1) This exam is closed book, closed notes, and closed neighbor. (2) You have 75 minutes to complete this exam. If you finish early, you may turn in your exam at the front of the room and leave. However if you finish during the last ten minutes of the exam please remain seated until the end of the exam so you don't disturb others. (3) Partial credit will be given for most questions assuming I can figure out what you were trying to do. (4) Please write neatly. Print your answers if your handwriting is hard to read. If you write something, and wish to cross it out, simply put an X through it. 1. Define and explain the following terms: A. Vector Processor B. Causal Ordering C. Reduction Operation D. Space Sharing 2. Several of the parallel computers we looked at this semester provided globally shared memory but lacked cache coherence. A. What were two of these systems? B. What are the implications of having such an architecture on the programmer and programming model (for example which of the models we looked at would be well suited for this type of machine)? 3. The Valgrind and Dyninst systems each are designed to modify compiled programs. Compare and contrast how the tools work and their various features. 4. Some proponents of shared memory programming models claim the major advantage of shared memory over message passing is that you don't have to worry about where your data is located since all memory is shared. Explain why this assumption is naive if performance matters. 5. The Eraser system uses the lockset algorithm to find synchronization problems. A. Will the system find all races in a program (explain your answer)? B. Explain how and why a finite state machine is maintained per variable.