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 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.
Percentage of Course
|1. Introduction to real-time systems||5%|
|2. Real-time scheduling: uniprocessor scheduling||15%|
|3. Real-time scheduling: multiprocessor/multicore scheduling||10%|
|4. Real-time synchronization: uniprocessor protocols||15%|
|5. Real-time synchronization: multiprocessor/multicore protcols||10%|
|6. Time/utility function real-time resource management||20%|
|7. Real-time operating system kernel design||15%|
|8. Real-time programming languages||10%|