The BRADLEY DEPARTMENT of ELECTRICAL and COMPUTER ENGINEERING

ECE 5550G Advanced Real-Time Systems | ECE | Virginia Tech

Graduate PROGRAMS

Course Information

Description

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 objective of the course is to learn about 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 how to work 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.

Prerequisites

Graduate Standing

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
  • Design, analyze, implement, and evaluate real-time computing solutions in the spaces of scheduling, synchronization, and memory management that extend the state-of-the-art

Course Topics

Topic

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 protocols 10%
6. Time/utility function real-time resource management 20%
7. Real-time operating system kernel design 15%
8. Real-time programming languages 10%