ADA: Concurrent Programming
A proof system for concurrent ADA programs
Science of Computer Programming
Ada: an advanced introduction
Understanding concurrency in Ada
Understanding concurrency in Ada
IEEE Transactions on Software Engineering
Validating a Demonstration Tool for Graphics-Assisted Debugging of Ada Concurrent Programs
IEEE Transactions on Software Engineering
A semantic model of Ada tasking
Journal of Pascal, Ada & Modula-2
Real-time tasking semantics working group
IRTAW '89 Proceedings of the third international workshop on Real-time Ada issues
Ada 9X requirements
Rationale for the design of the Ada programming language
Rationale for the design of the Ada programming language
A visual execution model for Ada tasking
ACM Transactions on Software Engineering and Methodology (TOSEM)
ACM SIGAda Ada Letters
A controlled experiment with software for teaching Ada tasking
TRI-Ada '93 Proceedings of the conference on TRI-Ada '93
Programming in Ada95
A Proof System for Communicating Sequential Processes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Rationale for the design of the Ada programming language
ACM SIGPLAN Notices - Rationale for the deisgn of the Ada programming language
Programming language structures
Programming language structures
The contour model of block structured processes
ACM SIGPLAN Notices
Static Dependency Analysis for Concurrent Ada 95 Programs
Ada-Europe '02 Proceedings of the 7th Ada-Europe International Conference on Reliable Software Technologies
Dynamic tasks verification with QUASAR
Ada-Europe'05 Proceedings of the 10th Ada-Europe international conference on Reliable Software Technologies
Hi-index | 0.00 |
This article analyzes the semantics of task dependence and termination in Ada. We use a contour model of Ada tasking in examining the implications of and possible motivation for the rules that determine when procedures and tasks terminate during execution of an Ada program. The termination rules prevent the data that belong to run-time instances of scope units from being deallocated prematurely, but they are unnecessarily conservative in this regard. For task instances that are created by invoking a storage allocator, we show that the conservative termination policy allows heap storage to be managed more efficiently than a less conservative policy. The article also examines the manner in which the termination rules affect the synchronization of concurrent tasks. Master-slave and client-server applications are considered. We show that the rules for distributed termination of concurrent tasks guarantee that a task terminates only if it can no longer affect the outcome of an execution. The article is meant to give programmers a better understanding of Ada tasking and to help language designers assess the strengths and weaknesses of the termination model.