The Use of Process Clustering in Distributed-System Event Displays

Size: px
Start display at page:

Download "The Use of Process Clustering in Distributed-System Event Displays"

Transcription

1 The Use of Process Clustering in Distributed-System Event Displays David J. Taylor Abstract When debugging a distributed application, a display showing the events causing interactions between processes can be very useful. If the number of processes is large, displaying all of them may be impossible or undesirable. In such cases, several processes may be collapsed into a cluster, with all interactions internal to the cluster omitted from the display. This paper describes the fundamental theoretical constraints on such clustering and the means for effectively displaying clusters. It also describes the particular implementation of clustering provided in a prototype debugger that allows a hierarchical cluster structure to be built and conveniently manipulated. 1. Introduction Debugging a distributed or parallel application involves all of the problems encountered in debugging a sequential program, plus problems specific to the distributed/parallel environment. A useful facility in debugging such applications is a display showing the interactions between processes. A previous paper [9] described the value of such displays in detail and their implementation in a prototype debugger for the Hermes language [2]. That paper also provided a brief description of process clustering as a means for removing currently unwanted detail from a display and the techniques adopted for effective display of clusters. Clustering as a means for eliminating unwanted detail, while preserving the underlying partial-order relationship between The IBM contact for this paper is Patrick Finnigan, Client Server Enabling Tools, Application Development Technology Centre, IBM Canada Ltd., Mail Stop 3P, 1150 Eglinton Avenue East, North York, Ontario M3C 1W3. events, does not appear to be used in the distributed-debugging work being performed by other groups. Thus, many issues related to it remain to be explored. This paper reviews some of the material from that previous paper, but concentrates on two other aspects of clustering: the theoretical constraints underlying the display of process clusters and the provision of a user interface that makes it easy for a user to work with a large and complex collection of processes and clusters. The remainder of the paper is organized as follows. Section 2 describes the theoretical foundations for clustering, including two interpretations of what should be considered a legitimate display of events from a cluster. Section 3 describes an interface that has been developed to make the manipulation of clusters simple and intuitive for a user. This section includes a description of the notion of a debugging focus within a hierarchical structure of clusters. Finally, Section 4 presents some conclusions and suggestions for further work, including extension of the process-clustering concept to events. The prototype software which is described in Section 3 was originally developed for the Hermes environment. Although it has now been retargeted to several other environments (Concert/C [3], OSF/DCE [6], SR [1], and the µsystem [4]), the description in the paper is oriented to the Hermes environment. That environment was used for initial development of the hierarchical-clustering facilities because the large number of processes in a Hermes application presents significant opportunities for clustering. In spite of this orientation, very little in the paper or the prototype is specifically dependent on Hermes.

2 2. Clustering theory Before describing the theoretical aspects of process clustering, a brief description of event displays in general is required. An event display consists of a number of vertical trace lines, each representing the activity of a process (or thread) or the activity within a cluster. (For target environments other than Hermes, a trace line could also represent something else. For example, in the µsystem, monitors are represented by trace lines, so that a monitor entry by a thread is shown as an interaction between two trace lines.) Events are represented by symbols on the trace lines. In the prototype, a variety of symbols is used to help distinguish types of events (for example, call versus return), but for the artificial examples in this paper, all events are simply represented as open circles. If two processes interact, then a line is drawn connecting the appropriate pair of events. If the interaction is synchronous, the connecting line is horizontal. If the interaction is asynchronous, the connecting line slopes down from the initiating event to the terminating event. One of the most important things that such an event display provides for the user is an indication of the partial-order relationship between events. Given the ordering within processes and the interactions between processes, the precedence relationship between any pair of events can be determined. This partial-order relationship is also fundamental to the construction of event displays. A basic constraint is that an event must always be displayed at a higher position than any successor event. When clustering is performed, it is therefore critical that the partial-order relationship not be distorted. The essential idea of clustering processes in a display is simple. A set of processes is identified for which activities internal to the set are currently irrelevant. That set of processes is replaced in the display by a cluster, which ideally has (almost) the same visual appearance as an individual process and the only events inside the cluster that continue to be displayed are those that interact with processes outside the cluster. Figure 1 provides a trivial example of reducing a display containing four processes to a display containing one process and one cluster. The unclustered display on the left of the figure shows P1 calling P2, which in turn calls P3, and P3 calls P4 twice before returning to P2. The clustered display on the right of the figure shows P1 calling some process in C1 and then some process in C1 returning to P1. If P2 represents a server process intended for use by user processes and P3 and P4 represent subordinate processes not intended for use by user processes, then the cluster C1 also represents the view an ordinary user is likely to want, since it shows a server being invoked and then returning, without showing the internal activity of that server. P1 P2 P3 P4 P1 C1 Unclustered Clustered Figure 1. A simple example of clustering In this simple example, it is clear that the clustered representation is a legitimate summary of the underlying set of events. In more complex situations, however, it is not obvious whether the clustered display should be considered legitimate. At least two different criteria have been proposed, both attempting to make concrete the vague constraint that the clustered display should not mislead the user. In some sense, the difference between the two criteria arises from a difference in viewpoint. The first criterion is based on the notion that the two events displayed on C1 are not two of the events on P2 in the right half of the diagram, but are rather new events that are effectively on the dashed line drawn between P1 and P2. The second criterion is based on the notion that the two events displayed on C1 are simply two of the events on P2. The first criterion was proposed by Henry Cheung in his Ph.D. thesis [5]. Underlying the criterion is the notion that each cluster has a set of

3 interface points through which it communicates with processes and other clusters. Figure 2 shows an example of a cluster that contains four processes and has two interface points: one (I1) used by P1 and P3 and the other (I2) used by P2. In a representation such as that in Figure 1, a cluster is then represented by as many vertical lines as it has interface points. (In Figure 1, C1 is assumed to have only one interface point.) At each of these interface points, we would like to have sequential behaviour, so that a single linear representation is not misleading. Q1 I1 P1 P3 P2 P4 Figure 2. A cluster with two interface points I2 Q2 Q3 The precise constraint used is that for each interface point it must be possible to obtain a consistent interface cut. As mentioned above, in this case it is assumed that the events displayed for the cluster are new events on the cut line rather than selected events from the processes being hidden inside the cluster. An interface cut is a total order on those events and is consistent if it does not introduce any new precedence relationships between existing events. Figure 3 (which is adapted from [5]) shows a simple example of consistent and inconsistent interface cuts for an interface point. In the figure, processes P2 and P3 are assumed to form a cluster, communicating with P1 through a single interface point. The interface cuts C1 and C2 are possible representations of the behaviour of the cluster. For such a simple example, in particular because there are only two interface events, it is easy to verify the consistency or inconsistency informally. In the first case, the precedence relation between x 1 and y 1 can only be used in one way: b precedes x 1 precedes y 1 precedes d. However, b precedes d was already implied, P1 C1 P2 P3 c d x 1 y 1 a Consistent b P1 C2 P2 P3 c d x 2 y 2 a Inconsistent Figure 3. Consistent and inconsistent interface cuts going through event c, so no new precedences are created. In the second case, the precedence relation between x 2 and y 2 allows us to deduce that a precedes c and this precedence relationship did not exist prior to the introduction of the interface cut. Thus, C1 is a consistent interface cut and C2 is not. Henry Cheung s work provides mechanisms for testing whether an interface cut is consistent. It provides mechanisms for generating a consistent interface cut only in certain special circumstances, such as the case in which, on one side of the interface, all communication across the interface involves only a single process. It appears that, in the general case, generating a consistent interface cut is not feasible because it could require time exponential in the number of interface events. Thus, there is a problem with the first criterion in trying to construct an appropriate interface trace from a given set of data. There may also be a more fundamental problem. The basic constraint is that the display should not mislead the user. Of course, this is too vaguely stated to be used as a formal constraint, but one can ask what a typical user is likely to deduce from a display containing P1 and C1. A user is likely to view x 1 and y 1 as being, essentially, events b and a, rather than as new events only loosely related to b and a. If the user makes this identification, then the user will also deduce that b precedes a, which is false. For the two reasons just mentioned, an alternative criterion was sought when clustering was added to the prototype debugger. This criterion is based on the notion that the displayed events are, effectively, events from the various processes, some of which are displayed as part of their own process and others of which are b

