Most important of all in hard real-time systems is predictability which means you are able to calculate the execution time (WCET) of your system and so you can predict it.
I think, it is sufficient to be deterministic - you cannot predict the flow of control in an event-driven system, it depends on the occurence of events, so event-driven systems are not really predictable in comparison to time-driven systems, but, nevertheless, you can build hard real-time systems with an event-triggered approach, too.
Also important is to be able to describe your application to the system, like period, deadline, priority and all the parameters that describe the temporal behavior of tasks (or threads).
agree
Finally, the scheduler or the scheduler mechanisms that are available are also important to have flexibility enought to use different scheduling policies.
Why? There are many time-driven operating systems that just support schedule tables and these operating systems are definitely able to deal with hard deadlines.
How you define for example the temporal paremeters of a thread on eCos? - the function /cyg_thread_create/ has no arguments about the temporal behavior of the thread
Why is an explicit notion of these parameters necessary during runtime? One should make up his mind about this stuff before the system is online, therefore, also the problems related to these timing parameters should be resolved offline, so, there should be no need to have this information during runtime except, maybe, debugging. Ciao, Fabian. -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
