Browsing by Author "Hofmeister, Christine R."
Now showing 1 - 3 of 3
Results Per Page
Sort Options
Item Dynamic Reconfiguration of Distributed Applications(1998-10-15) Hofmeister, Christine R.Applications requiring concurrency or access to specialized hardware are naturally written as distributed applications, where each software component (module) can execute on a different machine, and modules interact via bindings. In order to make changes to very long-running applications or those that must be continuously availablet we must dynamically change the application. Dynamic reconfiguration of a distributed application is the act of changing the configuration of the application as it executes. Examples of configuration changes are replacing a module, moving a module to another machine, and adding or removing modules from the application. The most challenging aspect of dynamic reconfiguration is that an application in execution has state information, both within the modules and within the communication channels between modules. This state information may need to be transferred from the old configuration to the new in order to reach an application state compatible with the new configuration. Thus, in addition to requiring a mechanism for changing the configuration during execution, dynamic reconfiguration requires that modules be able to divulge and install state information, and requires a mechanism for coordinating the communication during recon figuration. Prior to this work, all systems supporting some form of dynamic reconfiguration have given the application programmer no support nor even guidelines for capturing and restoring an application's state information. We have developed a machine-in dependent method for installing this functionality in the application, given a set of reconfiguration points designated by the programmer. This new technique has been implemented as part of the general framework we have developed to support dynamic reconf iguration of distributed applications. These reconfiguration capabilities were implemented on top of existing operating systems and compilers, requiring no modifications to either. They support dynamic reconfiguration for applications composed of mixed languages, communicating via message passing, running on a heterogeneous distributed platform. (Also cross-referenced as UMIACS-TR-94-8)Item A Framework for Dynamic Reconfiguration of Distributed Programs(1998-10-15) Hofmeister, Christine R.; Purtilo, James M.Current techniques for a software engineer to change a computer program are limited to static activities once the application begins executing, there are few reliable ways to reconfigure it. We have developed a general framework for reconfigurating application software dynamically. A sound method for managing changes in a running program allows developers to perform maintenance activities without loss of the overall system's service. The same methods also support some forms of load balancing in a distributed system, and research in software fault tolerance. Our goal has been to create an environment for organizing and effecting software reconfiguration activities dynamically. First we present the overall framework within which reconfiguration is possible, then we describe our formal approach for programmers to capture the state of a process abstractly. Next, we describe our implementation of this method within an environment for experimenting with program reconfiguration. We conclude with a summary of the key research problems that we are continuing to pursue in this area. (Also cross-referenced as UMIACS-TR-93-78)Item Writing Distributed Programs in Polylith(1998-10-15) Hofmeister, Christine R.; Atlee, Joanne; Purtilo, James M.Polylith is a software interconnection system that allows programmers to configure applications from mixed-language software components (modules), and then execute those applications in diverse environments. In general, communication between components can be implemented with TCP/IP or XNS protocols in a network; via shared memory between light-weight threads on a tightly coupled multiprocessor; using custom-hardware channels between processors; or using simply a 'branch' instruction within the same process space. Flexibility in how components are interconnected is made possible by a 'software bus' organization. This document serves as a manual for programmers who wish to use one particular software busthe TCP/IP-based network bus. (Also cross-referenced as UMIACS-TR-90-149)