Data prefetching aims to improve access times to data storage systems by predicting data records that are likely to be accessed by subsequent requests and retrieving them into a memory cache before they are needed. In...
详细信息
Data prefetching aims to improve access times to data storage systems by predicting data records that are likely to be accessed by subsequent requests and retrieving them into a memory cache before they are needed. In the case of Persistent object Stores, previous approaches to prefetching have been based on predictions made through analysis of the store's schema, which generates rigid predictions, or monitoring access patterns to the store while applications are executed, which introduces memory and/or computation overhead. In this paper, we present CAPre, a novel prefetching system for Persistent object Stores based on static code analysis of object-oriented applications. CAPre generates the predictions at compile-time and does not introduce any overhead to the application execution. Moreover, CAPre is able to predict large amounts of objects that will be accessed in the near future, thus enabling the object store to perform parallel prefetching if the objects are distributed, in a much more aggressive way than in schema-based prediction algorithms. We integrate CAPre into a distributed Persistent object Store and run a series of experiments that show that it can reduce the execution time of applications from 9% to over 50%, depending on the nature of the application and its persistent data model. (C) 2019 Elsevier B.V. All rights reserved.
The difficulties encountered while resolving the programming models of object-oriented and procedure-orientedlanguages are discussed. As a concrete example, the integration of Emerald—an object-oriented, distributed...
详细信息
The difficulties encountered while resolving the programming models of object-oriented and procedure-orientedlanguages are discussed. As a concrete example, the integration of Emerald—an object-oriented, distributed programming language—into the MLP system for mixed-language programming is described. This integration allows Emerald objects to invoke procedures written in other supported languages, and allows procedures written in the other languages to invoke operations on Emerald objects. Two different aspects of this integration are highlighted. First, the issues involved in bridging the distance between the programming model supported by Emerald and the programming model supported by MLP are discussed; specific problems include reconciling the object-oriented nature of Emerald with the procedure-oriented model of MLP, and accommodating Emerald's concurrency within the previously sequential MLP system. Second, the implementation of this design is described.
By encapsulating aspects of language semantics within a set of default classes and allowing the programmer to derive new versions, object-orientedlanguages whose semantics can be tailored to the needs of individual p...
详细信息
By encapsulating aspects of language semantics within a set of default classes and allowing the programmer to derive new versions, object-orientedlanguages whose semantics can be tailored to the needs of individual programmers have been provided, The degree to which such languages are simultaneously flexible and efficient is an open question, We describe our experience with using this technique to incorporate transparent support for persistence into the Common Lisp object System via its' metaobject protocol, an open implementation based on reflection, For many aspects of our implementation the metaobject protocol was perfectly suitable, In other cases we had to choose among extending the protocol, requiring the application programmer to employ special idioms, and tolerating a large performance penalty. Based on our experience we evaluate the metaobject protocol, propose some improvements and extensions, and present performance measurements that reveal the need for improved language implementation techniques.
In this paper we introduce a formal model of the object-orientedprogramming language SMALLTALK-80. The model can be useful for different applications in the framework of language design and implementation like compil...
详细信息
In this paper we introduce a formal model of the object-orientedprogramming language SMALLTALK-80. The model can be useful for different applications in the framework of language design and implementation like compiler or interpreter generation, correctness proofs of the implementations, and standardization of the language.
Accurately predicting object lifetimes is important for improving memory management systems. Current garbage collectors make relatively coarse-grained predictions ( e. g., "short-lived" versus "long-liv...
详细信息
Accurately predicting object lifetimes is important for improving memory management systems. Current garbage collectors make relatively coarse-grained predictions ( e. g., "short-lived" versus "long-lived") and rely on application- independent heuristics related to the local characteristics of an allocation. This paper introduces a prediction method which is fully precise and makes its predictions based on application- specific training rather than application- independent heuristics. By "fully precise" we mean that the granularity of predictions is equal to the smallest unit of allocation. The method described here is the first to combine high precision and efficiency in a single lifetime predictor. Fully precise prediction enables us, for the first time, to study zero-lifetime objects. The paper reports results showing that zero-lifetime objects comprise a significant fraction of object allocations in benchmark programs for the Java programming language and that they are correlated with their allocation context ( the call stack and allocation site). Beyond zero-lifetime objects, the paper reports results on predicting longer lived objects, where, in some cases, it is possible to predict the lifetime of objects based on their allocation context ( the call stack and allocation site) well. For the SPEC benchmark programs, the number of dynamically allocated objects whose call sites have accurate predictors ranges from 0.2 percent to 61 percent. This method could potentially improve the performance of garbage collectors. The paper proposes a death- ordered collector (DOC) and analyzes its implementation overheads and its best possible performance. The study shows how memory performance could be enhanced using the extra information provided by fully precise prediction.
Covariant types are a powerful language feature for improving type-safety. However, covariant types complicate type-checking when combined with polymorphism. We propose two new language features that can improve type-...
详细信息
Covariant types are a powerful language feature for improving type-safety. However, covariant types complicate type-checking when combined with polymorphism. We propose two new language features that can improve type-checking in a language with polymorphism and covariant typing, and also have the potential to improve efficiency as well. Published by Elsevier Ltd.
Software reliability and error handling are concepts that any programmer knows and deals with on a daily basis. Even so, studies suggest that the current approach to exception handling raises fundamental incompatibili...
详细信息
Software reliability and error handling are concepts that any programmer knows and deals with on a daily basis. Even so, studies suggest that the current approach to exception handling raises fundamental incompatibilities with object-oriented concepts, being a major cause for the lack of quality on error handling code. In this paper, we propose an exception handling model that makes the runtime environment responsible for automatically dealing with abnormal situations. The platform provides a number of benign recovery actions that are able to deal automatically with most common exception types. Whenever an exception is raised, and a benign recovery method can be found, code is re-executed from a clean transactional state. In this approach try blocks not only represent a nesting level where a fault can occur but also a block that can be re-executed transactionally as a clean slate. For validating the approach two case studies were performed. One involved providing automatic exception handling for Glassfish's Java Messaging System implementation and the other for the Hipergate CRM application. Both showed that increased robustness is possible while freeing the programmer from manually writing extensive error-handling code. (C) 2010 Elsevier Ltd. All rights reserved.
MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. ...
详细信息
MultiJava is a conservative extension of the Java programming language that adds symmetric multiple dispatch and open classes. Among other benefits, multiple dispatch provides a solution to the binary method problem. Open classes provide a solution to the extensibility problem of object-oriented programming languages, allowing the modular addition of both new types and new operations to an existing type hierarchy. This article illustrates and motivates the design of MultiJava and describes its modular static typechecking and modular compilation strategies. Although MultiJava extends Java, the key ideas of the language design are applicable to other object-orientedlanguages, such as C# and C++, and even, with some modifications, to functional languages such as ML. This article also discusses the variety of application domains in which MultiJava has been successfully used by others, including pervasive computing, graphical user interfaces, and compilers. MultiJava allows users to express desired programming idioms in a way that is declarative and supports static typechecking, in contrast to the tedious and type-unsafe workarounds required in Java. MultiJava also provides opportunities for new kinds of extensibility that are not easily available in Java.
The Information-Flow property of Non-Interference was recently relaxed into Abstract Non-Interference (ANI), a weakened version where attackers can only observe properties of data, rather than their exact value. ANI w...
详细信息
The Information-Flow property of Non-Interference was recently relaxed into Abstract Non-Interference (ANI), a weakened version where attackers can only observe properties of data, rather than their exact value. ANI was originally defined on integers, where a property models the set of numbers satisfying it. The present work proposes an object-oriented, Java-based formulation of an instance of ANI where data take the form of objects, and the observed property comes to be their type. The execution of a program is taken to be the invocation of some method by an external user: a class is secure if, for all its (non-private) methods, the type of their low-security data after the execution does not depend on the initial type of its high-security data (i.e., there are no illicit flows). The relation to ANI theory (in its abstract version) can be seen in the representation of abstract domains in terms of class hierarchies: an upper closure operator map an object into the smallest class it is an instance of. An analyzer for a non-trivial subset of Java is illustrated. A sketch of a soundness proof is provided: a program is never misclassified as secure, i.e., it is rejected whenever the absence of illicit ows cannot be guaranteed.
With an immense increase in research, development, and application of object-oriented simulation (OOS) over the past decade, there is evidence that this technology is becoming the choice for modeling large, complex, a...
详细信息
With an immense increase in research, development, and application of object-oriented simulation (OOS) over the past decade, there is evidence that this technology is becoming the choice for modeling large, complex, and/or distributed systems. This paper discusses the features of OOS that dispose it to modeling these types of systems and compares the OOS approach with traditional simulation approaches. A review of OOS languages and environments is followed by a discussion of current issues pertaining to object-oriented simulation.
暂无评论