|
1. |
Making C++ objects persistent: The hidden pointers |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page 1285-1303
A. Biliris,
S. Dar,
N. H. Gehani,
Preview
|
PDF (986KB)
|
|
摘要:
AbstractC++ objects of types that have virtual functions or virtual base classes contain volatile (‘memory’) pointers. We call such pointers ‘hidden pointers’ because they were not specified by the user. If such C++ objects are made persistent, then these pointers become invalid across program invocations. We encountered this problem in our implementation of O++, which is a database language based on C++. O++ extends C++ with the ability to create and access persistent objects.In this paper, we describe the hidden pointers problem in detail and present several solutions to it. Our solutions are elegant in that they do not require modifying the C++ compiler or the semantics of C++. We also discuss another problem that arises because C++ allows base class pointers to point to derived class objects. C++ has emerged as the de facto standard language for software development, and database systems based on C++ have attracted much attention. We hope that the details and techniques presented will be useful to database researchers and to implementors of object‐oriented database systems bas
ISSN:0038-0644
DOI:10.1002/spe.4380231202
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
2. |
Utopia: A load sharing facility for large, heterogeneous distributed computer systems |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page 1305-1336
Songnian Zhou,
Xiaohu Zheng,
Jingwen Wang,
Pierre Delisle,
Preview
|
PDF (2281KB)
|
|
摘要:
AbstractLoad sharing in large, heterogeneous distributed systems allows users to access vast amounts of computing resources scattered around the system and may provide substantial performance improvements to applications. We discuss the design and implementation issues in Utopia, a load sharing facility specifically built for large and heterogeneous systems. The system has no restriction on the types of tasks that can be remotely executed, involves few application changes and no operating system change, supports a high degree of transparency for remote task execution, and incurs low overhead. The algorithms for managing resource load information and task placement take advantage of the clustering nature of large‐scale distributed systems; centralized algorithms are used within host clusters, and directed graph algorithms are used among the clusters to make Utopia scalable to thousands of hosts. Task placements in Utopia exploit the heterogeneous hosts and consider varying resource demands of the tasks. A range of mechanisms for remote execution is available in Utopia that provides varying degrees of transparency and efficiency.A number of applications have been developed for Utopia, ranging from a load sharing command interpreter, to parallel and distributed applications, to a distributed batch facility. For example, an enhanced Unix command interpreter allows arbitrary commands and user jobs to be executed remotely, and a parallel make facility achieves speed‐ups of 15 or more by processing a collection of tasks in parallel on a number of ho
ISSN:0038-0644
DOI:10.1002/spe.4380231203
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
3. |
QD‐Janus: A sequential implementation of Janus in Prolog |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page 1337-1360
Saumya K. Debray,
Preview
|
PDF (1539KB)
|
|
摘要:
AbstractJanus is a language designed for distributed constraint programming. This paper describes QD‐Janus, a sequential implementation of Janus in Prolog. The compiler uses a number of novel analyses and optimizations to improve the performance of the system. The choice of Prolog as the target language for a compiler, although unusual, is motivated by the following: (i) the semantic gap between Janus and Prolog is much smaller than that between Janus and, say, C or machine language—this simplifies the compilation process significantly, and makes it possible to develop a system with reasonable performance fairly quickly; (ii) recent progress in Prolog implementation techniques, and the development of Prolog systems whose speeds are comparable to those of imperative languages, indicates that the translation to Prolog need not entail a significant performance loss compared to native code compilers; and (iii) compilation to Prolog can benefit immediately from a significant body of work on, and implementations of, parallel Prolog systems. Our experience indicates that translation of logic programming languages to Prolog, accompanied by the development of good program analysis and optimization tools, is an effective way to quickly develop flexible and portable implementations with good performance and low c
ISSN:0038-0644
DOI:10.1002/spe.4380231204
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
4. |
Experiences in database system implementation using a persistent programming language |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page 1361-1377
Eric N. Hanson,
Tina M. Harvey,
Mark A. Roth,
Preview
|
PDF (1174KB)
|
|
摘要:
AbstractThe EXODUS database toolkit, and in particular the E persistent programming language, have been used in two substantial database system implementation efforts by the authors, the Ariel database rule system and the Triton nested relation DBMS. An important advantage of using a persistent programming language for database system implementation is that it is easy to implement special‐purpose persistent objects used by the DBMS such as catalogs, rule indexes, and nested relational structures. Support for transactions built into a persistent programming language greatly reduces the effort required to implement a database system. A disadvantage observed is that it is not possible to map the type system of the DBMS to the type system of the underlying programming language while still retaining good performance forad hocqueries. Also, software engineering difficulties arise when a persistent language makes a distinction between database types and main‐memory ty
ISSN:0038-0644
DOI:10.1002/spe.4380231205
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
5. |
Executing continuation semantics: A comparison |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page 1379-1397
Ken Slonneger,
Preview
|
PDF (994KB)
|
|
摘要:
AbstractSeveral authors have suggested translating denotational semantics into prototype interpreters written in high‐level programming languages to provide evaluation tools for language designers. These implementations have generally been understandable when restricted to direct denotational semantics. This paper considers using two declarative programming languages, Prolog and Standard ML, to implement an interpreter that follows the continuation semantics of a small imperative programming language, called Gull. Each of the two declarative languages presents certain difficulties related to evaluation strategies and expressiveness. The implementations are compared in terms of their ease of use for prototyping, their resemblance to the denotational definitions, and their efficienc
ISSN:0038-0644
DOI:10.1002/spe.4380231206
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
6. |
Masthead |
|
Software: Practice and Experience,
Volume 23,
Issue 12,
1993,
Page -
Preview
|
PDF (55KB)
|
|
ISSN:0038-0644
DOI:10.1002/spe.4380231201
出版商:John Wiley&Sons, Ltd.
年代:1993
数据来源: WILEY
|
|