Theory, algorithmic and protocol concepts, mechanisms, and implementations of real-time computer systems. Introduction to real-time systems, real-time scheduling, real-time synchronization, real-time operating system kernels, and real-time programming languages. Design and analysis of real-time resource management algorithms (e.g., scheduling, synchronization), their implementations in production operating system kernels, experimental studies of those implementations, and real-time application development.
Real-time computing is an important sub-discipline of computer engineering with significant applications in a number of domains including industrial automation (process control and discrete manufacturing), defense, avionics, and telecommunications. A solid foundation in real-time computing is highly useful for a computer engineer, especially for those focusing on embedded systems, as many (but not all) embedded systems are time-critical. Courses in embedded systems usually cover basic concepts of real-time computing, but not with the depth that is envisioned in this course. Another objective of the course is to learn about operating system kernel internals. Since the course has a systems focus with a particular emphasis on PREEMPT_RT, students will learn how to program the Linux kernel, debug kernel code, implement new, or modify existing kernel subsystems, especially the scheduling subsystem, how to performance-optimize kernel subsystems by exploiting various time/space tradeoffs, and how to work with a large-scale open-source project. Besides learning how to write real-time OS kernel modules, this skillset is highly desirable for writing software for embedded, general-purpose OS, and virtualization environments.
Describe real-time systems and how real-time resource management algorithms and mechanisms (e.g., scheduling, synchronization) enable satisfaction of application timing constraintsConduct real-time schedulability analysisDesign, analyze, and implement real-time scheduling algorithms and real-time synchronization protocols in operating system kernelsWrite, modify, and debug operating system kernel subsystems including the scheduling subsystemDesign, analyze, implement, and evaluate real-time computing solutions in the spaces of scheduling, synchronization, and memory management that extend the state-of-the-art