| OCR Text |
Show This research started with a vague plan to enable processes to watch each others' internal operations. In retrospect, the hardest part of the research was to determine the abstraction level of the interpreter. This is also a part of the research that took most of the time. The adopted solution, machine code, may seem obvious now, but it was far from obvious at the beginning. Since I was determined to build a working implementation of introspection, I had to decide which programming language to use for executors. There were three main candidates: C, Lisp and Smalltalk. The execution of programs in Lisp and Smalltalk can be nicely decomposed into smaller steps. This property made them an attractive choice, but I could not find a satisfactory way to incorporate garbage collection and a sophisticated run time environment with introspection. Although it was not clear what constitutes an execution step in a C program, the decision was made to use C. It is common to use events for monitoring process behavior [7, 28, 30, 53, 60, 61, 78, 83]. Usually events are defined as a subset of all actions during process execution that are important for monitoring. For example, Hanson [28] defines events as: variable referencing, statement execution, program interruption, function call and return, and execution time errors. Events have been implemented in an interpretive environment [28, 61], or by augmenting source code to emit events [10, 83]. Traditionally, high level events have been used to monitor programs in a high level programming language [10, 28, 43, 61, 83]. But high level events are not the most appropriate for introspection. In many cases, they are not able to describe the complete computational behavior, since they are restricted to the most common operations. Even if high level events are capable of describing the complete computational behavior, the overhead in generating this description would be prohibitive. The introspection requires events that are capable of describing the complete computational behavior at a low cost. Low cost events are provided by |