4 displayed as part of a cluster into which their process has been collapsed. In this case, the constraint is simply that for any pair of adjacent events displayed for a cluster, the upper event must be a predecessor of the lower event, in the original partial order. For this criterion, neither C1 nor C2, in Figure 3, is acceptable. Because a and b are concurrent, they cannot be displayed on a single trace line. This latter criterion was used in the prototype software, both because its implementation is straightforward and because it appears less likely to mislead the user. The possibility that displays created according to the first criterion will be misleading is probably increased by the debugger feature that allows a user to obtain more information about a displayed event. For obvious reasons, this information includes the identity of the process in which the event occurred and thus is likely to cause the user to identify the displayed event with the original event rather than imagining it to be a new interface event. There is still the problem of what action to take if concurrency exists among the events to be displayed for a cluster. As described previously [9], the approach adopted is to dynamically create enough trace lines to allow all mutually concurrent events of a cluster to be displayed on separate trace lines. Sections of these trace lines are then joined to each other by linking arrows to provide a visual indication of the precedence relationship between the events not displayed on the same line. The fundamental difference between this display and a display based on interface points is that there is no permanent association between trace lines and pairs of communicating processes. In a display based on interface points, events representing communication between Pi and Pj will always be shown on the trace line representing the relevant interface point. The approach used in the prototype may cause such events to be placed on two or more trace lines, although a heuristic attempts to avoid arbitrary wandering from one trace line to another. The approach adopted allows any set of processes to be clusterd, although in the worst case the displayed cluster may have as many trace lines as there are processes in the cluster. An approach based on interface points and consistent interface cuts also allows any set of processes to be clustered, but the set of interface points must be chosen correctly. If a user selected an inappropriate set of interface points, no display could be drawn. An advantage of the approach not using interface points is that any user specification of clustering is acceptable. The user cannot create a situation in which no legitimate display can be drawn. 3. Establishing and manipulating clusters When clustering was added to the debugger prototype, the initial objective was to provide mechanisms for efficiently generating displays containing clusters. In particular, the issues addressed were primarily those that are direct consequences of the theoretical discussion in the preceding section. To obtain a useful tool, it is also necessary to have convenient means for specifying what processes should be placed in a given cluster. It is also desirable to have a hierarchical structure, in which a cluster may contain other clusters as well as processes. Before describing the facilities eventually adopted, a brief description will be given of two earlier interfaces and their perceived inadequacies. The first interface developed did not allow hierarchical clustering. The operations provided allowed the creation of a cluster containing a specified set of processes, the addition of processes to an existing cluster, the merging of two existing clusters into a single cluster, and the destruction of a cluster. Combined with facilities for writing the current cluster specification into a file and reading a cluster specification from a file, these provided an interface that was usable but quite inconvenient. In particular, the lack of hierarchical clustering, the inability to determine explicitly the set of processes in a cluster, and the lack of a facility for removing processes from a cluster were all significant difficulties. The second interface developed was part of a project to build clusters automatically, based both on the events occurring at execution and a static analysis of Hermes source code [7]. Besides the automatic creation of a set of clusters, the key added feature was hierarchical clustering. In addition to operations similar to those described above, one could alter the display by moving up and down the hierarchy. A cluster could be

5 opened, causing the cluster to be replaced on the display by its component processes and clusters, and a cluster could be closed, reversing the effect of open. Even ignoring the automatic creation of clusters, this facility was considerably more powerful, but it suffered from the serious problem that a complex hierarchical structure existed that could only be explored incrementally, by opening and closing clusters. Given this experience, it became clear that an interface based on a graphical display of the cluster structure was needed to provide a convenient means for the user to understand and manipulate process clusters. The cluster structure cannot reasonably be displayed as part of the normal event display, so an additional window is used. In this second window, the cluster structure is shown using the obvious tree representation and the user can manipulate the cluster structure by manipulating the tree. More specifically, the clustering window displays a tree whose leaves are processes and whose internal nodes are clusters. The processes and clusters directly contained in a cluster are shown as the children of that cluster. The root is a cluster containing all the processes. Each node is represented by a rectangle containing the name of the process or cluster. Initially, the tree simply consists of a root with all processes being children of the root. A complicated structure can be created in a single step by using the automatic-clustering facility or by reading in a previously saved structure. Such structures can then be modified if desired or a cluster structure can be built directly by performing manipulations on the initial, trivial structure. All these manipulations are carried out by selecting nodes of the tree, rather than processes in the event-display window. However, if the appropriate option is enabled, changes in the tree structure cause the event display to be redrawn to reflect the changed cluster structure. If the debugger is being used with a running application, rather than post-mortem, and a new process is created, the new process will appear simultaneously in the main display and the cluster-hierarchy display. Processes created after a cluster hierarchy is built are inserted as children of the root. The operations to modify the cluster hierarchy were intentionally kept simple. There are essentially only three operations: create a cluster, delete a cluster, and move processes/clusters into a cluster. To create a cluster, a name must be supplied and an existing cluster must be identified as the parent of the new cluster. To delete a cluster, it is only necessary to identify the cluster. To move processes or clusters (or both) into a cluster, it is necessary to identify the cluster and then the entities to be moved into it. What the user might imagine as creating a cluster thus involves two steps. First, an empty cluster is created, at the appropriate place in the hierarchy. Then, the desired items are moved into the cluster in a second step. This may require slightly more work, but it is simple and the procedure for adding items to a cluster is exactly the same as the procedure for placing the initial items in a cluster. The only restriction on moving nodes in the hierarchy is that a node may not be moved to become a child of itself or one of its own descendants, since that would disconnect the tree. Clusters may be deleted when they are nonempty. Any children of a deleted cluster become children of that cluster s parent. Other than operations that replace the complete cluster hierarchy, there is only one additional operation for modifying the hierarchy. As a result of other changes, useless clusters may occur in the tree. A cluster is useless if it has no children or exactly one child. Such clusters can be deleted individually, but, for convenience, an operation is provided that deletes all such clusters. Given a hierarchical cluster structure, it is necessary to determine a set of clusters and processes from the hierarchy that are to be used in the current event display. The original interface simply allowed all processes to be displayed or all clusters plus all processes not in clusters. Even for a single-level cluster structure, this is not sufficiently flexible. It is clearly inappropriate for a hierarchical structure. The concept of a debugging focus captures the idea needed here. A debugging focus is the set of processes and clusters the user is currently interested in and, hence, the set that should be displayed. Formally, a debugging focus is a cut across the cluster hierarchy, that is, a set of

