Towards monolingual programming environments
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Optimistic recovery in distributed systems
ACM Transactions on Computer Systems (TOCS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
A formal approach to undo operations in programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Computer
Virtual copies: at the boundary between classes and instances
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
Computer Languages
SOSP '87 Proceedings of the eleventh ACM Symposium on Operating systems principles
A mechanism for efficient debugging of parallel programs
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Opportunistic garbage collection
ACM SIGPLAN Notices
Empirical analysis of a LISP system
Empirical analysis of a LISP system
IGOR: a system for program debugging via reversible execution
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Supporting reverse execution for parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
On optimistic methods for concurrency control
ACM Transactions on Database Systems (TODS)
An architecture for mostly functional languages
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
User Recovery and Reversal in Interactive Systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
A real-time garbage collector based on the lifetimes of objects
Communications of the ACM
The Cornell program synthesizer: a syntax-directed programming environment
Communications of the ACM
An empirical study of list structure in Lisp
Communications of the ACM
ICON Programmng Language
PROVIDE: A Process Visualization and Debugging Environment
IEEE Transactions on Software Engineering
Garbage collection in a large LISP system
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
A message system supporting fault tolerance
SOSP '83 Proceedings of the ninth ACM symposium on Operating systems principles
Publishing: a reliable broadcast communication mechanism
SOSP '83 Proceedings of the ninth ACM symposium on Operating systems principles
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
US&R: A new framework for redoing (Extended Abstract)
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
An Interpreter for Extended Lambda Calculus
An Interpreter for Extended Lambda Calculus
Design of the opportunistic garbage collector
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Debugging standard ML without reverse engineering
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Some issues and strategies in heap management and memory hierarchies
ACM SIGPLAN Notices
A bibliography of parallel debuggers, 1990 edition
ACM SIGPLAN Notices
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
Optimal tracing and incremental reexecution for debugging long-running programs
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
History cache: hardware support for reverse execution
ACM SIGARCH Computer Architecture News
IEEE Transactions on Parallel and Distributed Systems
A persistent runtime system using persistent data structures
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
SRDS '96 Proceedings of the 15th Symposium on Reliable Distributed Systems
Libckpt: transparent checkpointing under Unix
TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings
Hi-index | 0.00 |
Demonic memory is a form of reconstructive memory for process histories. As a process executes, its states are regularly checkpointed, generating a history of the process at low time resolution. Following the initial generation, any prior state of the process can be reconstructed by starting from a checkpointed state and re-executing the process up through the desired state, thereby exploiting the redundancy between the states of a process and the description of that process (i.e., a computer program).The reconstruction of states is automatic and transparent. The history of a process may be examined as though it were a large two-dimensional array, or address space-time, with a normal address space as one axis and steps of process time as the other. An attempt to examine a state that is not physically stored triggers a “demon” which reconstructs that memory state before access is allowed.Regeneration requires an exact description of the original execution of the process. If the original process execution depends on non-deterministic events (e.g., user input), these events are recorded in an exception list, and are replayed at the proper points during re-execution.While more efficient than explicitly storing all state changes, such a checkpointing system is still prohibitively expensive for many applications; each copy (or snapshot) of the system's state may be very large, and many snapshots may be required. Demonic memory saves both space and time by using a virtual copy mechanism. (Virtual copies share unchanging data with the objects that they are copies of, only storing differences from a prototype or original [MiBK86].) In demonic memory, the snapshot at each checkpoint is a virtual copy of the preceding checkpoint's snapshot. Hence it is called a virtual snapshot. In order to make the virtual snapshot mechanism efficient, state information is initially saved in relatively large units of space and time, on the order of pages and seconds, with single-word/single-step regeneration undertaken only as needed. This permits the costs of indexing and lookup operations to be amortized over many locations.