ECE 4550 - Real-Time Systems (3C)
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.
Why take this course?
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 benefit of the course is the exposure to 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 will build experience in working 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.