summaryrefslogtreecommitdiff
path: root/TAO/CIAO
diff options
context:
space:
mode:
authorvenkita <venkita@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-03-10 22:07:28 +0000
committervenkita <venkita@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2004-03-10 22:07:28 +0000
commit8c7ab69df895a47cf6b639fb2a5b8b373f83eb77 (patch)
tree29b9656d1b5f34e7fff45a66cb0233c767a2235c /TAO/CIAO
parent70be0978ef0175116ffc62b2447acf0d7d256578 (diff)
downloadATCD-8c7ab69df895a47cf6b639fb2a5b8b373f83eb77.tar.gz
ChangeLogTag: Wed Mar 10 14:59:19 2004 Venkita Subramonian <venkita@cs.wustl.edu>
Diffstat (limited to 'TAO/CIAO')
-rw-r--r--TAO/CIAO/ChangeLog7
-rwxr-xr-xTAO/CIAO/docs/static_ciao_contents.html242
-rwxr-xr-xTAO/CIAO/docs/static_ciao_index.html23
-rwxr-xr-xTAO/CIAO/docs/static_ciao_toc.html26
4 files changed, 298 insertions, 0 deletions
diff --git a/TAO/CIAO/ChangeLog b/TAO/CIAO/ChangeLog
index ba211073f54..5b0705eac44 100644
--- a/TAO/CIAO/ChangeLog
+++ b/TAO/CIAO/ChangeLog
@@ -1,3 +1,10 @@
+Wed Mar 10 14:59:19 2004 Venkita Subramonian <venkita@cs.wustl.edu>
+
+ * docs/static_ciao_toc.html:
+ * docs/static_ciao_contents.html:
+ * docs/static_ciao_index.html: Updated documentation. Renamed
+ static_ciao.html to static_ciao_contents.html.
+
Wed Mar 10 12:36:01 2004 Jeff Parsons <j.parsons@vanderbilt.edu>
* CIDLC/ServantHeaderGenerator.cpp:
diff --git a/TAO/CIAO/docs/static_ciao_contents.html b/TAO/CIAO/docs/static_ciao_contents.html
new file mode 100755
index 00000000000..2f21e719c61
--- /dev/null
+++ b/TAO/CIAO/docs/static_ciao_contents.html
@@ -0,0 +1,242 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR" content="Mozilla/4.76 [en] (Windows NT 5.0; U) [Netscape]">
+ <title>CIAO Static Configuration</title>
+ <base target="main">
+<!-- $Id$ -->
+</head>
+<body>
+
+<center>
+<h2>
+CIAO Static Configuration Support for Real-Time Platforms</h2></center>
+
+<h3>
+<a NAME="intro"></a>1. Introduction</h3>
+The dynamic packaging, assembly, and deployment mechanisms currently available
+in CIAO are useful for application domains where component metadata is
+less likely to be known a priori, where implementation upgrades may need
+to be performed on-line, and where platform features like loading and unloading
+dynamic libraries are both available and useful.&nbsp; Furthermore, the
+new CCM Deployment and Configuration specification describes a wider range
+of configuration capabilities, opening up the question of alternative component
+configuration strategies more generally and requiring that any solution
+we devise can be migrated to that new configuration approach.
+<p>Therefore, we have incorporated support for component configuration
+in CIAO on platforms like VxWorks, as a set of optional strategies and
+optimizations to the existing CIAO configuration capabilities.&nbsp; By
+supporting both dynamic and static styles of configuration in CIAO, we
+will both (1) be able to realize our short term goals in making CIAO available
+on VxWorks for use in the Boeing PCES/MoBIES OEP, and (2) set a precedent
+for availability of static configuration capabilities more generally, so
+that DRE systems are well-supported within the new Deployment and Configuration
+specification implementation for CIAO as well.
+<p>The fundamental intuition in understanding our approach is that in DRE
+systems the stages of the overall system lifecycle are similar to those
+in more dynamic conventional component-oriented client-server applications.&nbsp;
+However, in DRE systems several phases of the system lifecycle are compressed
+into the compile-time and system-initialization phases, so that (1) for
+testing and verification purposes the set of components in an application
+can be identified and analyzed before run-time, and (2) overheads for run-time
+operation following initialization are reduced and made more predictable.
+Furthermore, due to the nuances of the platforms traditionally used for
+deploying DRE systems, not all features of conventional platforms are available.
+Our approach therefore avoids certain mechanisms that are either unavailable
+or too costly in terms of performance.
+<p>We follow these intuitions in our approach, taking the existing configuration
+phases in CIAO and pushing several of them earlier in the configuration
+lifecycle.&nbsp; We ensure that our approach can be realized in the context
+of the platforms on which the Boeing PCES/MoBIES OEP will be deployed,
+notably VxWorks, by re-factoring the configuration mechanisms and retargeting
+them to use only the services available on the target real-time platforms.
+<br>&nbsp;
+<h3>
+<a NAME="currentarch"></a>2. Current CIAO Configuration Architecture</h3>
+
+<center>
+<p><br><img SRC="ciao-dynamic1.jpg" height=462 width=774>
+<p><b>Figure 1. Current configuration process in CIAO</b></center>
+
+<p>The first stage of the CIAO system lifecycle occurs off-line, when component
+package (.csd) and assembly (.cad) files are generated by a modeling tool
+or other prior stage of the tool chain.&nbsp; These files contain an abstract
+specification of the configuration that is to be achieved by CIAO in each
+particular deployment environment .
+<p>CIAO interprets these .csd and .cad files, and creates and configures
+the components, their run-time server environments, and QoS properties
+within the supporting ORB and other related infrastructure.&nbsp; Currently,
+CIAO runs several daemon processes for each deployment environment: one
+or more Component Installation / Server Activation (CISA) daemons on each
+machine where components can be deployed, an additional Assembly Manager
+daemon and an Assembly Deployer process used by the system developer.
+<p>The Assembly Manager stores an internal table with the target platform
+availability information .&nbsp;&nbsp;&nbsp; The Assembly Deployer tells
+the Assembly Manager which assemblies of components (each assembly is defined
+in a separate .cad file) should be deployed on which target machines.&nbsp;
+The Assembly Manager parses the XML structures in the .cad file, and generates
+its own internal data structure (<b>Figure 2</b>) as an intermediate representation
+of that assembly.
+<p>The Assembly Manager then traverses (<b>Figure 2</b>) this intermediate
+representation, instructing each CISA daemon to install and configure specific
+component servers and containers, to create specific homes, and to instantiate
+specific component instances.&nbsp;&nbsp;&nbsp; Each CISA daemon has additional
+information about the component implementations available on that endsystem
+– each component UUID is mapped to a disk path for the .dll or .so file
+within which a factory method for its home factory is defined.
+<center>
+<p><img SRC="ciao-dynamic2.jpg" height=384 width=699>
+<p><b>Figure 2. Intermediate representation of configuration information</b></center>
+
+<p>The following steps are optional, and will only be performed if they
+are explicitly specified in the assembly definition itself.&nbsp; For the
+sake of discussion, we consider the case where all the steps are in fact
+specified.&nbsp; The Assembly Manager will tell the CISA daemon the UUIDs
+of the components to be installed in that component server, and the CISA
+daemon will look up and load the appropriate dynamic library, invoke the
+home factory method to create the home, and then invoke the home’s component
+creation method.&nbsp; After all the component instances and homes have
+been created and references to them have been obtained, the assembly manager
+will then make all the connections between ports and receptacles, facets,
+and event sources and sinks by invoking connect and subscribe methods on
+the receiving end component.
+<p>QoS-specific metadata like priorities can be configured by a .cad file
+extension called a real-time descriptor (.rtcad) file.&nbsp; The Assembly
+Manager will read the .rtcad file and will parse and associate real-time
+policies with the appropriate component instances.&nbsp;&nbsp; One implication
+of this mechanism is that the Assembly Manager will maintain QoS meta-data
+within its intermediate representation, alongside the conventional CCM
+meta-data.
+<p>Furthermore, when the Assembly Manager interacts with the CISA daemon(s)
+on each endsystem, commands to configure particular component and component
+server run-time infrastructure QoS properties are passed from the Assembly
+Manager to the CISA daemon.&nbsp; The ORB (and as a future extension the
+ORB Services) of the endsystem on which the components are installed is
+currently configured via the ACE Service Configurator.&nbsp; The CISA daemon
+maps different service configurations (as defined in particular svc.conf
+files) to logical names used in the component assembly descriptors.
+<p>The logical configuration names are encoded within the .cad file as
+an extension of the conventional .cad file format using the “extension”
+element of the existing .cad file XML DTD.&nbsp; The Assembly Manager passes
+a component server creation command, containing a logical configuration
+name, which the CISA daemon maps to a particular svc.conf file when it
+creates a new component server.&nbsp; The CISA daemon adds a command line
+flag to the execution command line used to spawn the new component server,
+which causes that configuration file to be parsed and applied during startup
+of the component server itself.
+<h3>
+<a NAME="staticapproach"></a>3. Static Configuration Approach</h3>
+In the static configuration approach (<b>Figure 3</b>), configurations&nbsp;
+XML files are translated in a code generation step just before compile
+time (managed by the same project/Makefile processes that do the compilation)
+into C++ header and source files that are then compiled and linked with
+the main application.
+<center>
+<p><img SRC="ciao-static1.jpg" height=523 width=800>
+<p><b>Figure 3. Static Configuration in CIAO</b></center>
+
+<p>First, one of the generated files is a C++ header file, so that it can
+be included directly by C++ source files.&nbsp; There is no additional
+parsing required to import a number of static constants and identifiers
+it declares and defines, so that those constants end up being compiled
+directly into C++ code.&nbsp; Second, where enumeration of information
+is needed, the header file contains simple homogeneous C++ arrays so that
+C++ source code can iterate over those arrays with minimal overhead.&nbsp;
+Third, it declares information so that later information depends on earlier
+information (<b>Figure 4</b>), and the components are directly configured
+within that header file.
+<center>
+<p><img SRC="ciao-static2.jpg" height=476 width=816>
+<p><b>Figure 4. All XML files are parsed offline and stored as cross-referenced
+tables in Static_Assembly_Config.h</b></center>
+
+<p>The major issues that we addressed in developing a re-factored version
+of the CIAO configuration mechanisms are as follows:
+<p>1. XML parsing is too expensive to be performed during system initialization,
+so that all such parsing has been moved off-line to before compile-time,
+and the resulting information is linked statically into the application
+itself.
+<p>2. Each endsystem boots and initializes in a single process address
+space, so that any remaining inter-process communication between daemons
+is replaced by direct interactions between objects, or at most between
+threads.
+<p>3. Dynamic link libraries are unavailable on VxWorks, so an alternative
+mechanism for obtaining the home factory method entry point is needed.
+We gather this information from the XML files and statically generate a
+map containing&nbsp; the entry point function names and the entry point
+function pointers. This information will be used by the CIAO container
+implementation instead of trying to load a dll and then finding the entry
+point in the dll.
+<h4>
+Moving XML Parsing Earlier</h4>
+We first focused on taking the XML parsing stage off-line.&nbsp; Since
+the time required to do this by CIAO is currently reasonable as an off-line
+activity, we simply created (<b>Figure 4</b>) a stripped-down version of
+the Assembly Manager (reusing the existing class libraries the Assembly
+Manager uses) that after it performs the XML parsing and generation of
+its intermediate representation, emits a C++ header file containing that
+intermediate representation.
+<h4>
+Combining Configuration Daemons at Run-Time</h4>
+The intermediate representation is included in a configuration engine (CIAO::Static_Configurator)
+that consists of a simple reader for the intermediate representation, again
+derived from the code currently used in the Assembly Manager, which will
+dispatch to the configuration code used by the CISA daemons in the dynamic
+case.&nbsp; The configuration engine will be invoked from the application’s
+main entry point prior to starting execution of the application itself.
+<h4>
+Eliminating Dynamic Library Loading</h4>
+All code will need to be known a priori, and linked statically into the
+application.&nbsp; If alternative configurations must be supported statically,
+then those separate configurations can be alternative selections chosen
+during the build process.&nbsp; If alternative configurations must be selected
+adaptively at run-time then all the code for each possible configuration
+must be linked in statically, and appropriate mechanisms used to re-target
+a logical name dynamically to each particular configuration (e.g., different
+configurations for different system modes).
+<br>&nbsp;
+<br>&nbsp;
+<br>
+<br>
+<center>
+<p><img SRC="ciao-static-vs-dynamic.jpg" height=384 width=735>
+<br><b>Figure 5. CIAO Dynamic vs Static Configuration</b></center>
+
+<p><a NAME="status"></a><b>4. Status of CIAO Static Configuration</b>
+<p>The initial version of the CIAO static configurator is available under
+$CIAO_ROOT/tools/static_configurator.
+<p>To run the static configurator,
+<p><b><tt>>Static_Assembly_Parser -a &lt;.cad file></tt></b>
+<p>This will generate three files -
+<p><b><tt>Static_CCM_App.cpp</tt></b> - this file contains the main program
+which instantiates the component server and invokes the static configuration
+engine to create containers, homes, etc.
+<p><b><tt>Static_CCM_App.mpc</tt></b> - this file contains the necessary
+files for building the static application. You have to manually change
+this file so as to include files that are not known to the static configurator.
+<p><b><tt>Static_Assembly_Config.h</tt></b> - this file contains the C++
+intermediate representation of all the information in the .cad, .csd and
+.ssd XML files.
+<p><a NAME="futurework"></a><b>5. Future work</b>
+<p>The current implementation does not have support for processing RTCORBA
+policy related information in .rtcad file. We plan to support this in a
+future implementation.
+<p>The current implementation does not have support for multiple component
+servers running on multiple processors. Multiprocessor scenario involves
+coordination and synchronization among the component servers running on
+different processors. There has to be some kind of a mediator which determines
+that all components are instantiated before connections can be made among
+them.
+<p>We aim to ensure that the time and space costs of initialization and
+operation are kept as close as possible to those currently seen in the
+Boeing PCES/MoBIES OEP, and we will follow our implementation of these
+alternative mechanisms by performing empirical studies to determine the
+extent to which our approach succeeds in these goals, and to identify opportunities
+for improvement.
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
+
diff --git a/TAO/CIAO/docs/static_ciao_index.html b/TAO/CIAO/docs/static_ciao_index.html
new file mode 100755
index 00000000000..627e07c65ca
--- /dev/null
+++ b/TAO/CIAO/docs/static_ciao_index.html
@@ -0,0 +1,23 @@
+<html>
+
+<head>
+<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+<meta name="ProgId" content="FrontPage.Editor.Document">
+<title>New Page 1</title>
+<!-- $Id$ -->
+
+</head>
+
+<frameset cols="294,*">
+ <frame name="contents" target="main" src="static_ciao_toc.html">
+ <frame name="main" src="static_ciao_contents.html" target="main">
+ <noframes>
+ <body>
+
+ <p>This page uses frames, but your browser doesn't support them.</p>
+
+ </body>
+ </noframes>
+</frameset>
+
+</html>
diff --git a/TAO/CIAO/docs/static_ciao_toc.html b/TAO/CIAO/docs/static_ciao_toc.html
new file mode 100755
index 00000000000..710276e2880
--- /dev/null
+++ b/TAO/CIAO/docs/static_ciao_toc.html
@@ -0,0 +1,26 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="Author" content="Venkita Subramonian">
+ <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
+ <title>CIAO Static Configuration</title>
+ <base target="contents">
+<!-- $Id$ -->
+</head>
+<body>
+<h3 align="center">CIAO Static Configuration Documentation </h3>
+
+<ol>
+
+<li><a target="main" href="static_ciao_contents.html#intro">Introduction</a></li>
+<li><a target="main" href="static_ciao_contents.html#currentarch">Current CIAO Configuration
+Architecture</a></li>
+<li><a target="main" href="static_ciao_contents.html#staticapproach">Static Configuration
+Approach</a></li>
+<li><a target="main" href="static_ciao_contents.html#status">Status of CIAO Static Configuration</a></li>
+<li><a target="main" href="static_ciao_contents.html#futurework">Future work</a></li>
+</ol>
+</body>
+</html>
+