Practical Exception Handling and Resolution in Concurrent Programs

The paper discusses how atomic actions based on forward error recovery in the form of concurrent exception handling and resolution can be programmed within standard conventional languages (Ada and Ada95). We express the main characteristics of the general atomic action scheme in terms of these languages and discuss a set of templates (skeletons) and programmers' conventions which would allow to program atomic actions within Ada and Ada95. We offer an approach to implementing a resolution procedure (function) and outline other approaches. The scheme is very flexible in that it gives an opportunity for programmers to use any sort of the resolution procedure. We introduce a general concept of self-checking programming, which allows to have the kind of failure assumption necessary for simplifying the atomic action support, and discuss how it can be applied (to Ada, in particular). It is shown how this approach helps to solve the deserter process problem. We outline the main improvements which can be made in the scheme when Ada95 is used. Naturally, our scheme relies on the peculiarities of Ada and Ada95. We believe that this paper discusses important practical questions because it seems unlikely that an existing practical language will have concurrent exception handling of the level sufficient for supporting atomic actions based on forward error recovery.

[1]  Roy H. Campbell,et al.  Atomic actions for fault-tolerance using CSP , 1986, IEEE Transactions on Software Engineering.

[2]  Hermann Kopetz,et al.  Fault tolerance, principles and practice , 1990 .

[3]  K. H. Kim,et al.  Approaches to Mechanization of the Conversation Scheme Based on Monitors , 1982, IEEE Transactions on Software Engineering.

[4]  Alan Burns,et al.  Real-time systems and their programming languages , 1986, International computer science series.

[5]  Ronald A. Olsson,et al.  An Exception Handling Mechanism for SR , 1990, Comput. Lang..

[6]  Valérie Issarny An exception handling mechanism for parallel object-oriented programming , 1992 .

[7]  Arthur Charlesworth,et al.  The multiway rendezvous , 1987, TOPL.

[8]  Brian Randell,et al.  Error recovery in asynchronous systems , 1986, IEEE Transactions on Software Engineering.

[9]  Flaviu Cristian,et al.  Exception Handling and Tolerance of Software Faults , 1995 .

[10]  Lorenzo Strigini,et al.  Backward error recovery via conversations in Ada , 1995, Softw. Eng. J..

[11]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[12]  Nissim Francez,et al.  Multiparty Interactions for Interprocess Communication and Synchronization , 1989, IEEE Trans. Software Eng..

[13]  Andrea Clematis,et al.  Structuring Conversation in Operation/Procedure Oriented Programming Languages , 1993, Comput. Lang..

[14]  Lorenzo Strigini,et al.  Implementations and Extensions of the Conversation Concept , 1991, Fault-Tolerant Computing Systems.

[15]  Alexander D. Stoyen,et al.  Real-Time Euclid: A language for reliable real-time systems , 1989, IEEE Transactions on Software Engineering.

[16]  Alexander Romanovsky Application specific conversation schemes for ADA programs , 1996, Microprocess. Microprogramming.