Compiler-Assisted Thread Abstractions for Resource-Constrained Systems
Total Page:16
File Type:pdf, Size:1020Kb
Research Collection Doctoral Thesis Compiler-assisted thread abstractions for resource-constrained systems Author(s): Bernauer, Alexander Publication Date: 2013 Permanent Link: https://doi.org/10.3929/ethz-a-009970097 Rights / License: In Copyright - Non-Commercial Use Permitted This page was generated automatically upon download from the ETH Zurich Research Collection. For more information please consult the Terms of use. ETH Library Diss. ETH No. 21182 Compiler-Assisted Thread Abstractions for Resource-Constrained Systems DISSERTATION submitted to ETH ZURICH for the degree of DOCTOR OF SCIENCES (Dr. sc. ETH Zürich) by ALEXANDER BERNAUER Diplom-Informatiker, University of Ulm, Germany born September 11, 1980 citizen of Germany accepted on the recommendation of Prof. Dr. Friedemann Mattern, examiner Prof. Dr. Kay Römer, co-examiner Prof. Dr. Thomas Gross, co-examiner 2013 ii Für Liesa Bernauer, meine Treue, meine Freiheit, mein Anker, die eine, die mich bindet — Mutter meines Sohnes. Ich liebe dich. Für Marco Baur, mein treuer Freund, mein Mentor, mein Schüler, der eine, der wie ich — Wanderer zwischen Welten. Ich werde dich nie vergessen. Danksagung Diese Arbeit wäre ohne die Hilfe vieler Mitmenschen nicht möglich gewesen. So danke ich Prof. Dr. Friedemann Mattern für sein Vertrauen in mich und für die Möglichkeit, an einer der führenden technischen Universitäten zu promovieren. Ausserdem danke ich ihm für die Freiheit, mein Thema selber zu suchen, und für die Unterstützung, diese themenübergreifende Arbeit zum Abschluss zu bringen. Ohne dich hätte sich meinen Traum zu promovieren wahrscheinlich nie erfüllt. Ich danke Prof. Dr. Kay Römer für die wertvolle inhaltliche Zusammenarbeit und das Vermitteln seiner Erfahrung, für seine Flexibilität, seine Offenheit und für seine Bereitschaft, mich über seine persönlichen Interessen hinaus zu unterstüzten. Ohne dich wäre ich in der Isolation versunken und hätte sicherlich noch nicht — und vielleicht niemals — abgeschlossen. Ich danke Prof. Dr. Thomas Gross für seine Zeit, mein Thema im Vorfeld inhaltlich zu begleiten, sich gründlich mit dieser Arbeit auseinanderzusetzen und schliesslich als wichtiger Gutachter für meine Dissertation zu aggieren. Ihre Unterstützung war eine Vorraussetzung für den Abschluss dieser Arbeit, die thematisch in Ihren Fachgebiet angesiedelt ist. Ich danke Liesa Bernauer dafür, dass sie mich von Anfang an ermutigt hat, meinen Traum zu verfolgen und an mich zu glauben, dass sie mich andauernd weiter angetrieben, hat auf mein Ziel hinzuarbeiten, und dass sie mir den Rücken frei gehalten hat, damit ich diese Arbeit abschliessen kann — und all das mit grossen persönlichem Verzicht und enormem Aufwand. Ohne dich hätte ich es nicht gewagt und schon gar nicht vollbracht. Ich danke Fritz und Jutta Bernauer dafür, dass sich mich im Geiste der Liebe, des Selbstbewusstseins und der persönlichen Entfaltung grossgezogen haben. Euer bedinung- loser Rückhalt hat mich den Mut aufbringen lassen, dieses Thema trotz Zweifel und Kritik bis zum Ende zu verfolgen. Ich danke Dr. Christian Flörkemeier für die inhaltliche und persönliche Betreuung am Ende meiner Dissertation. Ohne deine Erfahrung, deine Motivierungen und deinen Druck hätte ich diese Arbeit nicht zeitgerecht zu Ende gebracht. Ich danke Matthias Kovatsch für seine Freundschaft, sein offenes Ohr, den Zusam- menhalt, seine Bereitschaft mir immer wieder zu helfen und den ganzen Spass, den wir zusammen hatten. Es war eine schöne Zeit mit dir und ich hoffe, es kommen noch weitere. Ich danke Markus Weiss für seine Freundschaft, seine Treue und seine persönliche Unterstüztung, für die Skiausflüge, Feiern und Grillabende. Ich hab von dir gelernt und du hast mich verändert. Ich danke Simon Meier für seine fachliche Unterstüztung, seine Ideen und seine Bereitschaft, einem Anfänger ohne Eigennutz zu helfen. Ohne dich hätte ich kaum die fachliche Kompetenz aufbauen können, die für die Umsetzung dieser Arbeit nötig ist. Ich danke Steffanie Cantu für ihre professionelle sprachliche Korrektur dieser Arbeit. Dank deiner Hilfe ist es nicht ganz so offensichtlich, dass ich wenig Talent für Sprachliches habe. Darüberhinaus haben mir noch viele Menschen geholfen, indem sie mit mir über v Danksagung diese Arbeit diskutiert, Fragen beantwortet, auf Probleme hingewiesen und/oder Ideen beigesteuert haben. In alphabetischer Reihenfolge waren das: Andreas Bernauer, Anwar Hithnawi, Luca Mottola, Michael Pradel, Michael Schwarz, Moritz Strübe, Rico Schiekel, Silvia Santini, Simon Mayer, Wilhelm Kleiminger und Yunyan Ma. Ausserdem geht mein Dank an alle Beteiligten der ETH Zürich für die unglaubliche Infrastruktur und die umfassenden und freundlichen Dienstleistungen. Zuletzt möchte ich mich bei den Beteiligten der folgenden Projekte für die finanzielle Unterstützung und die Zusammenarbeit bedanken: • das National Competence Center in Research on Mobile Information and Commu- nication Systems (NCCR-MICS); unterstützt durch den Schweizer Nationalfonds zur Förderung der Wissenschaflichen Forschung unter der Kennung 5005-67322 • das Cooperating Objects Network of Excellence (CONET); gefördert durch die Europäische Komission im Rahmen des Seventh Framework Programme unter der Kennung FP7-2007-2-224053 vi Abstract Although increase of hardware resources is the general trend in information technology, resource-constrained systems continue to be of relevance. In wireless sensor networks (WSN), for example, a typical device is equipped with a few kilobytes of RAM and provides only limited computing power. Such systems aim to provide ad-hoc and long- term monitoring of physical or environmental conditions over large spatial regions. Maximizing the number of participating devices and extending the overall network lifetime is crucial for such applications. Moore’s Law is therefore exploited towards lower device costs and lower power consumption at almost constant resource capabilities per device. This scarcity of resources has various implications on how resource-constrained sys- tems such as wireless sensor networks are designed and implemented. Besides requiring highly optimized network protocols, one particularly important consequence is the preva- lent adoption of the event-based programming paradigm. This paradigm is considered well-suited for traditional WSN applications, because it can be implemented efficiently and matches the reactive nature of such applications. However, requirements of WSN applications are continuously increasing, causing higher software complexity to meet growing expectations. As a result, today’s sensor networks often run IP stacks, HTTP and CoAP services, middleware, and other extensive software components. Implementing the complex control and data flows of such applications and services in an event-based manner is error-prone and the resulting code is hard to maintain. This leads to software faults that are costly and time consuming to track down, both during development and testing, and particularly during deployment and operation. Additionally, the presence of software faults entails security issues for a deployed system. To counter these problems, better programming abstractions for resource-constrained systems seem necessary. Threads are known for overcoming many problems of events by supporting sequential control flows via synchronous functions, but existing solutions either provide incomplete thread semantics or introduce a significant resource overhead. This reflects the common believe that expressiveness has to be traded for efficiency and vice versa. With our work, we show that this trade-off is not inherent to resource-constrained systems. We follow the approach of compiler-assisted thread abstractions, where full-fledged thread-based C code is compiled to equivalent event-based C code that runs atop an event-based operating system. This approach is promising for two reasons. First, the event-based run-time system avoids multiple preallocated stacks and the overhead of a task scheduler. And second, a compiler can, in contrast to a run-time-based thread library, perform static program analysis and thus apply application-specific optimizations. Our thesis is that a comprehensive thread abstraction is possible also for resource- constrained systems. A compiler, which translates thread-based applications into event- based programs, is able to combine the efficiency of event-based programming with the comfort of thread-based programming. This addresses the increasing requirements of resource-constrained systems. We develop our thesis in the context of wireless sensor networks, assuming that resource scarcity will continue to be relevant. Existing threading vii Abstract solutions either provide only limited thread semantics or require more resources than common WSN devices offer. We therefore propose a compiler-assisted approach that can provide a comprehensive and efficient thread abstraction. We support our thesis by presenting a comprehensive compiler-assisted thread ab- straction concept for resource-constrained systems. To achieve this, we developed a platform-agnostic code transformation from thread-based C code to equivalent event- based C code. This enables developers to write thread-based applications without the additional costs of a thread library. Moreover, we present a way to reverse this transfor- mation at run-time for fault diagnostics purposes. Hiding the details of the transformation and the underlying run-time system during all phases of development completes the abstraction. In order to evaluate our approach, we designed