After being working on real-time systems for almost 4 years during my PhD, I have learnt so much about this research field, and it is becoming more clear to me what is this research really about. The most critical part of real-time systems is timing guarantee, in which the tasks in the system, especially with hard real-time constraints, would meet their deadlines. However, I also realized the general principle behind real-time systems is changing these days: instead of trying to make 100% guarantee, new methods are invested so even a timing failure / cpu overload occurs, the system would still have predictable behaviour.
Real-time Scheduling Theory has been developed over last 40 years, since the first published work of Liu and Layland in 1973. Before that, real-times systems were designed with cyclic executives, which is in a ad-hoc manner and very difficult to maintain. In general, the theory is consist of task modelling, scheduling policy and schedulability test. Some other issues, e.g., resource management, response time analysis, worst-case execution time analysis, are also involved in the design of real-time systems.
Having been mainly using C/C++ in real-time systems for many years, this is my first time to seriously consider other languages which has the capability and primitives to handle concurrency and meet the requirement of hard real-time systems. During my time looking for a research position in Real-time Systems Group at University of York, I firstly realized there is another language – Ada – which has been used in military, aerospace and industrial systems for more than three decades.