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.

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.

Major Measurable 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%