Results 1 -
7 of
7
An on-the-fly Reference Counting Garbage Collector for Java
- Dept. of Computer Science, Technion
, 2001
"... Reference counting is not naturally suitable for running on multiprocessors. The update of pointers and reference counts requires atomic and synchronized operations. We present a novel reference counting algorithm suitable for a multiprocessor that does not require any synchronized operation in its ..."
Abstract
-
Cited by 24 (2 self)
- Add to MetaCart
Reference counting is not naturally suitable for running on multiprocessors. The update of pointers and reference counts requires atomic and synchronized operations. We present a novel reference counting algorithm suitable for a multiprocessor that does not require any synchronized operation in its write barrier (not even a compare-and-swap type of synchronization). The algorithm is efficient and may compete with any tracing algorithm.
Sound Rules for Parallel Evaluation of a Functional Language with callcc
, 1993
"... Observationally equivalent programs are programs which are indistinguishable in all contexts, as far as their termination property is concerned. In this paper, we present rules preserving observational equivalence, for the parallel evaluation of programs using call/cc. These rules allow the capture ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
Observationally equivalent programs are programs which are indistinguishable in all contexts, as far as their termination property is concerned. In this paper, we present rules preserving observational equivalence, for the parallel evaluation of programs using call/cc. These rules allow the capture of continuations in any applicative context and they prevent from aborting the whole computation when a continuation is applied in the extent of the call/cc by which it was reied. As a consequence, these results prove that one can design a functional language with rst-class continuations which has transparent constructs for parallelism. 1 Introduction Some programming languages, like Scheme and Standard ML of New Jersey, provide a control operator call/cc which gives the programmer the possibility to reify the current continuation as a rst-class object. When such a reied continuation is applied to a value v, the current computation is aborted and the execution resumes at the point wher...
An Operational Semantics for a Parallel Functional Language With Continuations
, 1992
"... Explicit parallelism can be introduced in Scheme by adding the constructs fork, pcall and future. Katz and Weise gave an implementation where those constructs are transparent even when rst class continuations are used. In this paper, we formalise this work by giving an operational semantics for a ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Explicit parallelism can be introduced in Scheme by adding the constructs fork, pcall and future. Katz and Weise gave an implementation where those constructs are transparent even when rst class continuations are used. In this paper, we formalise this work by giving an operational semantics for a functional language with rst class continuations and transparent constructs for parallelism. We introduce a concept of higher order continuation that we call metacontinuation which preserves sequential properties of continuations in a parallel language. Keywords: Scheme, parallelism, transparency, continuation, metacontinuation, left expression, operational semantics. 1 Introduction There are essentially two trends to add parallel constructs to a functional language. On the one hand, the approach adopted by the ML community [17] consists in adding to the language the notions of processes, channels and communications as in calculi like CCS [16]. An operational semantics is given in [...
A Scalable Reference Counting Garbage Collector
, 1999
"... We study concurrent garbage collection via reference counting. While tracing variants of garbage collection have been well studied with respect to concurrency, the study of reference counting has been somewhat behind. The straightforward concurrent version of reference counting is not at all scalabl ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
We study concurrent garbage collection via reference counting. While tracing variants of garbage collection have been well studied with respect to concurrency, the study of reference counting has been somewhat behind. The straightforward concurrent version of reference counting is not at all scalable. Furthermore, a more advanced study by DeTreville yielded an algorithm which acquires a single lock per update of a pointer, thus, executing all updates sequentially and hindering the scalability of the algorithm. In this paper we propose a new concurrent reference counting algorithm with several desired properties. First, the algorithm employs extremely fine synchronization. In particular, updates of pointers and creation of objects require no synchronization overhead whatsoever (even not a compare-and-swap type of operation). Furthermore, the algorithm is non-disruptive: the program threads are never stopped simultaneously to cooperate with the...
Parallel Copying Garbage Collection using Delayed Allocation
, 1999
"... We present a new approach to parallel copying garbage collection on symmetric multiprocessor (SMP) machines appropriate for Java and other object-oriented languages. Parallel, in this setting, means that the collector runs in several parallel threads. Our collector ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We present a new approach to parallel copying garbage collection on symmetric multiprocessor (SMP) machines appropriate for Java and other object-oriented languages. Parallel, in this setting, means that the collector runs in several parallel threads. Our collector
A Parallel Functional Language With First-Class Continuations. Programming Style and Semantics
- Computers and Artificial Intelligence
"... We present an operational semantics for a functional language with rst-class continuations and transparent constructs for parallelism fork and pcall. The sequential semantics of programs with rst-class continuations is preserved when parallel evaluation is allowed, by verifying whether some expre ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
We present an operational semantics for a functional language with rst-class continuations and transparent constructs for parallelism fork and pcall. The sequential semantics of programs with rst-class continuations is preserved when parallel evaluation is allowed, by verifying whether some expressions have returned a value before applying a continuation. These expressions are the ones that are evaluated before this continuation is applied in a left-to-right sequential order. An implementation is proposed using a notion of higher-order continuation that we call metacontinuation. This semantics is costless when rst-class continuations are not used. Several programs also illustrate the programming style that can be adopted in such a language. Keywords: Scheme, parallelism, transparency, continuation, metacontinuation, left expression, operational semantics. 1 Introduction There are essentially two trends to extend a functional language with parallel constructs. On the one...
Implementing a Parallelism Library for a Functional Subset of LISP
"... This paper discusses four primitives supporting parallel evaluation for a functional subset of LISP, specifically that subset supported by the ACL2 theorem prover. These primitives can be used to provide parallel execution for functions free from side effects without considering race conditions, dea ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This paper discusses four primitives supporting parallel evaluation for a functional subset of LISP, specifically that subset supported by the ACL2 theorem prover. These primitives can be used to provide parallel execution for functions free from side effects without considering race conditions, deadlocks, and other common parallelism pitfalls. We (1) introduce logical definitions for these primitives, (2) explain three features that improve the performance of these primitives, (3) give a brief explanation of the implementation, and (4) use the parallelism primitives in examples to show improvement in evaluation time.

