• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

A Theory of Dynamic Software Updates (2006)

by G P Stoyle
Add To MetaCart

Tools

Sorted by:
Results 1 - 6 of 6

Practical Dynamic Software Updating

by Iulian Gheorghe Neamtiu , 2008
"... This dissertation makes the case that programs can be updated while they run, with modest programmer effort, while providing certain update safety guarantees, and without imposing a significant performance overhead. Few systems are designed with on-the-fly updating in mind. Those systems that permit ..."
Abstract - Cited by 105 (32 self) - Add to MetaCart
This dissertation makes the case that programs can be updated while they run, with modest programmer effort, while providing certain update safety guarantees, and without imposing a significant performance overhead. Few systems are designed with on-the-fly updating in mind. Those systems that permit it support only a very limited class of updates, and generally provide no guarantees that following the update, the system will behave as intended. We tackle the on-the-fly updating problem using a compiler-based approach called dynamic software updating (DSU), in which a program is patched with new code and data while it runs. The challenge is in making DSU practical: it should support changes to programs as they occur in practice, yet be safe, easy to use, and not impose a large overhead. This dissertation makes both theoretical contributions—formalisms for reasoning about, and ensuring update safety—and practical contributions—Ginseng, a DSU implementation for C. Ginseng supports a broad range of changes to C programs, and performs a suite of safety analyses to ensure certain update safety
(Show Context)

Citation Context

...his set of types using a novel abstraction violating alias analysis. The analysis follows the general approach of effect reconstruction [23, 10, 1], and is described in more detail in Stoyle’s thesis =-=[32]-=-. Pointers are annotated with an “effect” which lists the types whose values they may be pointing into. For example, a pointer created by &t.x would include the type of t in its effect. If such a poin...

unknown title

by Iulian Neamtiu, Michael Hicks
"... Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approac ..."
Abstract - Add to MetaCart
Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use. In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs—Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years ’ worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32%.
(Show Context)

Citation Context

...his set of types using a novel abstraction violating alias analysis. The analysis follows the general approach of effect reconstruction [23, 10, 1], and is described in more detail in Stoyle’s thesis =-=[32]-=-. Pointers are annotated with an “effect” which lists the types whose values they may be pointing into. For example, a pointer created by &t.x would include the type of t in its effect. If such a poin...

unknown title

by Iulian Neamtiu, Michael Hicks
"... Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approac ..."
Abstract - Add to MetaCart
Software updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use. In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs—Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years ’ worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32%.
(Show Context)

Citation Context

...his set of types using a novel abstraction violating alias analysis. The analysis follows the general approach of effect reconstruction [23, 10, 1], and is described in more detail in Stoyle’s thesis =-=[32]-=-. Pointers are annotated with an “effect” which lists the types whose values they may be pointing into. For example, a pointer created by &t.x would include the type of t in its effect. If such a poin...

Under consideration for publication in J. Functional Programming 1 Acute: High-level programming language design for distributed computation

by Peter Sewell, James J. Leifer, Keith Wansbrough, Mair Allen-williams, Pierre Habouzit, Viktor Vafeiadis
"... † INRIA Rocquencourt Existing languages provide good support for typeful programming of standalone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with som ..."
Abstract - Add to MetaCart
† INRIA Rocquencourt Existing languages provide good support for typeful programming of standalone programs. In a distributed system, however, there may be interaction between multiple instances of many distinct programs, sharing some (but not necessarily all) of their module structure, and with some instances rebuilt with new versions of certain modules as time goes on. In this paper we discuss programminglanguage support for such systems, focussing on their typing and naming issues. We describe an experimental language, Acute, which extends an ML core to support distributed development, deployment, and execution, allowing type-safe interaction between separately-built programs. The main features are: (1) type-safe marshalling of arbitrary values; (2) type names that are generated (freshly and by hashing) to ensure that type equality tests suffice to protect the invariants of abstract types, across the entire distributed system; (3) expression-level names generated to ensure that name equality tests suffice for type safety of associated values, e.g. values carried on named channels; (4) controlled dynamic rebinding of marshalled values to local resources; and (5) thunkification of threads and mutexes to support computation mobility.
(Show Context)

Citation Context

... identifier appears in a context which needs to destruct the outermost structure of the value. Both of these are, in the absence of marshalling, observationally equivalent to call-by-value reduction (=-=Stoyle, 2006-=-). The destruct-time semantics permits more rebinding, but is also rather complex. We therefore use the redex-time strategy for module references (local expression reduction remains standard CBV). For...

Abstract

by Peter Sewell, Mike Hicks, Gareth Stoyle, Keith Wansbrough, Gavin Bierman
"... Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to ..."
Abstract - Add to MetaCart
Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics. In this paper we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to the simply-typed call-by-value λ-calculus. To do so we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a λmarsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically-typed. We sketch an extension of λmarsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a λupdate calculus with simple primitives to
(Show Context)

Citation Context

...→ Ω). A proof of the original result has now been completed, using an intricate operational correspondence argument. We summarise the main points here; the full details appear in Stoyle’s PhD thesis (=-=Stoyle, 2006-=-). The proofs of the other technical results are straightforward; we give outlines here and refer the reader to the technical report (Bierman et al., 2003b) for details. 2 Overview Revisiting CBV λ-Ca...

Prototyping DSU techniques using Python

by Sébastien Martinez, Fabien Dagnat, Université Européenne De Bretagne, Jérémy Buisson, Université Européenne De Bretagne
"... This paper presents PyMoult, a Python library im-plementing various dynamic software update (DSU) mechanisms. This library aims to provide a proto-typing platform for experimenting with DSU and to implement a vast choice of update mechanisms while allowing their combination and customization. We sel ..."
Abstract - Add to MetaCart
This paper presents PyMoult, a Python library im-plementing various dynamic software update (DSU) mechanisms. This library aims to provide a proto-typing platform for experimenting with DSU and to implement a vast choice of update mechanisms while allowing their combination and customization. We selected different update mechanisms from the literature and implemented them in PyMoult. This paper focuses on how we implemented these mechanisms and discusses the cost of implementing DSU in Python.
(Show Context)

Citation Context

...st of implementing DSU in Python. 1 Introduction A huge number of Dynamic Software Update platforms have been proposed. For instance, Seifzadeh et al. [8] cite around fifty proposals. Several surveys =-=[4, 7, 8, 9]-=- help a software engineer needing such a platform by comparing their characteristics and constraints. Either an existing DSU platform fits exactly his requirements or he has to come up with a new ad-h...

Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University