1,475 research outputs found

    IST Austria Thesis

    Get PDF
    Designing and verifying concurrent programs is a notoriously challenging, time consuming, and error prone task, even for experts. This is due to the sheer number of possible interleavings of a concurrent program, all of which have to be tracked and accounted for in a formal proof. Inventing an inductive invariant that captures all interleavings of a low-level implementation is theoretically possible, but practically intractable. We develop a refinement-based verification framework that provides mechanisms to simplify proof construction by decomposing the verification task into smaller subtasks. In a first line of work, we present a foundation for refinement reasoning over structured concurrent programs. We introduce layered concurrent programs as a compact notation to represent multi-layer refinement proofs. A layered concurrent program specifies a sequence of connected concurrent programs, from most concrete to most abstract, such that common parts of different programs are written exactly once. Each program in this sequence is expressed as structured concurrent program, i.e., a program over (potentially recursive) procedures, imperative control flow, gated atomic actions, structured parallelism, and asynchronous concurrency. This is in contrast to existing refinement-based verifiers, which represent concurrent systems as flat transition relations. We present a powerful refinement proof rule that decomposes refinement checking over structured programs into modular verification conditions. Refinement checking is supported by a new form of modular, parameterized invariants, called yield invariants, and a linear permission system to enhance local reasoning. In a second line of work, we present two new reduction-based program transformations that target asynchronous programs. These transformations reduce the number of interleavings that need to be considered, thus reducing the complexity of invariants. Synchronization simplifies the verification of asynchronous programs by introducing the fiction, for proof purposes, that asynchronous operations complete synchronously. Synchronization summarizes an asynchronous computation as immediate atomic effect. Inductive sequentialization establishes sequential reductions that captures every behavior of the original program up to reordering of coarse-grained commutative actions. A sequential reduction of a concurrent program is easy to reason about since it corresponds to a simple execution of the program in an idealized synchronous environment, where processes act in a fixed order and at the same speed. Our approach is implemented the CIVL verifier, which has been successfully used for the verification of several complex concurrent programs. In our methodology, the overall correctness of a program is established piecemeal by focusing on the invariant required for each refinement step separately. While the programmer does the creative work of specifying the chain of programs and the inductive invariant justifying each link in the chain, the tool automatically constructs the verification conditions underlying each refinement step

    Building scalable software systems in the multicore era

    Get PDF
    Software systems must face two challenges today: growing complexity and increasing parallelism in the underlying computational models. The problem of increased complexity is often solved by dividing systems into modules in a way that permits analysis of these modules in isolation. The problem of lack of concurrency is often tackled by dividing system execution into tasks that permits execution of these tasks in isolation. The key challenge in software design is to manage the explicit and implicit dependence between modules that decreases modularity. The key challenge for concurrency is to manage the explicit and implicit dependence between tasks that decreases parallelism. Even though these challenges appear to be strikingly similar, current software design practices and languages do not take advantage of this similarity. The net effect is that the modularity and concurrency goals are often tackled mutually exclusively. Making progress towards one goal does not naturally contribute towards the other. My position is that for programmers that are not formally and rigorously trained in the concurrency discipline the safest and most productive way to get scalability in their software is by improving modularity of their software using programming language features and design practices that reconcile modularity and concurrency goals. I briefly discuss preliminary efforts of my group, but we have only touched the tip of the iceberg

    ์‚ฌ์ด๋ฒ„ ๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ PALSware ์‹œ์Šคํ…œ ์—„๋ฐ€ ๊ฒ€์ฆ ํ”„๋ ˆ์ž„์›Œํฌ

    Get PDF
    ํ•™์œ„๋…ผ๋ฌธ(๋ฐ•์‚ฌ) -- ์„œ์šธ๋Œ€ํ•™๊ต๋Œ€ํ•™์› : ๊ณต๊ณผ๋Œ€ํ•™ ์ „๊ธฐยท์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€, 2021.8. ๊น€์œค์Šน.Achieving high-level safety guarantees for cyber-physical systems has always been a key challenge, since many of those systems are safety-critical so that their failures in the actual operation may bring catastrophic results. Many cyber-physical systems have real-time and distributed features, which increase the complexity of the system an order of magnitude higher. In order to tame the complexity, a middleware called PALSware has been pro- posed. It provides a logically synchronous environment to the application layer on top of physically asynchronous underlying network and operating systems. The com- plexity of a system can be significantly reduced in a synchronous environment. However, a bug in PALSware may have destructive effects since it exposes every application system to runtime failures. Moreover, finding bugs in PALSware can be very challenging in some cases, for various reasons. To solve this problem, we present VeriPALS, a formally verified C implementation of PALSware together with a verification framework for application systems. Espe- cially, the framework provides an executable model as an efficient random testing tool. As case studies, we developed two application systems, and applied VeriPALS to demonstrate effectiveness of the framework in both testing and formal verification.์‚ฌ์ด๋ฒ„ ๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ์˜ ์•ˆ์ „์„ฑ์„ ๋†’์ด๋Š” ์ผ์€ ํ•ญ์ƒ ์ค‘์š”ํ•œ ์—ฐ๊ตฌ ์ฃผ์ œ๊ฐ€ ๋˜์–ด์™”๋‹ค. ๊ทธ ์ด์œ  ๋Š” ๋งŽ์€ ์‚ฌ์ด๋ฒ„ ๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ์ด ์•ˆ์ „ ์šฐ์„  ์‹œ์Šคํ…œ์ด๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ์ด๋Š” ์‹ค์ œ ์‹œ์Šคํ…œ ๊ตฌ๋™ ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ํฐ ์‚ฌ๊ณ ๋กœ ์ง๊ฒฐ๋  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”์šฑ์ด, ์‚ฌ์ด๋ฒ„ ๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ์ด ๊ฐ€์ง€๋Š” ์‹ค์‹œ๊ฐ„์„ฑ, ๋ถ„์‚ฐ์„ฑ์ด ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ๋†’์—ฌ ์œ„ํ—˜์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฏ€๋กœ ์•ˆ์ „์„ฑ์„ ๋†’์ด๋Š” ์ผ์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค. ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, PALSware๋ผ๋Š” ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ์ด ๋ฏธ๋“ค์›จ์–ด๋Š” ๋น„๋™๊ธฐ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋„คํŠธ์›Œํฌ์™€ ์šด์˜์ฒด์ œ ํ™˜๊ฒฝ ์œ„์—์„œ ๊ฐ€์ƒ์˜ ๋™๊ธฐ์‹ ํ™˜ ๊ฒฝ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธต์— ์ œ๊ณตํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. PALSware๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ์„ ๋™๊ธฐ์‹ ํ™˜๊ฒฝ์—์„œ ๋””์ž์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด, ์‹œ์Šคํ…œ์˜ ๋ณต์žก๋„๋ฅผ ํฌ๊ฒŒ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ํ•˜์ง€๋งŒ, PALSware์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ทธ ์•…์˜ํ–ฅ์ด ๋งค์šฐ ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  ์ด ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์Šคํ…œ์— ๋ฒ„๊ทธ๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค. ๋˜ํ•œ, ๋ฏธ๋“ค ์›จ์–ด์˜ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ์ผ์€ ์ผ๋ฐ˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„๊ทธ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๋ณด๋‹ค ๋งค์šฐ ์–ด๋ ค์šด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ์šฐ๋ฆฌ๋Š” VeriPALS๋ผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ฐœ๋ฐœํ•˜์˜€๋‹ค. ์ด ํ”„๋ ˆ ์ž„์›Œํฌ๋Š” ์ˆ˜ํ•™์ ์œผ๋กœ ์—„๋ฐ€ํ•˜๊ฒŒ ๊ฒ€์ฆํ•œ PALSware์˜ C ๊ตฌํ˜„์ฒด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ์•ˆ์ „ํ•œ ์‹œ์Šคํ…œ ๊ตฌํ˜„์„ ๋•๋Š”๋‹ค. ๋˜ํ•œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์Šคํ…œ์„ Coq ์œ„์—์„œ ์ˆ˜ํ•™์ ์œผ๋กœ ์—„๋ฐ€ํžˆ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ๋” ๋‚˜์•„๊ฐ€์„œ, ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ์„ ํšจ์œจ์ ์ธ ๋žœ๋ค ํ…Œ์ŠคํŒ… ํˆด๋กœ์„œ ์ œ๊ณตํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ํ”„๋ ˆ์ž„์›Œํฌ ์œ„์—์„œ ๋‘ ์ข…๋ฅ˜์˜ ์• ํ”Œ๋ฆฌ ์ผ€์ด์…˜ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ํ…Œ์ŠคํŒ… ๋ฐ ์—„๋ฐ€ ๊ฒ€์ฆํ•˜์—ฌ ์ด ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์œ ์šฉ์„ฑ์„ ๋ณด์˜€๋‹ค.Chapter 1 Introduction 1 Chapter 2 Preliminaries 8 2.1 PALSware 8 2.1.1 PALSware in A Distributed System 9 2.1.2 Correctness of Synchronization on Reliable Network 10 2.1.3 Implementation of PALSware 11 2.2 Interaction Trees 14 Chapter 3 Overview 16 3.1 Framework 16 3.2 Key Ideas 21 3.2.1 Concurrent Executions of Nodes 21 3.2.2 Global Clock vs. Local Clock 22 3.2.3 Real-time Local Executions of Node Model 23 3.2.4 Time Constraint on Network Transmission Times 24 3.2.5 Time Constraint on Program Executions 25 3.2.6 Observable Behaviors of a Real-Time Distributed System 26 Chapter 4 Formalization 28 4.1 General Definitions 28 4.2 Application System of the Framework 31 4.3 Real-World Model 34 4.3.1 Network Model 34 4.3.2 Generic System Model On Network 35 4.3.3 Operating System Model 37 4.4 Executable Abstract Synchrous Model 41 4.5 Result 42 Chapter 5 Refinement Proof using Intermediate Models 44 5.1 Refinement 1: Abstraction of C programs 44 5.2 Refinement 2: Abstract PALSware 47 5.3 Refinement 3: Abstraction of Network 48 5.4 Refinement 4: Synchronous Execution 51 5.5 Refinement 5: Making It Executable 54 Chapter 6 Case Study 1: Active-Standby Resource Scheduling System 55 6.1 High-Level Description 56 6.2 Implementation 59 6.3 Formally Verified Properties 62 6.3.1 Correctness of Implementation 62 6.3.2 Abstraction To Single-Controller System 63 Chapter 7 Case Study 2: Synchronous Work Assignment System 68 7.1 High-Level Description 69 7.2 Implementation 70 Chapter 8 Results 75 8.1 Development 75 8.2 Experimental Results 77 Chapter 9 Related Work 80 9.1 PALS Pattern and PALSware Verification 80 9.2 Verification Frameworks for Distributed Systems 81 9.3 Verifying C Programs 83 Chapter 10 Conclusion and Future Work 85 Bibliography 88 ์ดˆ๋ก 92 Acknowledgements 93๋ฐ•

    Timed Automata Semantics for Analyzing Creol

    Full text link
    We give a real-time semantics for the concurrent, object-oriented modeling language Creol, by mapping Creol processes to a network of timed automata. We can use our semantics to verify real time properties of Creol objects, in particular to see whether processes can be scheduled correctly and meet their end-to-end deadlines. Real-time Creol can be useful for analyzing, for instance, abstract models of multi-core embedded systems. We show how analysis can be done in Uppaal.Comment: In Proceedings FOCLASA 2010, arXiv:1007.499

    Doctor of Philosophy

    Get PDF
    dissertationOver the last decade, cyber-physical systems (CPSs) have seen significant applications in many safety-critical areas, such as autonomous automotive systems, automatic pilot avionics, wireless sensor networks, etc. A Cps uses networked embedded computers to monitor and control physical processes. The motivating example for this dissertation is the use of fault- tolerant routing protocol for a Network-on-Chip (NoC) architecture that connects electronic control units (Ecus) to regulate sensors and actuators in a vehicle. With a network allowing Ecus to communicate with each other, it is possible for them to share processing power to improve performance. In addition, networked Ecus enable flexible mapping to physical processes (e.g., sensors, actuators), which increases resilience to Ecu failures by reassigning physical processes to spare Ecus. For the on-chip routing protocol, the ability to tolerate network faults is important for hardware reconfiguration to maintain the normal operation of a system. Adding a fault-tolerance feature in a routing protocol, however, increases its design complexity, making it prone to many functional problems. Formal verification techniques are therefore needed to verify its correctness. This dissertation proposes a link-fault-tolerant, multiflit wormhole routing algorithm, and its formal modeling and verification using two different methodologies. An improvement upon the previously published fault-tolerant routing algorithm, a link-fault routing algorithm is proposed to relax the unrealistic node-fault assumptions of these algorithms, while avoiding deadlock conservatively by appropriately dropping network packets. This routing algorithm, together with its routing architecture, is then modeled in a process-algebra language LNT, and compositional verification techniques are used to verify its key functional properties. As a comparison, it is modeled using channel-level VHDL which is compiled to labeled Petri-nets (LPNs). Algorithms for a partial order reduction method on LPNs are given. An optimal result is obtained from heuristics that trace back on LPNs to find causally related enabled predecessor transitions. Key observations are made from the comparison between these two verification methodologies

    The SIGNAL Approach to the Design of System Architectures

    Get PDF
    International audienceModeling plays a central role in system engineering. It significantly reduces costs and efforts in the design by providing developers with means for cheaper and more relevant experimentations. So, design choices can be assessed earlier. The use of a formalism, such as the synchronous language SIGNAL which relies on solid mathematical foundations for the modeling, allows validation. This is the aim of the methodology defined for the design of embedded systems where emphasis is put on formal techniques for verification, analysis, and code generation. This paper mainly focuses on the modeling of architecture components using SIGNAL. For illustration, we consider the modeling of a bounded FIFO queue, which is intended to be used for communication protocols. We bring out the capabilities of SIGNAL to allow specifications in an elegant way, and we check few elementary properties on the resulting model for correctness

    An Interactive System Level Simulation Environment for Systems- on-Chip

    Get PDF
    International audienceThis article presents an interactive simulation environment for high level models intended for Design Space Exploration of Systems-On-Chip. The existing open source development environment TTool supports the MARTE compliant UML profile DIPLODOCUS and enables the designer to create, simulate and formally verify models. The goal is to obtain first performance estimations of the system intended for design while minimizing the modeling effort. The contribution outlined in this paper is an additional module providing means for controlling the simulation in real time by performing step wise execution, saving and restoring simulation states as well as animating UML models of the system. Moreover the paper elaborates on the integration of these new features into the existing framework consisting of a simulation engine on the one hand and a graphical user interface on the other hand
    • โ€ฆ
    corecore