654 research outputs found

    Maintaining consistency in distributed systems

    Get PDF
    In systems designed as assemblies of independently developed components, concurrent access to data or data structures normally arises within individual programs, and is controlled using mutual exclusion constructs, such as semaphores and monitors. Where data is persistent and/or sets of operation are related to one another, transactions or linearizability may be more appropriate. Systems that incorporate cooperative styles of distributed execution often replicate or distribute data within groups of components. In these cases, group oriented consistency properties must be maintained, and tools based on the virtual synchrony execution model greatly simplify the task confronting an application developer. All three styles of distributed computing are likely to be seen in future systems - often, within the same application. This leads us to propose an integrated approach that permits applications that use virtual synchrony with concurrent objects that respect a linearizability constraint, and vice versa. Transactional subsystems are treated as a special case of linearizability

    Atomic-SDN: Is Synchronous Flooding the Solution to Software-Defined Networking in IoT?

    Get PDF
    The adoption of Software Defined Networking (SDN) within traditional networks has provided operators the ability to manage diverse resources and easily reconfigure networks as requirements change. Recent research has extended this concept to IEEE 802.15.4 low-power wireless networks, which form a key component of the Internet of Things (IoT). However, the multiple traffic patterns necessary for SDN control makes it difficult to apply this approach to these highly challenging environments. This paper presents Atomic-SDN, a highly reliable and low-latency solution for SDN in low-power wireless. Atomic-SDN introduces a novel Synchronous Flooding (SF) architecture capable of dynamically configuring SF protocols to satisfy complex SDN control requirements, and draws from the authors' previous experiences in the IEEE EWSN Dependability Competition: where SF solutions have consistently outperformed other entries. Using this approach, Atomic-SDN presents considerable performance gains over other SDN implementations for low-power IoT networks. We evaluate Atomic-SDN through simulation and experimentation, and show how utilizing SF techniques provides latency and reliability guarantees to SDN control operations as the local mesh scales. We compare Atomic-SDN against other SDN implementations based on the IEEE 802.15.4 network stack, and establish that Atomic-SDN improves SDN control by orders-of-magnitude across latency, reliability, and energy-efficiency metrics

    System Support for Bandwidth Management and Content Adaptation in Internet Applications

    Full text link
    This paper describes the implementation and evaluation of an operating system module, the Congestion Manager (CM), which provides integrated network flow management and exports a convenient programming interface that allows applications to be notified of, and adapt to, changing network conditions. We describe the API by which applications interface with the CM, and the architectural considerations that factored into the design. To evaluate the architecture and API, we describe our implementations of TCP; a streaming layered audio/video application; and an interactive audio application using the CM, and show that they achieve adaptive behavior without incurring much end-system overhead. All flows including TCP benefit from the sharing of congestion information, and applications are able to incorporate new functionality such as congestion control and adaptive behavior.Comment: 14 pages, appeared in OSDI 200

    ์‚ฌ์ด๋ฒ„ ๋ฌผ๋ฆฌ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ 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๋ฐ•

    Distributed Programming with Shared Data

    Get PDF
    Until recently, at least one thing was clear about parallel programming: tightly coupled (shared memory) machines were programmed in a language based on shared variables and loosely coupled (distributed) systems were programmed using message passing. The explosive growth of research on distributed systems and their languages, however, has led to several new methodologies that blur this simple distinction. Operating system primitives (e.g., problem-oriented shared memory, Shared Virtual Memory, the Agora shared memory) and languages (e.g., Concurrent Prolog, Linda, Emerald) for programming distributed systems have been proposed that support the shared variable paradigm without the presence of physical shared memory. In this paper we will look at the reasons for this evolution, the resemblances and differences among these new proposals, and the key issues in their design and implementation. It turns out that many implementations are based on replication of data. We take this idea one step further, and discuss how automatic replication (initiated by the run time system) can be used as a basis for a new model, called the shared data-object model, whose semantics are similar to the shared variable model. Finally, we discuss the design of a new language for distributed programming, Orca, based on the shared data-object model. 1

    Programming Languages for Distributed Computing Systems

    Get PDF
    When distributed systems first appeared, they were programmed in traditional sequential languages, usually with the addition of a few library procedures for sending and receiving messages. As distributed applications became more commonplace and more sophisticated, this ad hoc approach became less satisfactory. Researchers all over the world began designing new programming languages specifically for implementing distributed applications. These languages and their history, their underlying principles, their design, and their use are the subject of this paper. We begin by giving our view of what a distributed system is, illustrating with examples to avoid confusion on this important and controversial point. We then describe the three main characteristics that distinguish distributed programming languages from traditional sequential languages, namely, how they deal with parallelism, communication, and partial failures. Finally, we discuss 15 representative distributed languages to give the flavor of each. These examples include languages based on message passing, rendezvous, remote procedure call, objects, and atomic transactions, as well as functional languages, logic languages, and distributed data structure languages. The paper concludes with a comprehensive bibliography listing over 200 papers on nearly 100 distributed programming languages

    The shared data-object model as a paradigm for programming distributed systems

    Get PDF

    Towards formal models and languages for verifiable Multi-Robot Systems

    Get PDF
    Incorrect operations of a Multi-Robot System (MRS) may not only lead to unsatisfactory results, but can also cause economic losses and threats to safety. These threats may not always be apparent, since they may arise as unforeseen consequences of the interactions between elements of the system. This call for tools and techniques that can help in providing guarantees about MRSs behaviour. We think that, whenever possible, these guarantees should be backed up by formal proofs to complement traditional approaches based on testing and simulation. We believe that tailored linguistic support to specify MRSs is a major step towards this goal. In particular, reducing the gap between typical features of an MRS and the level of abstraction of the linguistic primitives would simplify both the specification of these systems and the verification of their properties. In this work, we review different agent-oriented languages and their features; we then consider a selection of case studies of interest and implement them useing the surveyed languages. We also evaluate and compare effectiveness of the proposed solution, considering, in particular, easiness of expressing non-trivial behaviour.Comment: Changed formattin
    • โ€ฆ
    corecore