Real-Time systems are computer systems in which succesful task performance depends on two factors:
- succesful result of computation,
- exact deadline time in which task was performed.
When a task execution time exceeds it's time deadline, we can say that system failed.
Hard, Firm & Soft Real-time Systems.
In the 'Hard Real-time Systems' missing a deadline is a total system failure. Hard realtime systems are created when missing a deadline can result in hardware damage or costs lives or health.
In 'Firm Real-time Systems' infrequent deadline misses are tolerable, but may degrade the system's quality of service. The usefulness of a result is zero after its deadline, but no damage or personnel loss occurs.
In 'Soft Real-time Systems' the usefulness of a result degrades after its deadline, thereby degrading the system's quality of service.
For a computer system to meet criteria of the 'Hard Real-time System', requirements are:
- well understood & fast enough hardware,
- real-time operating system (for example: RTLinux),
- every software piece must adhere to the 'hard real-time requirements'; software must generate results in the deadline time.
Software & other considerations.
In realtime systems, processor(s) time is divided between processes, by an operating system piece called 'real-time scheduler'. At a deadline time a process is 'interrupted' by the scheduler, even if it didn't complete.
Since we do not want any suprises regarding amount of time the process uses to complete, processes should be run & initialized before giving them tasks, and communicate with each other using real-time tools. We probably want to count all of the costs of the processor time, including rescheduling & inter-process communications. We do not wish to forget about other costs that can result in a performance losses, as memory costs as well.
In the Real-time computing, we are concerned mostly with the pessimistic times of tasks' completions, even at cost of average performances.
Since we wish to count exact amounts of the processor(s) cycles, probably the most reliable & best programming language for this is assembler - but perhaps the 'Ada' Programming Language & other Programming Languages can compete as well.
With 'Ola AH' Programming Language we are concerned with 'average time costs' of software parts performances, not with the 'Hard Real-time Standards'. With 'Ola AH' compiler, we'll still strive for a very fast solutions.
... see also, if You wish or need, ... : 'Ola AH': a Concurrent or the Real-Time Language?