TAO (software)
Encyclopedia
The ACE ORB is a freely available, open-source, and standard
s-compliant real-time C++
implementation of CORBA
based upon the Adaptive Communication Environment
(ACE). It attempts to provide efficient, predictable, and scalable quality of service
(QoS) end-to-end. TAO applies the best software practices and patterns to automate the delivery of high-performance and real-time QoS to distributed applications. TAO is for developers of distributed and embedded applications who have stringent performance demands.
. That's why TAO integrates the network interfaces, OS I/O subsystem, ORB, and middleware services in order to provide an end-to-end solution. For instance, consider the CORBA Event Service, which simplifies application software by supporting decoupled suppliers and consumers, asynchronous event delivery, and distributed group communication. TAO enhances the standard CORBA Event Service to provide important features, such as real-time event dispatching and scheduling, periodic event processing, efficient event filtering and correlation mechanisms, and multicast protocols required by real-time applications.
, RPC
, an OO presentation, and Berkeley-sockets. In OO, RPC is usually termed “remote method invocation” (RMI), because subroutines or procedures that are directly associated with objects or classes are termed methods, but the concept is fundamentally the same in that the caller at the origin is suspended while the method at the destination object executes. This provides a simplicity of execution of software that can be desirable when subroutine is the idiom that is intended in the design or architecture.
This becomes especially troublesome when the superior and subordinate are on different processors. Because the superior is suspended and only the subordinate is actively executing, two threads
on two processors are occupied in the accomplishment of a single delegated operation. Typically, the counter-measure to this when using RMI/RPC is to increase the number of threads in the superior to match the desired total number of concurrent operations throughout the set of all subordinates. The resources consumed by a thread are typically greater than the resources consumed by communicating each delegated operation to the subordinate. Thus the overhead of concurrency is multiplied when using an RPC/RMI approach when compared to the approach of allowing the superior to continue executing to perform other tasks.
The alternative used by competitors to CORBA is simply to forgo the subroutine model so that the superior continues to execute concurrently with the delegated operations. The superior simply prepares a message that is sent to the subordinate. The subordinate immediately acknowledges the receipt of the message that requests the accomplishment of the delegated operation (without yet starting to accomplish the delegated operation itself). The superior then goes about other business, such as preparing messages for other delegated operations either to that same subordinate or to other subordinates. Each subordinate that has been delegated an operation, enqueues the operation's requesting message in a message queue that corresponds to the message's priority or deadline. A thread (perhaps in a thread pool) dequeues that message from that queue to accomplish the delegated operation. Upon accomplishment, the result is sent as a different message to the superior. The superior processes the result messages similarly to the way the subordinate processed the delegation messages.
TAO provides this alternative through the asynchronous method invocation
(AMI) and Asynchronous Method Handling (AMH) mechanisms. AMI is used by clients to make remote invocations without blocking for a response, the reply is received as a callback. AMH is used by servers to delay sending responses, for example, if the server itself needs to wait for other remote calls. AMI is part of the CORBA standard. AMH is a TAO extension to the CORBA specification.
and freely used and redistributed without developer or run-time licensing costs. Commercial support, documentation, training, and consulting for TAO are available from multiple vendors. Many other third-party tools and services have also been integrated with TAO.
TAO has been ported to many operating systems, such as Microsoft Windows
, Embedded systems such as VxWorks
and LynxOS
, high end systems like OpenVMS
, and Unix
systems such as Solaris and Linux
.
Standardization
Standardization is the process of developing and implementing technical standards.The goals of standardization can be to help with independence of single suppliers , compatibility, interoperability, safety, repeatability, or quality....
s-compliant real-time C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
implementation of CORBA
Çorba
Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
based upon the Adaptive Communication Environment
Adaptive Communication Environment
The Adaptive Communication Environment is an open-source framework used to simplify various aspects of network programming...
(ACE). It attempts to provide efficient, predictable, and scalable quality of service
Quality of service
The quality of service refers to several related aspects of telephony and computer networks that allow the transport of traffic with special requirements...
(QoS) end-to-end. TAO applies the best software practices and patterns to automate the delivery of high-performance and real-time QoS to distributed applications. TAO is for developers of distributed and embedded applications who have stringent performance demands.
Domain of application
Certain real-time applications have benefited from TAO's use of familiar software concepts to present a solution to challenging real-time software problems. In general, real-time systems require predictable timing characteristics and robustness since they are used in mission-critical domains. Other real-time applications require low development cost and fast time to market. TAO addresses both of these by providing an already-implemented general-purpose communications framework that uses concepts familiar to non-real-time portions of the software industry.Advantages
Traditionally, the barrier to viable real-time CORBA has been that many real-time challenges are associated with end-to-end system design aspects that transcend the layering boundaries traditionally associated with CORBAÇorba
Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
. That's why TAO integrates the network interfaces, OS I/O subsystem, ORB, and middleware services in order to provide an end-to-end solution. For instance, consider the CORBA Event Service, which simplifies application software by supporting decoupled suppliers and consumers, asynchronous event delivery, and distributed group communication. TAO enhances the standard CORBA Event Service to provide important features, such as real-time event dispatching and scheduling, periodic event processing, efficient event filtering and correlation mechanisms, and multicast protocols required by real-time applications.
Familiar concepts presented
TAO brings familiar concepts from elsewhere in the software industry to real-time systems. These concepts include CORBAÇorba
Chorba , ciorbă , shurpa , shorpo , or sorpa is one of various kinds of soup or stew found in national cuisines across Middle East...
, RPC
Remote procedure call
In computer science, a remote procedure call is an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space without the programmer explicitly coding the details for this remote interaction...
, an OO presentation, and Berkeley-sockets. In OO, RPC is usually termed “remote method invocation” (RMI), because subroutines or procedures that are directly associated with objects or classes are termed methods, but the concept is fundamentally the same in that the caller at the origin is suspended while the method at the destination object executes. This provides a simplicity of execution of software that can be desirable when subroutine is the idiom that is intended in the design or architecture.
Suspension of execution
TAO, like all CORBA implementations, presents an OO RMI interface to the application. Invoking a subroutine suspends the execution of the superior who is delegating the operation and transfers the sole right to execute to the invoked method at the destination object, the subordinate to which the operation was delegated. Perhaps the caller could go on and perform other activities during that delegated operation, but the caller is suspended, awaiting the final accomplished result from the subordinate.This becomes especially troublesome when the superior and subordinate are on different processors. Because the superior is suspended and only the subordinate is actively executing, two threads
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
on two processors are occupied in the accomplishment of a single delegated operation. Typically, the counter-measure to this when using RMI/RPC is to increase the number of threads in the superior to match the desired total number of concurrent operations throughout the set of all subordinates. The resources consumed by a thread are typically greater than the resources consumed by communicating each delegated operation to the subordinate. Thus the overhead of concurrency is multiplied when using an RPC/RMI approach when compared to the approach of allowing the superior to continue executing to perform other tasks.
The alternative used by competitors to CORBA is simply to forgo the subroutine model so that the superior continues to execute concurrently with the delegated operations. The superior simply prepares a message that is sent to the subordinate. The subordinate immediately acknowledges the receipt of the message that requests the accomplishment of the delegated operation (without yet starting to accomplish the delegated operation itself). The superior then goes about other business, such as preparing messages for other delegated operations either to that same subordinate or to other subordinates. Each subordinate that has been delegated an operation, enqueues the operation's requesting message in a message queue that corresponds to the message's priority or deadline. A thread (perhaps in a thread pool) dequeues that message from that queue to accomplish the delegated operation. Upon accomplishment, the result is sent as a different message to the superior. The superior processes the result messages similarly to the way the subordinate processed the delegation messages.
TAO provides this alternative through the asynchronous method invocation
Asynchronous method invocation
In object-oriented programming, asynchronous method invocation , also known as asynchronous method calls or asynchronous pattern is a design pattern for asynchronous invocation of potentially long-running methods of an object.It is equivalent to the IOU pattern described in 1996 by Allan...
(AMI) and Asynchronous Method Handling (AMH) mechanisms. AMI is used by clients to make remote invocations without blocking for a response, the reply is received as a callback. AMH is used by servers to delay sending responses, for example, if the server itself needs to wait for other remote calls. AMI is part of the CORBA standard. AMH is a TAO extension to the CORBA specification.
Availability
TAO can be downloaded from the InternetInternet
The Internet is a global system of interconnected computer networks that use the standard Internet protocol suite to serve billions of users worldwide...
and freely used and redistributed without developer or run-time licensing costs. Commercial support, documentation, training, and consulting for TAO are available from multiple vendors. Many other third-party tools and services have also been integrated with TAO.
TAO has been ported to many operating systems, such as Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Embedded systems such as VxWorks
VxWorks
VxWorks is a real-time operating system developed as proprietary software by Wind River Systems of Alameda, California, USA. First released in 1987, VxWorks is designed for use in embedded systems.- History :...
and LynxOS
LynxOS
The LynxOS RTOS is a Unix-like real-time operating system from LynuxWorks . Sometimes known as the Lynx Operating System, LynxOS features full POSIX conformance and, more recently, Linux compatibility...
, high end systems like OpenVMS
OpenVMS
OpenVMS , previously known as VAX-11/VMS, VAX/VMS or VMS, is a computer server operating system that runs on VAX, Alpha and Itanium-based families of computers. Contrary to what its name suggests, OpenVMS is not open source software; however, the source listings are available for purchase...
, and Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
systems such as Solaris and Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
.
See also
- ACEAdaptive Communication EnvironmentThe Adaptive Communication Environment is an open-source framework used to simplify various aspects of network programming...
- CIAOComponent-Integrated ACE ORBThe component-integrated ACE ORB is a CORBA component model implementation built on top of TAO.CIAO is currently aiming to provide component-oriented paradigm to the distributed, real-time, embedded system developers by abstracting DRE-critical systemic aspects, such as QoS requirements, RT...
- WikiBooks:ACE+TAO Opensource Programming Notes
- ZEN
External links
- TAO Homepage
- Download TAO
- Remedy IT - commercial support for TAO
- TPG - TAO Programmers Guide
- Object Computing Inc.'s distribution of TAO - commercially supported version of TAO
- PrismTech's distribution of TAO - commercially supported version of TAO