6 processes and clusters such that for each leaf in the tree, there is exactly one element of the set on the path from the root to that leaf. Although a singleton set containing only the root is formally a legitimate debugging focus, it is excluded from practical consideration since the resulting event display would consist of a single trace line and no events. Figure 4 shows an example of a simple cluster hierarchy with a debugging focus. The nodes drawn with a double circle (3, 6, 7, 8, 9, 10, 11) are in the current debugging focus Figure 4. Example of cluster hierarchy and debugging focus As with the manipulations of the hierarchy, simplicity was a major consideration in designing a method for the user to select a debugging focus. The interface simply allows the user to specify that a selected node should be placed in the debugging focus. Then, a minimal set of changes is made to create a debugging focus containing the desired node. If descendants of the selected node are currently in the debugging focus, then all descendants are removed from the focus as the selected node is added. If an ancestor of the selected node is currently in the debugging focus, the actions are more complex to describe, although the intuition is simple. The algorithm is best described as an iteration that eventually brings the selected node into the focus. First, the ancestor currently in focus is removed from the focus and all of its children are placed in the focus. If one of those children is the desired node, the algorithm terminates. Otherwise, the steps are repeated, beginning with the modified focus, until eventually the desired node is placed in the focus. The required number of iterations is simply the length of the path between the ancestor currently in focus and the selected node. Since the root node is not allowed to be in the focus, if it is selected all its children are placed in the focus. This is equivalent to selecting the root node and placing it in the focus, then immediately selecting one of its children to be placed in the focus. If the current cluster hierarchy and debugging focus are as shown in Figure 4 and the user selects node 2 to be placed in the debugging focus, the result will be as shown in Figure 5. Node 2 has been placed in the debugging focus, requiring the removal of nodes 6, 7, 10, and 11. If the user then selects node 12 to be placed in the debugging focus, the result will be as shown in Figure 6. Node 2 has been removed from the debugging focus and nodes 5, 6, and 13 have been added, as well as the requested node 12. As explained above, this was accomplished in two steps. First, node 2 was removed from the focus and replaced by nodes 5, 6, and 7. Then, node 7 was removed from the focus and replaced by nodes 12 and Figure 5. Debugging focus after selecting node 2 These focus-changing facilities are intended to be more convenient than operations like open a cluster and close a cluster. In particular, the transition from Figure 5 to Figure 6 would require two open a cluster operations rather than a single selection. In deeper trees, the number of open a cluster operations equivalent to a single focus-node selection could be much larger. Preliminary experience within our research group indicates that the facilities are easy to use, but experience with a broader community of users is needed to determine whether the interface is suitable for general use.

7 Figure 6. Debugging focus after selecting node 12 One danger with the facility as implemented is that selecting a node near the root of the tree can wipe out an intricate set of focus selections. If the selection was accidental, the user might need to perform signficant work in order to restore the previous focus. In Figure 4, selecting the root node would wipe out all existing focus information, replacing the focus with nodes 2, 3, and 4. The tree is so small that it is not very hard to restore the previous focus (just select nodes 8 and 10, for example), but selecting the root of a much larger tree might have serious consequences. If this becomes a problem in practice, presumably an undo facility would be the most appropriate solution, rather than adding restrictions on the way the user can change the focus. 4. Conclusions and further work The clustering facilities described in this paper have been implemented in our debugger prototype. Although the facilities have not yet been used extensively they appear to be useful and convenient. In particular, they are clearly an improvement over the two previous interfaces provided for clustering. Additional improvements are clearly needed. If many processes exist, it is difficult for the user to locate the tree node in one window corresponding to a trace line in the other window, and vice versa. This problem is exacerbated by the Hermes phenomenon that many processes exist with identical names. At present, the only certain way to establish the correspondence for such processes is to try hiding one in a cluster, observing which trace line disappears from the event display. A possible solution is to allow selections for cluster-hierarchy modification and focus changing to be made in the trace window as well as the cluster window, but careful design will be needed to avoid a complicated and confusing interface. A more minor problem is that the user presently has complete control over the order of trace lines in the event display, but no direct control over the order of nodes in the cluster tree. A simple facility to rearrange the presentation of the tree should be provided. Unfortunately, the obvious possibility of making the tree follow the order of traces in the event display is not feasible. All the children of a cluster must be adjacent in the tree, but no such constraint exists in the event display and it would be unreasonable to add such a constraint. At present, there is also a software-engineering problem with the clustering implementation. The debugger is split into three processes: the debugsession process, the checkpoint process, and the disk-server process. As discussed previously [9], the debug-session and checkpoint processes are intended to be independent of the target environment, with all information specific to the target system embedded in the disk-server process. Some Hermes-specific information about clustering currently resides in the debugsession process and needs to be moved to the disk-server process to complete the implementation to our normal standards for the prototype. In spite of the above difficulties, the prototype is currently quite useful. Its only significant use has been in the Hermes environment, but once the last difficulty described above has been rectified, we intend to experiment with it in the other available target environments. We expect that it will be useful in those other environments, but it is likely that experience will indicate the need for additional features or modification of existing features. A longer-range activity is the extension of clustering from processes to events. In the same way that several processes can be grouped to form a cluster, several events could be grouped to form an abstract event. A fundamental difficulty is that whereas any set of processes can be clustered without causing problems, although poor choices

