117,808 research outputs found

    Process Management and Exception Handling in Multiprocessor Operating Systems Using Object-Oriented Design Techniques

    Get PDF
    The programming of the interrupt handling mechanisms, process switching primitives, scheduling mechanism, and synchronization primitives of an operating system for a multiprocessor require both efficient code in order to support the needs of high- performance or real-time applications and careful organization to facilitate maintenance. Although many advantages have been claimed for object-oriented class hierarchical languages and their corresponding design methodologies, the application of these techniques to the design of the primitives within an operating system has not been widely demonstrated. To investigate the role of class hierarchical design in systems programming, the authors have constructed the Choices multiprocessor operating system architecture the C++ programming language. During the implementation, it was found that many operating system design concerns can be represented advantageously using a class hierarchical approach, including: the separation of mechanism and policy; the organization of an operating system into layers, each of which represents an abstract machine; and the notions of process and exception management. In this paper, we discuss an implementation of the low-level primitives of this system and outline the strategy by which we developed our solution

    Detecting and correcting errors in parallel object oriented systems

    Get PDF
    Our research concerns the development of an operational formalism for the in-source specification of parallel, object oriented systems. These specifications are used to enunciate the behavioural semantics of objects, as a means of enhancing their reliability. A review of object oriented languages concludes that the advance in language sophistication heralded by the object oriented paradigm has, so far, failed to produce a commensurate increase in software reliability. The lack of support in modern object oriented languages for the notion of 'valid object behaviour', as distinct from state and operations, undermines the potential power of the abstraction. Furthermore, it weakens the ability of such languages to detect behavioural problems, manifest at run-time. As a result, in-language facilities for the signalling and handling of undesirable program behaviours or states (for example, assertions) are still in their infancy. This is especially true of parallel systems, where the scope for subtle error is greater. The first goal of this work was to construct an operational model of a general purpose, parallel, object oriented system in order to ascertain the fundamental set of event classes that constitute its observable behaviour. Our model is built on the CSP process calculus and uses a subset of the Z notation to express some aspects of state. This alphabet was then used to construct a formalism designed to augment each object type description with the operational specification of an object's behaviour: Event Pattern Specifications (EPS). EPSs are a labeled list of acceptable object behaviours which form part of the definition of every type. The thesis includes a description of the design and implementation of EPSs as part of an exception handling mechanism for the parallel, object oriented language Solve. Using this implementation, we have established that the run-time checking of EPS specifications is feasible, albeit it with considerable overhead. Issues arising from this implementation are discussed and we describe the visualization of EPSs and their use in semantic browsing

    The Application of Concurrent Object-Oriented Techniques to Reactive Systems

    Get PDF
    A language and system model combining concurrency, abstract communication and an object orientation offers several advantages in the design and implementation of large-scale reactive systems. An object-orientation captures the abstraction and variety of entities inhabiting the environment while the autonomy of actual entities is clearly reflected by expressions of concurrency in the program of the reactive system. Abstract communication is necessary to achieve data sharing among heterogeneous systems. However, attempts to design and implement a paradigm unifying these three features have encountered unexpected difficulties. These difficulties include the interference between concurrency control (synchronization) and inheritance, inadequate application-oriented communication abstractions, the absence of a useful model of exception handling for concurrent object-oriented applications, and the lack of a powerful and useful theory of computation based on asynchrony

    Modularização de tratamento de exceções usando programação orientada a aspectos

    Get PDF
    Orientador: Cecilia Mary Fischer RubiraDissertação (mestrado profissional) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: Programação Orientada a Aspectos (POA) tem sido considerada uma abordagem interessante para modularizar o comportamento excepcional de um sistema. Porém, ainda existem algumas questões em aberto sobre o uso de POA com este objetivo. Nenhum trabalho na literatura tentou verificar se POA realmente promove melhorias em atributos de qualidade quando usada para modularizar código de tratamento de exceções não-trivial, objetivando: avaliar a escalabilidade dos aspectos ao modularizar tratamento de exceções em sistemas com um número significativo de tratadores; e avaliar a interação entre aspectos de tratamento de exceções e aspectos de outros interesses como, por exemplo, distribuição, persistência, segurança etc. Este trabalho apresenta um estudo quantitativo da adequação de POA para modularizar código de tratamento de exceções em sistemas que possuem um número significativo de tratadores não-triviais, e também em sistemas nos quais interesses transversais diferentes de tratamento de exceções, no caso distribuição e persistência, já foram modularizados com aspectos. Este estudo consistiu na refatoração de dois sistemas orientados a objetos e um sistema orientado a aspectos, que tiveram seu código responsável pelo tratamento de exceções movido para aspectos. Foi utilizado um conjunto de métricas para avaliar atributos de qualidade das versões original e refatorada desses sistemas. Observou-se que POA promoveu a separação de interesses entre o código de tratamento de exceções e o código normal dos sistemas. Porém, contradizendo a intuição geral, a versão orientada a aspectos desses sistemas não apresentou ganhos significativos para as métricas de tamanho empregadasAbstract: Aspect-Oriented Programming (AOP) has usually been considered as an approach to modularize the exceptional behavior of a system. However, there are questions related to possible trade-offs involved in using AOP with this objective that are not yet well known. To the best of our knowledge, no work in literature has attempted to assess whether AOP really promotes an enhancement in well-understood quality attributes, when used for modularizing nontrivial exception handling code with focus on: evaluation of the scalability of aspects for modularizing exception handling in systems with a significant number of handlers; and evaluation of interactions between exception handling aspects and aspects implementing other concerns like distribution and persistence. This work presents a quantitative study of the adequacy of AOP for modularizing exception handling code in systems with a significant number of nontrivial handlers, and also in systems possessing aspects implementing other concerns. The study consisted of refactoring two object-oriented and one aspect-oriented systems so that the code responsible for handling exceptions was moved to aspects. It was employed a suite of metrics to measure quality attributes of the original and refactored systems. It was found that AOP improved separation of concerns between exception handling code and normal application code. However, contradicting the general intuition, the aspect-oriented version of the system did not present significant gains for any of size metrics employed.MestradoMestre Profissional em Computaçã

    Explicit Representation of Exception Handling in the Development of Dependable Component-Based Systems

    Get PDF
    Exception handling is a structuring technique that facilitates the design of systems by encapsulating the process of error recovery. In this paper, we present a systematic approach for incorporating exceptional behaviour in the development of component-based software. The premise of our approach is that components alone do not provide the appropriate means to deal with exceptional behaviour in an effective manner. Hence the need to consider the notion of collaborations for capturing the interactive behaviour between components, when error recovery involves more than one component. The feasibility of the approach is demonstrated in terms of the case study of the mining control system

    Implementing atomic actions in Ada 95

    Get PDF
    Atomic actions are an important dynamic structuring technique that aid the construction of fault-tolerant concurrent systems. Although they were developed some years ago, none of the well-known commercially-available programming languages directly support their use. This paper summarizes software fault tolerance techniques for concurrent systems, evaluates the Ada 95 programming language from the perspective of its support for software fault tolerance, and shows how Ada 95 can be used to implement software fault tolerance techniques. In particular, it shows how packages, protected objects, requeue, exceptions, asynchronous transfer of control, tagged types, and controlled types can be used as building blocks from which to construct atomic actions with forward and backward error recovery, which are resilient to deserter tasks and task abortion
    corecore