ECE 4550 Real-Time Systems | ECE | Virginia Tech

Undergraduate PROGRAMS

Course Information


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.

Learning Objectives

  • Describe real-time systems and how real-time resource management algorithms and mechanisms (e.g., scheduling, synchronization) enable satisfaction of application timing constraints.
  • Conduct real-time schedulability analysis.
  • Design, analyze, and implement real-time scheduling algorithms and real-time synchronization protocols in operating system kernels.
  • Write, modify, and debug operating system kernel subsystems including the scheduling subsystem.

Course Topics


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%