8 may lead to displays that aren t very useful, an arbitrary set of events cannot be allowed as an abstract event. Thus, there are initial problems in determining appropriate restrictions on the sets of events that can be allowed for abstraction. Many other problems also exist, such as efficiently determining the precedence relation between an abstract event and a simple event or between two abstract events. In addition, a meaningful display of abstract events is much harder to design than a display involving clustered processes. Some preliminary theoretical work on event abstraction has been completed [5, 8], but more work is clearly required before event abstraction can be added to the existing prototype software. Acknowledgments The initial implementation of hierarchical clustering was performed by Thomas Kunz, a Ph.D. student visiting the Shoshin project. The graphical cluster interface was implemented and, to a significant extent, designed by Paulo Ferreira during two co-op work terms with the Shoshin project. The work described in this paper was supported by the Natural Sciences and Engineering Research Council of Canada under grant OGP and a CRD grant, and by the Information Technology Research Centre. About the author David Taylor is an Associate Professor of Computer Science at the University of Waterloo, where he has been a faculty member since His research interests include distributed-systems software and software fault tolerance. During the academic year, he spent a sabbatical at the Centre for Advanced Studies, IBM Canada Ltd. Laboratory. He can be reached at the address Department of Computer Science, University of Waterloo, Waterloo, Ontario N2L 3G1. His address is dtaylor@boomer.uwaterloo.ca. References 1. G. R. Andrews, et al, An overview of the SR language and implementation, ACM Transactions on Programming Languages and Systems, 10(1) pp (January 1988). 2. R. E. Strom, et al, Hermes: A Language for Distributed Computing, Prentice-Hall, Englewood Cliffs, New Jersey (1991). 3. S. Yemini, et al, CONCERT: A high-levellanguage approach to heterogeneous distributed systems, Proceedings of the 9th International Conference on Distributed Computing Systems, pp (June 5-9, 1989). 4. P. A. Buhr and R. A. Stroobosscher, The µsystem: Providing light-weight concurrency on shared-memory multiprocessor computers running UNIX, Software Practice and Experience, 20(9) pp (September 1990). 5. H. W. H. Cheung, Process and Event Abstraction for Debugging Distributed Programs, Ph.D. Thesis, University of Waterloo, Ontario, Canada (1989). Also available as CCNG Technical Report T Open Software Foundation, Introduction to OSF/DCE, Prentice-Hall, Englewood Cliffs, New Jersey (1993). 7. T. Kunz and D. J. Taylor, Distributed debugging using a reverse-engineering tool, Proceedings of the 3rd Reverse Engineering Forum, (September 15-17, 1992). 8. J. Summers, Precedence-Preserving Abstraction for Distributed Debugging, M.Math. Thesis, University of Waterloo, Ontario, Canada (1992). 9. D. J. Taylor, A prototype debugger for Hermes, Proceedings of the 1992 CAS Conference, Volume I, pp (November 9-12, 1992).

Provably Efficient Non-Preemptive Task Scheduling with Cilk

Provably Efficient Non-Preemptive Task Scheduling with Cilk Provably Efficient Non-Preemptive Task Scheduling with Cilk V. -Y. Vee and W.-J. Hsu School of Applied Science, Nanyang Technological University Nanyang Avenue, Singapore 639798. Abstract We consider the

More information

EDMS. Architecture and Concepts

EDMS. Architecture and Concepts EDMS Engineering Data Management System Architecture and Concepts Hannu Peltonen Helsinki University of Technology Department of Computer Science Laboratory of Information Processing Science Abstract

More information

Joint Entity Resolution

Joint Entity Resolution Joint Entity Resolution Steven Euijong Whang, Hector Garcia-Molina Computer Science Department, Stanford University 353 Serra Mall, Stanford, CA 94305, USA {swhang, hector}@cs.stanford.edu No Institute

More information

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL

CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL CHAPTER 5 GENERATING TEST SCENARIOS AND TEST CASES FROM AN EVENT-FLOW MODEL 5.1 INTRODUCTION The survey presented in Chapter 1 has shown that Model based testing approach for automatic generation of test

More information

(Refer Slide Time: 02.06)

(Refer Slide Time: 02.06) Data Structures and Algorithms Dr. Naveen Garg Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture 27 Depth First Search (DFS) Today we are going to be talking

More information

An Appropriate Search Algorithm for Finding Grid Resources

An Appropriate Search Algorithm for Finding Grid Resources An Appropriate Search Algorithm for Finding Grid Resources Olusegun O. A. 1, Babatunde A. N. 2, Omotehinwa T. O. 3,Aremu D. R. 4, Balogun B. F. 5 1,4 Department of Computer Science University of Ilorin,

More information

CS301 - Data Structures Glossary By

CS301 - Data Structures Glossary By CS301 - Data Structures Glossary By Abstract Data Type : A set of data values and associated operations that are precisely specified independent of any particular implementation. Also known as ADT Algorithm

More information

Advanced Algorithms Class Notes for Monday, October 23, 2012 Min Ye, Mingfu Shao, and Bernard Moret

Advanced Algorithms Class Notes for Monday, October 23, 2012 Min Ye, Mingfu Shao, and Bernard Moret Advanced Algorithms Class Notes for Monday, October 23, 2012 Min Ye, Mingfu Shao, and Bernard Moret Greedy Algorithms (continued) The best known application where the greedy algorithm is optimal is surely

More information

Thirty one Problems in the Semantics of UML 1.3 Dynamics

Thirty one Problems in the Semantics of UML 1.3 Dynamics Thirty one Problems in the Semantics of UML 1.3 Dynamics G. Reggio R.J. Wieringa September 14, 1999 1 Introduction In this discussion paper we list a number of problems we found with the current dynamic

More information

Computing intersections in a set of line segments: the Bentley-Ottmann algorithm

Computing intersections in a set of line segments: the Bentley-Ottmann algorithm Computing intersections in a set of line segments: the Bentley-Ottmann algorithm Michiel Smid October 14, 2003 1 Introduction In these notes, we introduce a powerful technique for solving geometric problems.

More information

Chapter 2 Overview of the Design Methodology

Chapter 2 Overview of the Design Methodology Chapter 2 Overview of the Design Methodology This chapter presents an overview of the design methodology which is developed in this thesis, by identifying global abstraction levels at which a distributed

More information

ANALYZING PROCESS MODELS USING GRAPH REDUCTION TECHNIQUES

ANALYZING PROCESS MODELS USING GRAPH REDUCTION TECHNIQUES NLYZING PROCESS MODELS USING GRPH REDUCTION TECHNIQUES WSIM SDIQ ND MRI E. ORLOWSK Distributed Systems Technology Centre Department of Computer Science & Electrical Engineering The University of Queensland,

More information

Some Applications of Graph Bandwidth to Constraint Satisfaction Problems

Some Applications of Graph Bandwidth to Constraint Satisfaction Problems Some Applications of Graph Bandwidth to Constraint Satisfaction Problems Ramin Zabih Computer Science Department Stanford University Stanford, California 94305 Abstract Bandwidth is a fundamental concept

More information

DDS Dynamic Search Trees

DDS Dynamic Search Trees DDS Dynamic Search Trees 1 Data structures l A data structure models some abstract object. It implements a number of operations on this object, which usually can be classified into l creation and deletion

More information

V Advanced Data Structures

V Advanced Data Structures V Advanced Data Structures B-Trees Fibonacci Heaps 18 B-Trees B-trees are similar to RBTs, but they are better at minimizing disk I/O operations Many database systems use B-trees, or variants of them,

More information

18.3 Deleting a key from a B-tree

