732 research outputs found

    Statically-analyzed stream monitoring for cyber-physical Systems

    Get PDF
    Cyber-physical systems are digital systems interacting with the physical world. Even though this induces an inherent complexity, they are responsible for safety-critical tasks like governing nuclear power plants or controlling autonomous vehicles. To preserve trust into the safety of such systems, this thesis presents a runtime verification approach designed to generate trustworthy monitors from a formal specification. These monitors are responsible for observing the cyber-physical system during runtime and ensuring its safety. As underlying language, I present the asynchronous real-time specification language RTLola. It contains primitives for arithmetic properties and grants precise control over the timing of the monitor. With this, it enables specifiers to express properties relevant to cyber-physical systems. The thesis further presents a static analysis that identifies inconsistencies in the specification and provides insights into the dynamic behavior of the monitor. As a result, the resource consumption of the monitor becomes predictable. The generation of the monitor produces either a hardware description synthesizable onto programmable hardware, or Rust code with verification annotation. These annotations allow for proving the correctness of the monitor with respect to the semantics of RTLola. Last, I present the construction of a conservative hybrid model of the underlying system using information extracted from the specification. This model enables further verification steps.Cyber-physische Systeme sind digitale Systeme, die mit der physischen Welt interagieren. Obwohl das zu einer inhรคrenten Komplexitรคt fรผhrt, sind sie verantwortlich fรผr sicherheitskritische Aufgaben wie der Steuerung von Kernkraftwerken oder autonomen Fahrzeugen. Umdas Vertrauen in deren Sicherheit zu wahren, prรคsentiert diese Doktorarbeit einen Ansatz zur Laufzeitverifikation, konzipiert, um vertrauenswรผrdige Monitore aus einer formalen Spezifikation zu generieren. Diese Monitore sind dafรผr verantwortlich, das cyber-physische System zur Laufzeit zu รผberwachen und dessen Sicherheit zu gewรคhrleisten. Als zugrundeliegende Sprache prรคsentiere ich die asynchrone Echtzeit-Spezifikationssprache RTLola. Sie enthรคlt Primitiven fรผr arithmetische Eigenschaften und gewรคhrt prรคzise Kontrolle รผber das Timing des Monitors. Damit wird es Spezifizierenden ermรถglicht Eigenschaften auszudrรผcken, die fรผr Cyber-physische Systeme relevant sind. Weiterhin prรคsentiert diese Doktorarbeit eine statische Analyse, die Unstimmigkeiten in der Spezifikation identifiziert und Einblicke in das dynamische Verhalten des Monitors liefert. Aufgrund dessen wird der Ressourcenverbrauch des Monitors vorhersehbar. Die Generierung des Monitors erzeugt entweder eine Hardwarebeschreibung, die auf programmierbarer Hardware synthetisiert werden kann, oder Rust Code mit Verifikationsannotationen. Diese Annotationen erlauben es, die Korrektheit des Monitors bezogen auf die Semantik von RTLola zu beweisen. AbschlieรŸend prรคsentiere ich die Konstruktion von einem konservativen hybriden Modell des zugrundeliegenden Systems anhand von Informationen, die aus der Spezifikation gewonnen wurden. Dieses Modell ermรถglicht weitere Verifikationsschritte

    C์˜ ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™” ์กฐํ™”์‹œํ‚ค๊ธฐ

    Get PDF
    ํ•™์œ„๋…ผ๋ฌธ (๋ฐ•์‚ฌ)-- ์„œ์šธ๋Œ€ํ•™๊ต ๋Œ€ํ•™์› : ๊ณต๊ณผ๋Œ€ํ•™ ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€, 2019. 2. ํ—ˆ์ถฉ๊ธธ.์ฃผ๋ฅ˜ C ์ปดํŒŒ์ผ๋Ÿฌ๋“ค์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ณต๊ฒฉ์ ์ธ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฐ ์ตœ์ ํ™”๋Š” ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ํ–‰๋™์„ ๋ฐ”๊พธ๊ธฐ๋„ ํ•œ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ C ์–ธ์–ด๋ฅผ ๋””์ž์ธํ•  ๋•Œ ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์กฐํ™”์‹œํ‚ค๊ฐ€ ๊ต‰์žฅํžˆ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ด ํ•™๊ณ„์™€ ์—…๊ณ„์˜ ์ค‘๋ก ์ด๋‹ค. ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ๋Š”, ๊ทธ๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์„ ์ž˜ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด์„œ๋Š”, ์ฃผ๋ฅ˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ณต์žกํ•˜๊ณ ๋„ ํšจ๊ณผ์ ์ธ ์ตœ์ ํ™”๋ฅผ ์ž˜ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๊ณผ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋ฅผ ๋™์‹œ์— ์ž˜ ์ง€์›ํ•˜๋Š” ์‹คํ–‰์˜๋ฏธ๋Š” ์˜ค๋Š˜๋‚ ๊นŒ์ง€ ์ œ์•ˆ๋œ ๋ฐ”๊ฐ€ ์—†๋‹ค. ๋ณธ ๋ฐ•์‚ฌํ•™์œ„ ๋…ผ๋ฌธ์€ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์š”๊ธดํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ์ €์ˆ˜์ค€ ๊ธฐ๋Šฅ๊ณผ ์ฃผ์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋ฅผ ์กฐํ™”์‹œํ‚จ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, ์šฐ๋ฆฐ ๋‹ค์Œ ์„ฑ์งˆ์„ ๋งŒ์กฑํ•˜๋Š” ๋Š์Šจํ•œ ๋™์‹œ์„ฑ, ๋ถ„ํ•  ์ปดํŒŒ์ผ, ์ •์ˆ˜-ํฌ์ธํ„ฐ ๋ณ€ํ™˜์˜ ์‹คํ–‰์˜๋ฏธ๋ฅผ ์ฒ˜์Œ์œผ๋กœ ์ œ์•ˆํ•œ๋‹ค. ์ฒซ์งธ, ๊ธฐ๋Šฅ์ด ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด๊ณผ, ๊ทธ๋Ÿฌํ•œ ํŒจํ„ด์„ ๋…ผ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฒ•์„ ์ง€์›ํ•œ๋‹ค. ๋‘˜์งธ, ์ฃผ์š”ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ตœ์ ํ™”๋“ค์„ ์ง€์›ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ œ์•ˆํ•œ ์‹คํ–‰์˜๋ฏธ์— ์ž์‹ ๊ฐ์„ ์–ป๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋…ผ๋ฌธ์˜ ์ฃผ์š” ๊ฒฐ๊ณผ๋ฅผ ๋Œ€๋ถ€๋ถ„ Coq ์ฆ๋ช…๊ธฐ ์œ„์—์„œ ์ฆ๋ช…ํ•˜๊ณ , ๊ทธ ์ฆ๋ช…์„ ๊ธฐ๊ณ„์ ์ด๊ณ  ์—„๋ฐ€ํ•˜๊ฒŒ ํ™•์ธํ–ˆ๋‹ค.To improve the performance of C programs, mainstream compilers perform aggressive optimizations that may change the behaviors of programs that use low-level features in unidiomatic ways. Unfortunately, despite many years of research and industrial efforts, it has proven very difficult to adequately balance the conflicting criteria for low-level features and compiler optimizations in the design of the C programming language. On the one hand, C should support the common usage patterns of the low-level features in systems programming. On the other hand, C should also support the sophisticated and yet effective optimizations performed by mainstream compilers. None of the existing proposals for C semantics, however, sufficiently support low-level features and compiler optimizations at the same time. In this dissertation, we resolve the conflict between some of the low-level features crucially used in systems programming and major compiler optimizations. Specifically, we develop the first formal semantics of relaxed-memory concurrency, separate compilation, and cast between integers and pointers that (1) supports their common usage patterns and reasoning principles for programmers, and (2) provably validates major compiler optimizations at the same time. To establish confidence in our formal semantics, we have formalized most of our key results in the Coq theorem prover, which automatically and rigorously checks the validity of the results.Abstract Acknowledgements Chapter I Prologue Chapter II Relaxed-Memory Concurrency Chapter III Separate Compilation and Linking Chapter IV Cast between Integers and Pointers Chapter V Epilogue ์ดˆ๋กDocto
    • โ€ฆ
    corecore