{"_id":"4418","abstract":[{"text":"We present a new software system architecture for the implementation of hard real-time applications. The core of the system is a microkernel whose reactivity (interrupt handling as in synchronous reactive programs) and proactivity (task scheduling as in traditional RTOSs) are fully programmable. The microkernel, which we implemented on a StrongARM processor, consists of two interacting domain-specific virtual machines, a reactive E (Embedded) machine and a proactive S (Scheduling) machine. The microkernel code (or microcode) that runs on the microkernel is partitioned into E and S code. E code manages the interaction of the system with the physical environment: the execution of E code is triggered by environment interrupts, which signal external events such as the arrival of a message or sensor value, and it releases application tasks to the S machine. S code manages the interaction of the system with the processor: the execution of S code is triggered by hardware interrupts, which signal internal events such as the completion of a task or time slice, and it dispatches application tasks to the CPU, possibly preempting a running task. This partition of the system orthogonalizes the two main concerns of real-time implementations: E code refers to environment time and thus defines the reactivity of the system in a hardware- and scheduler-independent fashion; S code refers to CPU time and defines a system scheduler. If both time lines can be reconciled, then the code is called time safe; violations of time safety are handled again in a programmable way, by run-time exceptions. The separation of E from S code permits the independent programming, verification, optimization, composition, dynamic adaptation, and reuse of both reaction and scheduling mechanisms. Our measurements show that the system overhead is very acceptable even for large sets of task, generally in the 0.2--0.3% range.","lang":"eng"}],"date_published":"2005-01-01T00:00:00Z","publication_status":"published","conference":{"name":"VEE: Virtual Execution Environments"},"citation":{"mla":"Kirsch, Christoph, et al. A Programmable Microkernel for Real-Time Systems. ACM, 2005, pp. 35–45, doi:10.1145/1064979.1064986.","ieee":"C. Kirsch, M. Sanvido, and T. A. Henzinger, “A programmable microkernel for real-time systems,” presented at the VEE: Virtual Execution Environments, 2005, pp. 35–45.","ama":"Kirsch C, Sanvido M, Henzinger TA. A programmable microkernel for real-time systems. In: ACM; 2005:35-45. doi:10.1145/1064979.1064986","apa":"Kirsch, C., Sanvido, M., & Henzinger, T. A. (2005). A programmable microkernel for real-time systems (pp. 35–45). Presented at the VEE: Virtual Execution Environments, ACM. https://doi.org/10.1145/1064979.1064986","ista":"Kirsch C, Sanvido M, Henzinger TA. 2005. A programmable microkernel for real-time systems. VEE: Virtual Execution Environments, 35–45.","chicago":"Kirsch, Christoph, Marco Sanvido, and Thomas A Henzinger. “A Programmable Microkernel for Real-Time Systems,” 35–45. ACM, 2005. https://doi.org/10.1145/1064979.1064986.","short":"C. Kirsch, M. Sanvido, T.A. Henzinger, in:, ACM, 2005, pp. 35–45."},"extern":1,"month":"01","date_updated":"2021-01-12T07:56:49Z","type":"conference","day":"01","author":[{"full_name":"Kirsch, Christoph M","first_name":"Christoph","last_name":"Kirsch"},{"first_name":"Marco","last_name":"Sanvido","full_name":"Sanvido, Marco A"},{"orcid":"0000−0002−2985−7724","id":"40876CD8-F248-11E8-B48F-1D18A9856A87","full_name":"Thomas Henzinger","last_name":"Henzinger","first_name":"Thomas A"}],"page":"35 - 45","doi":"10.1145/1064979.1064986","title":"A programmable microkernel for real-time systems","quality_controlled":0,"status":"public","year":"2005","publisher":"ACM","date_created":"2018-12-11T12:08:45Z","publist_id":"311"}