18.3 Deleting a key from a B-tree 18.3 Deleting a key from a B-tree B-TREE-DELETE deletes the key from the subtree rooted at We design it to guarantee that whenever it calls itself recursively on a node, the number of keys in is at least

More information

Clustering Using Graph Connectivity

Clustering Using Graph Connectivity Clustering Using Graph Connectivity Patrick Williams June 3, 010 1 Introduction It is often desirable to group elements of a set into disjoint subsets, based on the similarity between the elements in the

More information

UNIT-IV BASIC BEHAVIORAL MODELING-I

UNIT-IV BASIC BEHAVIORAL MODELING-I UNIT-IV BASIC BEHAVIORAL MODELING-I CONTENTS 1. Interactions Terms and Concepts Modeling Techniques 2. Interaction Diagrams Terms and Concepts Modeling Techniques Interactions: Terms and Concepts: An interaction

More information

A Theory of Parallel Computation The π-calculus

A Theory of Parallel Computation The π-calculus A Theory of Parallel Computation The π-calculus Background DFAs, NFAs, pushdown automata, Turing machines... All are mathematical entities that model computation. These abstract systems have concrete,

More information

Interactions A link message

Interactions A link message Interactions An interaction is a behavior that is composed of a set of messages exchanged among a set of objects within a context to accomplish a purpose. A message specifies the communication between

More information

Chapter B: Hierarchical Model

Chapter B: Hierarchical Model Chapter B: Hierarchical Model Basic Concepts Tree-Structure Diagrams Data-Retrieval Facility Update Facility Virtual Records Mapping of Hierarchies to Files The IMS Database System B.1 Basic Concepts A

More information

A Tutorial on Agent Based Software Engineering

A Tutorial on Agent Based Software Engineering A tutorial report for SENG 609.22 Agent Based Software Engineering Course Instructor: Dr. Behrouz H. Far A Tutorial on Agent Based Software Engineering Qun Zhou December, 2002 Abstract Agent oriented software

More information

Distributed minimum spanning tree problem

Distributed minimum spanning tree problem Distributed minimum spanning tree problem Juho-Kustaa Kangas 24th November 2012 Abstract Given a connected weighted undirected graph, the minimum spanning tree problem asks for a spanning subtree with

More information

AN ONTOLOGICAL EVALUATION OF JACKSON'S SYSTEM DEVELOPMENT MODEL. Fiona Rohde. Department of Commerce The University of Queensland, 4072.

AN ONTOLOGICAL EVALUATION OF JACKSON'S SYSTEM DEVELOPMENT MODEL. Fiona Rohde. Department of Commerce The University of Queensland, 4072. AN ONTOLOGICAL EVALUATION OF JACKSON'S SYSTEM DEVELOPMENT MODEL Fiona Rohde Department of Commerce The University of Queensland, 4072. Australia ABSTRACT Within the discipline of information systems, numerous

More information

A new generation of tools for SGML

A new generation of tools for SGML Article A new generation of tools for SGML R. W. Matzen Oklahoma State University Department of Computer Science EMAIL rmatzen@acm.org Exceptions are used in many standard DTDs, including HTML, because

More information

Handout 9: Imperative Programs and State

Handout 9: Imperative Programs and State 06-02552 Princ. of Progr. Languages (and Extended ) The University of Birmingham Spring Semester 2016-17 School of Computer Science c Uday Reddy2016-17 Handout 9: Imperative Programs and State Imperative

More information

Recoloring k-degenerate graphs

Recoloring k-degenerate graphs Recoloring k-degenerate graphs Jozef Jirásek jirasekjozef@gmailcom Pavel Klavík pavel@klavikcz May 2, 2008 bstract This article presents several methods of transforming a given correct coloring of a k-degenerate

More information

Object Oriented Finite Element Modeling

Object Oriented Finite Element Modeling Object Oriented Finite Element Modeling Bořek Patzák Czech Technical University Faculty of Civil Engineering Department of Structural Mechanics Thákurova 7, 166 29 Prague, Czech Republic January 2, 2018

More information

CPS352 Lecture - The Transaction Concept

CPS352 Lecture - The Transaction Concept Objectives: CPS352 Lecture - The Transaction Concept Last Revised March 3, 2017 1. To introduce the notion of a transaction and the ACID properties of a transaction 2. To introduce the notion of the state

More information

Evolutionary Decision Trees and Software Metrics for Module Defects Identification

Evolutionary Decision Trees and Software Metrics for Module Defects Identification World Academy of Science, Engineering and Technology 38 008 Evolutionary Decision Trees and Software Metrics for Module Defects Identification Monica Chiş Abstract Software metric is a measure of some

More information

Teamcenter 11.1 Systems Engineering and Requirements Management

Teamcenter 11.1 Systems Engineering and Requirements Management SIEMENS Teamcenter 11.1 Systems Engineering and Requirements Management Systems Architect/ Requirements Management Project Administrator's Manual REQ00002 U REQ00002 U Project Administrator's Manual 3

More information

V Advanced Data Structures

V Advanced Data Structures V Advanced Data Structures B-Trees Fibonacci Heaps 18 B-Trees B-trees are similar to RBTs, but they are better at minimizing disk I/O operations Many database systems use B-trees, or variants of them,

More information

Proceedings of MASPLAS'01 The Mid-Atlantic Student Workshop on Programming Languages and Systems IBM Watson Research Centre April 27, 2001

Proceedings of MASPLAS'01 The Mid-Atlantic Student Workshop on Programming Languages and Systems IBM Watson Research Centre April 27, 2001 Proceedings of MASPLAS'01 The Mid-Atlantic Student Workshop on Programming Languages and Systems IBM Watson Research Centre April 27, 2001 A PARALLEL MERGING ALGORITHM AND ITS IMPLEMENTATION WITH JAVA

More information

/ Approximation Algorithms Lecturer: Michael Dinitz Topic: Linear Programming Date: 2/24/15 Scribe: Runze Tang

/ Approximation Algorithms Lecturer: Michael Dinitz Topic: Linear Programming Date: 2/24/15 Scribe: Runze Tang 600.469 / 600.669 Approximation Algorithms Lecturer: Michael Dinitz Topic: Linear Programming Date: 2/24/15 Scribe: Runze Tang 9.1 Linear Programming Suppose we are trying to approximate a minimization

More information

ITERATIVE MULTI-LEVEL MODELLING - A METHODOLOGY FOR COMPUTER SYSTEM DESIGN. F. W. Zurcher B. Randell

ITERATIVE MULTI-LEVEL MODELLING - A METHODOLOGY FOR COMPUTER SYSTEM DESIGN. F. W. Zurcher B. Randell ITERATIVE MULTI-LEVEL MODELLING - A METHODOLOGY FOR COMPUTER SYSTEM DESIGN F. W. Zurcher B. Randell Thomas J. Watson Research Center Yorktown Heights, New York Abstract: The paper presents a method of

More information

JOURNAL OF OBJECT TECHNOLOGY

