<html><body><div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000"><div data-marker="__QUOTED_TEXT__"><div style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000;" data-mce-style="font-family: arial,helvetica,sans-serif; font-size: 12pt; color: #000000;"><div><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">Talk:</span></div><div><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">Interrupts in OS code: let’s reason about them. Yes, this means concurrency.</span></div><div><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">June Andronick, Data61</span><br></div><div><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">Monday, May 16th, 10:30am</span></div><div><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">Computer Science 402<br></span></div><br><div><p style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;" data-mce-style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;"><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">Existing modelled and verified operating systems (OS’s) typically run on uniprocessor platforms and run with interrupts mostly disabled. This makes formal reasoning more tractable: execution is mostly sequential. The eChronos OS is a real-time OS used in tightly constrained devices, running on (uniprocessor) embedded micro-controllers. It is used in the DARPA-funded HACMS program, where it runs the flight control software of a high-assurance quadcopter. To provide low latency, the eChronos OS runs with interrupts enabled and provides a preemptive scheduler. In terms of verification, this means that concurrency reasoning is required, which significantly increases the complexity: application and OS instructions may be interleaved with interrupt handler instructions.</span></p><p style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;" data-mce-style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;"><br></p><p style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;" data-mce-style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;"><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">In our work we explicitly model the effect of interrupts and their handling by the hardware and OS. We provide a general formal model of the interleaving between OS code, application code and interrupt handlers. We then instantiate this model to formalise the scheduling behavior of the eChronos OS, and prove the main scheduler property: the running task is always the highest-priority runnable task.</span></p><p style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;" data-mce-style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;"><br></p><p style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;" data-mce-style="color: #333333; font-family: sans-serif,Arial,Verdana,'Trebuchet MS'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 20.8px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; margin: 0px;"><span style="font-size: 12pt; font-family: arial,helvetica,sans-serif;" data-mce-style="font-size: 12pt; font-family: arial,helvetica,sans-serif;">June Andronick is a Senior Researcher at Data61|CSIRO (formerly&nbsp;NICTA). Her research focuses on increasing the reliability of critical&nbsp;software systems, by mathematically proving that the code behaves as&nbsp;expected and satisfies security and safety requirements.&nbsp; She&nbsp;contributed to the seL4 correctness proof and now focuses on&nbsp;concurrency reasoning for OS code. She leads the concurrency software&nbsp;verification research in Data61, and is deputy leader of the&nbsp;Trustworthy Systems group. She was recognised in 2011 by MIT's&nbsp;Technology Review as one of the world's top young innovators&nbsp;(TR35). She holds a PhD in Computer Science from the University of&nbsp;Paris-Sud, France.</span></p></div></div><br></div></div></body></html>