There are many techniques to write a good embedded software without the use of any Embedded Operating System or RTOS. The simple and appropriate technique used for system development may give the most desired results.
The simple sequential Embedded Coding Technique may loose data or produce incorrect results in the system where, the time of every action is the main constraint, like: the time of receiving of data, the processing or computation time of incoming data and the time within a respective action taken.
The Real Time Operating Systems is recommended for such kind of complex system. The correctness of timing constraints defines two types of real-time systems: SOFT and HARD. In a SOFT real-time system, tasks are performed by the system as fast as possible, but the tasks don't have to finish by specific times. In HARD real-time systems, tasks have to be performed not only correctly but on time. Most real-time systems have a combination of SOFT and HARD requirements.
Consider a system requires to collect the data from pressure sensor and turn the the pressure valve with specified interval of time. Similarly, it has to take water levels of water-tank and turn ON/OFF the water-motor. These sequence of operation can achieved with simple Embedded Programming, as there is no critical decisions taken by the system.
A system has to manage number of sensors and their controls and the system has to store and process the incoming data. On the processed data it has to take a decision about the action on the controls of sensor. The sensors are generating interrupts on the specific conditions, to which the system has to respond by sending message or control signal. If a simple sequential programming technique is used for such system, there are chances of data lose or incorrect result. To achieve the appropriate results, use of Real Time Operating System is recommended.