JOURNAL OF OBJECT TECHNOLOGY JOURNAL OF OBJECT TECHNOLOGY Online at http://www.jot.fm. Published by ETH Zurich, Chair of Software Engineering JOT, 2003 Vol. 2, No. 6, November-December 2003 UML 2 Activity and Action Models Part 3:

More information

2.2 Syntax Definition

2.2 Syntax Definition 42 CHAPTER 2. A SIMPLE SYNTAX-DIRECTED TRANSLATOR sequence of "three-address" instructions; a more complete example appears in Fig. 2.2. This form of intermediate code takes its name from instructions

More information

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA A taxonomy of race conditions. D. P. Helmbold, C. E. McDowell UCSC-CRL-94-34 September 28, 1994 Board of Studies in Computer and Information Sciences University of California, Santa Cruz Santa Cruz, CA

More information

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems 3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the

More information

INTRODUCING A MULTIVIEW SOFTWARE ARCHITECTURE PROCESS BY EXAMPLE Ahmad K heir 1, Hala Naja 1 and Mourad Oussalah 2

INTRODUCING A MULTIVIEW SOFTWARE ARCHITECTURE PROCESS BY EXAMPLE Ahmad K heir 1, Hala Naja 1 and Mourad Oussalah 2 INTRODUCING A MULTIVIEW SOFTWARE ARCHITECTURE PROCESS BY EXAMPLE Ahmad K heir 1, Hala Naja 1 and Mourad Oussalah 2 1 Faculty of Sciences, Lebanese University 2 LINA Laboratory, University of Nantes ABSTRACT:

More information

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz Results obtained by researchers in the aspect-oriented programming are promoting the aim to export these ideas to whole software development

More information

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1

Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 CME 305: Discrete Mathematics and Algorithms Instructor: Professor Aaron Sidford (sidford@stanford.edu) January 11, 2018 Lecture 2 - Graph Theory Fundamentals - Reachability and Exploration 1 In this lecture

More information

The PCAT Programming Language Reference Manual

The PCAT Programming Language Reference Manual The PCAT Programming Language Reference Manual Andrew Tolmach and Jingke Li Dept. of Computer Science Portland State University September 27, 1995 (revised October 15, 2002) 1 Introduction The PCAT language

More information

AC : USING A SCRIPTING LANGUAGE FOR DYNAMIC PROGRAMMING

AC : USING A SCRIPTING LANGUAGE FOR DYNAMIC PROGRAMMING AC 2008-2623: USING A SCRIPTING LANGUAGE FOR DYNAMIC PROGRAMMING Louis Plebani, Lehigh University American Society for Engineering Education, 2008 Page 13.1325.1 Using a Scripting Language for Dynamic

More information

Integrating White- and Black-Box Techniques for Class-Level Regression Testing

Integrating White- and Black-Box Techniques for Class-Level Regression Testing Integrating White- and Black-Box Techniques for Class-Level Regression Testing Sami Beydeda, Volker Gruhn University of Dortmund Computer Science Department Software Technology 44221 Dortmund, Germany

More information

Utilizing a Common Language as a Generative Software Reuse Tool

Utilizing a Common Language as a Generative Software Reuse Tool Utilizing a Common Language as a Generative Software Reuse Tool Chris Henry and Stanislaw Jarzabek Department of Computer Science School of Computing, National University of Singapore 3 Science Drive,

More information

Topic 1: What is HoTT and why?

Topic 1: What is HoTT and why? Topic 1: What is HoTT and why? May 5, 2014 Introduction Homotopy type theory (HoTT) is a newly emerging field of mathematics which is currently being developed as a foundation of mathematics which is in

More information

StarTeam LDAP QuickStart Manager Administration Guide

StarTeam LDAP QuickStart Manager Administration Guide StarTeam 15.1 LDAP QuickStart Manager Administration Guide Micro Focus The Lawn 22-30 Old Bath Road Newbury, Berkshire RG14 1QN UK http://www.microfocus.com Copyright Micro Focus 2016. All rights reserved.

More information

An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model

An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model An Anomaly in Unsynchronized Pointer Jumping in Distributed Memory Parallel Machine Model Sun B. Chung Department of Quantitative Methods and Computer Science University of St. Thomas sbchung@stthomas.edu

More information

SEEKING THE ACTUAL REASONS FOR THE "NEW PARADIGM" IN THE AREA OF IS ANALYSIS 2. GENERAL CHARACTERISTICS OF THE "STRUCTURED APPROACH" IN IS DEVELOPMENT

SEEKING THE ACTUAL REASONS FOR THE NEW PARADIGM IN THE AREA OF IS ANALYSIS 2. GENERAL CHARACTERISTICS OF THE STRUCTURED APPROACH IN IS DEVELOPMENT SEEKING THE ACTUAL REASONS FOR THE "NEW PARADIGM" IN THE AREA OF IS ANALYSIS Václav Řepa Prague University of Economics, W.Churchill sq. 4, 130 00 Praha 3, Czech Republic E-mail: REPA@VSE.CZ 1. INTRODUCTION

More information

Coping with Conflicts in an Optimistically Replicated File System

Coping with Conflicts in an Optimistically Replicated File System Coping with Conflicts in an Optimistically Replicated File System Puneet Kumar School of Computer Science Carnegie Mellon University 1. Introduction Coda is a scalable distributed Unix file system that

More information

Advances in Data Management Principles of Database Systems - 2 A.Poulovassilis

Advances in Data Management Principles of Database Systems - 2 A.Poulovassilis 1 Advances in Data Management Principles of Database Systems - 2 A.Poulovassilis 1 Storing data on disk The traditional storage hierarchy for DBMSs is: 1. main memory (primary storage) for data currently

More information

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming

Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Computer Science Journal of Moldova, vol.13, no.3(39), 2005 Concept as a Generalization of Class and Principles of the Concept-Oriented Programming Alexandr Savinov Abstract In the paper we describe a

More information

A dictionary interface.

