2,605 research outputs found

    Higher levels of process synchronisation

    Get PDF
    Four new synchronisation primitives (SEMAPHOREs, RESOURCEs, EVENTs and BUCKETs) were introduced in the KRoC 0.8beta release of occam for SPARC (SunOS/Solaris) and Alpha (OSF/1) UNIX workstations [1][2][3]. This paper reports on the rationale, application and implementation of two of these (SEMAPHOREs and EVENTs). Details on the other two may be found on the web [4]. The new primitives are designed to support higher-level mechanisms of SHARING between parallel processes and give us greater powers of expression. They will also let greater levels of concurrency be safely exploited from future parallel architectures, such as those providing (virtual) shared-memory. They demonstrate that occam is neutral in any debate between the merits of message-passing versus shared-memory parallelism, enabling applications to take advantage of whichever paradigm (or mixture of paradigms) is the most appropriate. The new primitives could be (but are not) implemented in terms of traditional channels, but only at the expense of increased complexity and computational overhead. The primitives are immediately useful even for uni-processors - for example, the cost of a fair ALT can be reduced from O(n) to O(1). In fact, all the operations associated with new primitives have constant space and time complexities; and the constants are very low. The KRoC release provides an Abstract Data Type interface to the primitives. However, direct use of such mechanisms still allows the user to misuse them. They must be used in the ways prescribed (in this paper and in [4]) else their semantics become unpredictable. No tool is provided to check correct usage at this level. The intention is to bind those primitives found to be useful into higher level versions of occam. Some of the primitives (e.g. SEMAPHOREs) may never themselves be made visible in the language, but may be used to implement bindings of higher-level paradigms (such as SHARED channels and BLACKBOARDs). The compiler will perform the relevant usage checking on all new language bindings, closing the security loopholes opened by raw use of the primitives. The paper closes by relating this work with the notions of virtual transputers, microcoded schedulers, object orientation and Java threads

    Data Management Systems (DMS): Complex data types study. Volume 1: Appendices A-B. Volume 2: Appendices C1-C5. Volume 3: Appendices D1-D3 and E

    Get PDF
    Two categories were chosen for study: the issue of using a preprocessor on Ada code of Application Programs which would interface with the Run-Time Object Data Base Standard Services (RODB STSV), the intent was to catch and correct any mis-registration errors of the program coder between the user declared Objects, their types, their addresses, and the corresponding RODB definitions; and RODB STSV Performance Issues and Identification of Problems with the planned methods for accessing Primitive Object Attributes, this included the study of an alternate storage scheme to the 'store objects by attribute' scheme in the current design of the RODB. The study resulted in essentially three separate documents, an interpretation of the system requirements, an assessment of the preliminary design, and a detailing of the components of a detailed design

    Sources of unbounded priority inversions in real-time systems and a comparative study of possible solutions

    Get PDF
    In the design of real-time systems, tasks are often assigned priorities. Preemptive priority driven schedulers are used to schedule tasks to meet the timing requirements. Priority inversion is the term used to describe the situation when a higher priority task's execution is delayed by lower priority tasks. Priority inversion can occur when there is contention for resources among tasks of different priorities. The duration of priority inversion could be long enough to cause tasks to miss their dead lines. Priority inversion cannot be completely eliminated. However, it is important to identify sources of priority inversion and minimize the duration of priority inversion. In this paper, a comprehensive review of the problem of and solutions to unbounded priority inversion is presented

    A comprehensive approach in performance evaluation for modernreal-time operating systems

    Get PDF
    In real-time computing the accurate characterization of the performance and determinism that a particular real-time operating system/hardware combination can provide for real-time applications is essential. This issue is not properly addressed by existing performance metrics mainly due to the lack of completeness and generalization. In this paper we present a set of comprehensive, easy-to-implement and useful metrics covering three basic real-time operating system features: response to external events, intertask synchronization and resource sharing, and intertask data transferring. The evaluation of real-time operating systems using a set of fine-grained metrics is fundamental to guarantee that we can reach the required determinism in real-world applications.Publicad

    Blocking time under basic priority inheritance: Polynomial bound and exact computation

    Full text link
    The Priority Inheritance Protocol (PIP) is arguably the best-known protocol for resource sharing under real-time constraints. Its importance in modern applications is undisputed. Nevertheless, because jobs may be blocked under PIP for a variety of reasons, determining a job's maximum blocking time could be difficult, and thus far no exact method has been proposed that does it. Existing analysis methods are inefficient, inaccurate, and of limited applicability. This article proposes a new characterization of the problem, thus allowing a polynomial method for bounding the blocking time, and an exact, optimally efficient method for blocking time computation under priority inheritance that have a general applicability

    Audio application based on FreeRTOS operating system

    Get PDF
    This current report describes in detail how the Quartet code for a Microchip PIC18 microcontroller, developed by Pere Domenech in his Final Degree Project, has been migrated to a Microchip PIC24 microcontroller. The original Real Time Operating System has also been migrated from OSA RTOS to FreeRTOS. The RTOS modification will allow future upgrades without the need to change the RTOS. The Quartet software is an audio synthesizer which uses a low-pass filtered PWM output to create a mono audio signal. The original code has 3 different instruments and 4 voices: Bass, Violin, Guitar 1 and Guitar 2. Each instrument has its own sound, specific waveform and envelope. Each voice has its own score. The 4 voices are mixed during the synthesis and played through a single PWM microcontroller output. This report explains step by step the software migration process: Operating System migration, Compiler migration and Microcontroller Instructions migration. The process is explained in detail. Therefore, it is highly recommended to read it while studying the final PIC24 Quartet code. At the end of the report, the hardware validation and experimental modifications are explained. Finally, some future improvements, limitations and suggestions are commented. This project is a continuation of the Quartet code for microcontrollers but it is clear that more improvements and modifications will be done in the future

    Sample exam questions.

    Get PDF
    All original material in this collection is distributed under a Free Culture license. You are free to share, remix, and make commercial use of the work, under the Attribution and Share Alike conditions

    Eager Evaluation Considered Harmful

    Get PDF
    In real-time systems potentially unbounded loops and lazy (late) evaluation are often avoided in order to improve predictability. This paper will show that a commonly suggested way to implement semaphores can lead to unnecessary blocking of high-priority tasks. It also presents a scheme with lazy evaluation and (potentially) unbounded loops that gives less blocking of high-priority tasks
    corecore