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.
Design Technical Elective for CPE; Technical Elective for EE
C- or better in 4534 or CS 3214
Knowledge of concurrency, in particular, understanding of concurrency abstractions (e.g., threads, processes) their synchronization techniques (e.g., mutual exclusion locks), and mechanisms to cope with deadlocks. This material is covered in the course prerequisite of 4534 or CS 3214.
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%|