304 research outputs found

    Read-Copy-Update pro OpenSolaris

    Get PDF
    Cílem práce je návrh a implementace mechanismu RCU (Read-Copy-Update) pro OpenSolaris. Hlavním úcelem mechanismu RCU je zvýšení soubežnosti (paralelismu) pri synchronizaci mezi ctenári a zapisovateli, zejména u víceprocesorových systému. Tohoto zlepšení se dosáhne udržováním nekolika verzí chránených dat, což umožnuje ctenárum i zapisovatelum pracovat soubežne. Synchronizace typu RCU už byla nekolikrát implementována a používá se v kernelu Linux. Tato práce zahrnuje analýzu stávajících implementací RCU, možných výhod RCU pro kernel ONNV (OpenSolaris) a prototypovou implementaci pro ONNV. Zároven navrhuje možnosti využití RCU v místech, kde se již používá neblokující sychronizace. Srovnává prototypovou implementaci s odpovídající cástí kernelu Linux.The goal of this thesis is to design and implement a RCU (Read-Copy-Update)synchronization mechanism for OpenSolaris. The main purpose of the RCU mechanism is to increase concurrency in readers-writers synchronization scenarios, especially in SMP (Symmetric Multiprocessing) environments. This improvement is achieved by keeping multiple versions of the protected data which enables readers and writers to run in parallel. The RCU synchronization has already been implemented multiple times and is used in the Linux kernel. The thesis includes analysis of existing RCU implementations, possible benefits of RCU in the ONNV (OpenSolaris) kernel and a prototype implementation in ONNV. It also suggests possible applications of RCU where lockless synchronization is already applied. The prototype implementation is compared with its counterpart in the Linux kernel.Department of Software EngineeringKatedra softwarového inženýrstvíFaculty of Mathematics and PhysicsMatematicko-fyzikální fakult

    Verification of the Tree-Based Hierarchical Read-Copy Update in the Linux Kernel

    Full text link
    Read-Copy Update (RCU) is a scalable, high-performance Linux-kernel synchronization mechanism that runs low-overhead readers concurrently with updaters. Production-quality RCU implementations for multi-core systems are decidedly non-trivial. Giving the ubiquity of Linux, a rare "million-year" bug can occur several times per day across the installed base. Stringent validation of RCU's complex behaviors is thus critically important. Exhaustive testing is infeasible due to the exponential number of possible executions, which suggests use of formal verification. Previous verification efforts on RCU either focus on simple implementations or use modeling languages, the latter requiring error-prone manual translation that must be repeated frequently due to regular changes in the Linux kernel's RCU implementation. In this paper, we first describe the implementation of Tree RCU in the Linux kernel. We then discuss how to construct a model directly from Tree RCU's source code in C, and use the CBMC model checker to verify its safety and liveness properties. To our best knowledge, this is the first verification of a significant part of RCU's source code, and is an important step towards integration of formal verification into the Linux kernel's regression test suite.Comment: This is a long version of a conference paper published in the 2018 Design, Automation and Test in Europe Conference (DATE

    Scalable Synchronization with Mindicators

    Get PDF
    The Mindicator is a shared object that stores one value for each thread in a system, and can return the minimum of all thread’s values in constant time. In this paper, we explore applications of the Mindicator in synchronization algorithms. We introduce three new algorithms, designed for scalable Read-Copy-Update (RCU), fair Readers-Writer locking, and Group Mutual Exclusion. Experimental evaluation shows these algorithms to perform well while avoiding contention

    RCU Semantics: A First Attempt

    Get PDF
    There is not yet a formal statement of RCU (read-copy update) semantics. While this lack has thus far not been an impediment to adoption and use of RCU, it is quite possible that formal semantics would point the way towards tools that automatically validate uses of RCU or that permit RCU algorithms to be automatically generated by a parallel compiler. This paper is a first attempt to supply a formal definition of RCU. Or at least a semi-formal definition: although RCU does not yet wear a tux (though it does run in Linux), at least it might yet wear some clothes

    Visualization of Read-Copy-Update synchronization contexts in C code

    Get PDF
    The Read-Copy-Update (RCU) mechanism is a way of synchronizing concurrent access to variables with the goal of prioritizing read performance over strict consistency guarantees. The main idea behind this mechanism is that RCU avoids the use of lock primitives while multiple threads try to read and update elements concurrently. In this case, elements are linked together through pointers in a shared data structure. RCU is used in the Linux kernel, but there are user-space libraries which implement the technique as well. One of the user-space solutions is liburcu that is a C language library. Earlier, we defined our code comprehension framework for easing the development of RCU solutions. In this paper, we present our visualization techniques for the Microsoft’s Monaco Editor

    TOWARDS A HIGH-LEVEL C++ ABSTRACTION TO UTILIZE THE READ-COPY-UPDATE PATTERN

    Get PDF
    Concurrent programming with classical mutex/lock techniques does not scale well when reads are way more frequent than writes. Such situation happens in operating system kernels among other performance critical multithreaded applications. Read copy update (RCU) is a well know technique for solving the problem. RCU guarantees minimal overhead for read operations and allows them to occur concurrently with write operations. RCU is a favourite concurrent pattern in low level, performance critical applications, like the Linux kernel. Currently there is no high-level abstraction for RCU for the C++ programming language. In this paper, we present our C++ RCU class library to support efficient concurrent programming for the read-copy-update pattern. The library has been carefully designed to optimise performance in a heavily multithreaded environment, in the same time providing high-level abstractions, like smart pointers and other C++11/14/17 feature

    Visualization of Read-Copy-Update synchronization contexts in C code

    Get PDF
    The Read-Copy-Update (RCU) mechanism is a way of synchronizing concurrent access to variables with the goal of prioritizing read performance over strict consistency guarantees. The main idea behind this mechanism is that RCU avoids the use of lock primitives while multiple threads try to read and update elements concurrently. In this case, elements are linked together through pointers in a shared data structure. RCU is used in the Linux kernel, but there are user-space libraries which implement the technique as well. One of the user-space solutions is liburcu that is a C language library. Earlier, we defined our code comprehension framework for easing the development of RCU solutions. In this paper, we present our visualization techniques for the Microsoft’s Monaco Editor

    Reducing the Communication Latency of IOC in AUTOSAR using Read-Copy-Update Mechanism

    Get PDF
    학위논문 (석사)-- 서울대학교 대학원 : 융합과학부(지능형융합시스템전공), 2017. 2. 홍성수.최근 자동차 산업에서 자율주행차량, 친환경 차량 등의 등장으로 전기 전자 분야에 대한 중요성이 대두되고 있다. 이에 따라 차량 내의 전기 전자 시스템은 늘어나고 이를 제어 하기 위한 소프트웨어 양과 복잡도 역시 함께 증가하고 있다. 이렇게 거대해지고 복잡한 차량용 소프트웨어를 효과적으로 개발하기 위해 고안이 된 것이 차량용 소프트웨어 플랫폼인 AUTOSAR(AUTomotive Open Software Architecture) 이다. 특히, AUTOSAR v4.1.1부터는 시스템의 성능을 높이고 기능안전을 만족하기 위해 멀티코어를 지원한다. 하지만, AUTOSAR에서 지원하는 core간의 통신방식인 IOC(Inter OS-application communicator)에서는 예기치 못한 통신 지연이 발생하여 전체 시스템의 성능이 저하되는 문제를 초래한다. 이 논문에서는 IOC의 통신 지연문제를 밝히고 Read-Copy-Update 메커니즘을 이용하여 이를 해결하고자 한다.제 1 장 서 론 1 제 2 장 배 경 6 제 1 절 AUTOSAR 개요 6 제 2 절 AUTOSAR 통신 메커니즘 9 제 3 절 Read-Copy-Update 15 제 3 장 문제 정의 19 제 1 절 시스템 모델 19 제 2 절 IOC의 한계점 20 제 4 장 개선된 AUTOSAR의 IOC 통신 26 제 1 절 RCU를 적용한 개선된 IOC 통신 26 제 2 절 개선된 IOC 통신 구현 27 제 5 장 실험 및 검증 30 제 1 절 실험 환경 30 제 2 절 실험 구성 31 제 3 절 실험 평가 33 제 6 장 결 론 38 참고문헌 39 Abstract 40Maste
    corecore