A dictionary interface. A dictionary interface. interface Dictionary { public Data search(key k); public void insert(key k, Data d); public void delete(key k); A dictionary behaves like a many-to-one function. The search method

More information

(Refer Slide Time: 01:25)

(Refer Slide Time: 01:25) Computer Architecture Prof. Anshul Kumar Department of Computer Science and Engineering Indian Institute of Technology, Delhi Lecture - 32 Memory Hierarchy: Virtual Memory (contd.) We have discussed virtual

More information

Let the dynamic table support the operations TABLE-INSERT and TABLE-DELETE It is convenient to use the load factor ( )

Let the dynamic table support the operations TABLE-INSERT and TABLE-DELETE It is convenient to use the load factor ( ) 17.4 Dynamic tables Let us now study the problem of dynamically expanding and contracting a table We show that the amortized cost of insertion/ deletion is only (1) Though the actual cost of an operation

More information

Distributed Systems COMP 212. Revision 2 Othon Michail

Distributed Systems COMP 212. Revision 2 Othon Michail Distributed Systems COMP 212 Revision 2 Othon Michail Synchronisation 2/55 How would Lamport s algorithm synchronise the clocks in the following scenario? 3/55 How would Lamport s algorithm synchronise

More information

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore

High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore High Performance Computing Prof. Matthew Jacob Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No # 09 Lecture No # 40 This is lecture forty of the course on

More information

1 PROCESSES PROCESS CONCEPT The Process Process State Process Control Block 5

1 PROCESSES PROCESS CONCEPT The Process Process State Process Control Block 5 Process Management A process can be thought of as a program in execution. A process will need certain resources such as CPU time, memory, files, and I/O devices to accomplish its task. These resources

More information

Testing Techniques for Ada 95

Testing Techniques for Ada 95 SOFTWARE QUALITY ASSURANCE TOOLS & TECHNOLOGY PROFESSIONAL SERVICES ACADEMY P a g e 1 White Paper Testing Techniques for Ada 95 The Ada language is widely accepted as the language of choice for the implementation

More information

Databases - Transactions

Databases - Transactions Databases - Transactions Gordon Royle School of Mathematics & Statistics University of Western Australia Gordon Royle (UWA) Transactions 1 / 34 ACID ACID is the one acronym universally associated with

More information

Capturing and Formalizing SAF Availability Management Framework Configuration Requirements

Capturing and Formalizing SAF Availability Management Framework Configuration Requirements Capturing and Formalizing SAF Availability Management Framework Configuration Requirements A. Gherbi, P. Salehi, F. Khendek and A. Hamou-Lhadj Electrical and Computer Engineering, Concordia University,

More information

An Experiment in Visual Clustering Using Star Glyph Displays

An Experiment in Visual Clustering Using Star Glyph Displays An Experiment in Visual Clustering Using Star Glyph Displays by Hanna Kazhamiaka A Research Paper presented to the University of Waterloo in partial fulfillment of the requirements for the degree of Master

More information

Operations on Heap Tree The major operations required to be performed on a heap tree are Insertion, Deletion, and Merging.

Operations on Heap Tree The major operations required to be performed on a heap tree are Insertion, Deletion, and Merging. Priority Queue, Heap and Heap Sort In this time, we will study Priority queue, heap and heap sort. Heap is a data structure, which permits one to insert elements into a set and also to find the largest

More information

Chapter 9. Software Testing

Chapter 9. Software Testing Chapter 9. Software Testing Table of Contents Objectives... 1 Introduction to software testing... 1 The testers... 2 The developers... 2 An independent testing team... 2 The customer... 2 Principles of

More information

Atropos User s manual

Atropos User s manual Atropos User s manual Jan Lönnberg 22nd November 2010 1 Introduction Atropos is a visualisation tool intended to display information relevant to understanding the behaviour of concurrent Java programs,

More information

Composing Distributed Fault-tolerance Components

Composing Distributed Fault-tolerance Components Composing Distributed Fault-tolerance Components Sandeep S. Kulkarni Karun N. Biyani Umamaheswaran Arumugam Department of Computer Science and Engineering Michigan State University East Lansing, MI 48824

More information

Extending E-R for Modelling XML Keys

Extending E-R for Modelling XML Keys Extending E-R for Modelling XML Keys Martin Necasky Faculty of Mathematics and Physics, Charles University, Prague, Czech Republic martin.necasky@mff.cuni.cz Jaroslav Pokorny Faculty of Mathematics and

More information

Breakpoints and Halting in Distributed Programs

Breakpoints and Halting in Distributed Programs 1 Breakpoints and Halting in Distributed Programs Barton P. Miller Jong-Deok Choi Computer Sciences Department University of Wisconsin-Madison 1210 W. Dayton Street Madison, Wisconsin 53706 Abstract Interactive

More information

Distributed Systems. Rik Sarkar James Cheney Global State & Distributed Debugging February 3, 2014

Distributed Systems. Rik Sarkar James Cheney Global State & Distributed Debugging February 3, 2014 Distributed Systems Rik Sarkar James Cheney Global State & Distributed Debugging Global State: Consistent Cuts The global state is the combination of all process states and the states of the communication

More information

Pre-control and Some Simple Alternatives

Pre-control and Some Simple Alternatives Pre-control and Some Simple Alternatives Stefan H. Steiner Dept. of Statistics and Actuarial Sciences University of Waterloo Waterloo, N2L 3G1 Canada Pre-control, also called Stoplight control, is a quality

More information

6.001 Notes: Section 31.1

6.001 Notes: Section 31.1 6.001 Notes: Section 31.1 Slide 31.1.1 In previous lectures we have seen a number of important themes, which relate to designing code for complex systems. One was the idea of proof by induction, meaning

More information

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur

Module 3. Requirements Analysis and Specification. Version 2 CSE IIT, Kharagpur Module 3 Requirements Analysis and Specification Lesson 6 Formal Requirements Specification Specific Instructional Objectives At the end of this lesson the student will be able to: Explain what a formal

More information

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi

Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Project and Production Management Prof. Arun Kanda Department of Mechanical Engineering Indian Institute of Technology, Delhi Lecture - 8 Consistency and Redundancy in Project networks In today s lecture

More information

The State Design Pattern

The State Design Pattern B B Chapter 24 The State Design Pattern The state design pattern is an object-oriented technique that uses inheritance and class composition. It is applicable to a variety of software design problems where

More information

Advanced Algorithms. Class Notes for Thursday, September 18, 2014 Bernard Moret

Advanced Algorithms. Class Notes for Thursday, September 18, 2014 Bernard Moret Advanced Algorithms Class Notes for Thursday, September 18, 2014 Bernard Moret 1 Amortized Analysis (cont d) 1.1 Side note: regarding meldable heaps When we saw how to meld two leftist trees, we did not

More information

Organizing Spatial Data

Organizing Spatial Data Organizing Spatial Data Spatial data records include a sense of location as an attribute. Typically location is represented by coordinate data (in 2D or 3D). 1 If we are to search spatial data using the

More information

Tabu search and genetic algorithms: a comparative study between pure and hybrid agents in an A-teams approach

Tabu search and genetic algorithms: a comparative study between pure and hybrid agents in an A-teams approach Tabu search and genetic algorithms: a comparative study between pure and hybrid agents in an A-teams approach Carlos A. S. Passos (CenPRA) carlos.passos@cenpra.gov.br Daniel M. Aquino (UNICAMP, PIBIC/CNPq)

More information

DISTRIBUTED HIGH-SPEED COMPUTING OF MULTIMEDIA DATA

DISTRIBUTED HIGH-SPEED COMPUTING OF MULTIMEDIA DATA DISTRIBUTED HIGH-SPEED COMPUTING OF MULTIMEDIA DATA M. GAUS, G. R. JOUBERT, O. KAO, S. RIEDEL AND S. STAPEL Technical University of Clausthal, Department of Computer Science Julius-Albert-Str. 4, 38678

More information

CS604 - Operating System Solved Subjective Midterm Papers For Midterm Exam Preparation

CS604 - Operating System Solved Subjective Midterm Papers For Midterm Exam Preparation CS604 - Operating System Solved Subjective Midterm Papers For Midterm Exam Preparation The given code is as following; boolean flag[2]; int turn; do { flag[i]=true; turn=j; while(flag[j] && turn==j); critical

More information

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System Donald S. Miller Department of Computer Science and Engineering Arizona State University Tempe, AZ, USA Alan C.

More information

AN ALGORITHM WHICH GENERATES THE HAMILTONIAN CIRCUITS OF A CUBIC PLANAR MAP

AN ALGORITHM WHICH GENERATES THE HAMILTONIAN CIRCUITS OF A CUBIC PLANAR MAP AN ALGORITHM WHICH GENERATES THE HAMILTONIAN CIRCUITS OF A CUBIC PLANAR MAP W. L. PRICE ABSTRACT The paper describes an algorithm which generates those Hamiltonian circuits of a given cubic planar map

More information

CS352 Lecture - The Transaction Concept

CS352 Lecture - The Transaction Concept CS352 Lecture - The Transaction Concept Last Revised 11/7/06 Objectives: 1. To introduce the notion of a transaction and the ACID properties of a transaction 2. To introduce the notion of the state of

More information

A Software Product Model Emphasizing Relationships

A Software Product Model Emphasizing Relationships JOURNAL OF INFORMATION SCIENCE AND ENGINEERING 20, 349-377 (2004) A Software Product Model Emphasizing Relationships Department of Computer Science and Information Engineering National Dong Hwa University

More information

The Join the Club Interpretation of Some. Graph Algorithms

The Join the Club Interpretation of Some. Graph Algorithms The Join the Club Interpretation of Some Graph Algorithms Harold Reiter Isaac Sonin June 8, 2000 Abstract Several important tree construction algorithms of graph theory are described and discussed using

More information

Lecture 32. No computer use today. Reminders: Homework 11 is due today. Project 6 is due next Friday. Questions?

Lecture 32. No computer use today. Reminders: Homework 11 is due today. Project 6 is due next Friday. Questions? Lecture 32 No computer use today. Reminders: Homework 11 is due today. Project 6 is due next Friday. Questions? Friday, April 1 CS 215 Fundamentals of Programming II - Lecture 32 1 Outline Introduction

More information

Enhancing The Fault-Tolerance of Nonmasking Programs

Enhancing The Fault-Tolerance of Nonmasking Programs Enhancing The Fault-Tolerance of Nonmasking Programs Sandeep S Kulkarni Ali Ebnenasir Department of Computer Science and Engineering Michigan State University East Lansing MI 48824 USA Abstract In this

More information

CS5314 RESEARCH PAPER ON PROGRAMMING LANGUAGES

CS5314 RESEARCH PAPER ON PROGRAMMING LANGUAGES ORCA LANGUAGE ABSTRACT Microprocessor based shared-memory multiprocessors are becoming widely available and promise to provide cost-effective high performance computing. Small-scale sharedmemory multiprocessors

More information

A New Communication Theory on Complex Information and a Groundbreaking New Declarative Method to Update Object Databases

A New Communication Theory on Complex Information and a Groundbreaking New Declarative Method to Update Object Databases A New Communication Theory on Complex Information and a Groundbreaking New Declarative Method to Update Object Databases Heikki Virkkunen, Email: hvirkkun@gmail.com, Date: 5 April 2016 This article as

More information

A Comparison of Two Fully-Dynamic Delaunay Triangulation Methods

A Comparison of Two Fully-Dynamic Delaunay Triangulation Methods A Comparison of Two Fully-Dynamic Delaunay Triangulation Methods Michael D Adams Department of Electrical and Computer Engineering University of Victoria Victoria, BC, V8W 3P6, Canada Web: http://wwweceuvicca/

More information

Instances and Classes. SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci. 24 Summer 1999 intelligence

Instances and Classes. SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci. 24 Summer 1999 intelligence Instances and Classes in SOFTWARE ENGINEERING Christopher A. Welty David A. Ferrucci 24 Summer 1999 intelligence Software Engineering Over the past decade or so, one of the many areas that artificial intelligence

More information

Interprocess Communication By: Kaushik Vaghani

Interprocess Communication By: Kaushik Vaghani Interprocess Communication By: Kaushik Vaghani Background Race Condition: A situation where several processes access and manipulate the same data concurrently and the outcome of execution depends on the

More information

CA464 Distributed Programming

CA464 Distributed Programming 1 / 25 CA464 Distributed Programming Lecturer: Martin Crane Office: L2.51 Phone: 8974 Email: martin.crane@computing.dcu.ie WWW: http://www.computing.dcu.ie/ mcrane Course Page: "/CA464NewUpdate Textbook

More information

The Bizarre Truth! Automating the Automation. Complicated & Confusing taxonomy of Model Based Testing approach A CONFORMIQ WHITEPAPER

The Bizarre Truth! Automating the Automation. Complicated & Confusing taxonomy of Model Based Testing approach A CONFORMIQ WHITEPAPER The Bizarre Truth! Complicated & Confusing taxonomy of Model Based Testing approach A CONFORMIQ WHITEPAPER By Kimmo Nupponen 1 TABLE OF CONTENTS 1. The context Introduction 2. The approach Know the difference

More information

Function. Description

Function. Description Function Check In Get / Checkout Description Checking in a file uploads the file from the user s hard drive into the vault and creates a new file version with any changes to the file that have been saved.

More information

Multi-Way Search Trees

Multi-Way Search Trees Multi-Way Search Trees Manolis Koubarakis 1 Multi-Way Search Trees Multi-way trees are trees such that each internal node can have many children. Let us assume that the entries we store in a search tree

More information

* What are the different states for a task in an OS?

* What are the different states for a task in an OS? * Kernel, Services, Libraries, Application: define the 4 terms, and their roles. The kernel is a computer program that manages input/output requests from software, and translates them into data processing

More information

Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs

Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs Eliminating Annotations by Automatic Flow Analysis of Real-Time Programs Jan Gustafsson Department of Computer Engineering, Mälardalen University Box 883, S-721 23 Västerås, Sweden jangustafsson@mdhse

More information

PathStack : A Holistic Path Join Algorithm for Path Query with Not-predicates on XML Data

PathStack : A Holistic Path Join Algorithm for Path Query with Not-predicates on XML Data PathStack : A Holistic Path Join Algorithm for Path Query with Not-predicates on XML Data Enhua Jiao, Tok Wang Ling, Chee-Yong Chan School of Computing, National University of Singapore {jiaoenhu,lingtw,chancy}@comp.nus.edu.sg

More information

Combined Modeling and Programming with State Machines

Combined Modeling and Programming with State Machines Combined Modeling and Programming with State Machines Kjetil Andresen Master s Thesis Spring 2014 Combined Modeling and Programming with State Machines Kjetil Andresen 1st May 2014 ii Abstract As part

More information