We know that some embedded systems run on the embedded operating systems when there are more complex system and lot more resources that need to manage efficiently. Without an embedded operating system, we can not control the hardware easily. So we need some embedded operating system to control the overall machine.
An embedded operating system is simply an operating system designed for embedded systems. The main characteristics of the embedded operating system are resource efficiency and reliability. The existence of embedded operating system comes into existence because we have a very limited amount of hardware like RAM, ROM, timer-counters and other on-chip peripherals.
So, in this case, we need some operating system that can manage all the hardware resource by leaving some unimportant features. Embedded systems generally have Real Time Operating System(RTOS) to perform the task in a given time frame.
The hardware in the embedded systems depends on the application need. So some time for getting the best results we need to customize the embedded operating system.
As we know the assembly language is more near to hardware and code are written in assembly perform better. So sometime to get the better result and speed some code or modules are programmed in assembly language. To get the response from the system.
The embedded operating systems are generally written in the c language because c language can interact better with the hardware.
The operating system that you have used in your laptop and desktop computing. They are totally designed to use that single machine. Even it has a network capability but its main purpose is to take care of all the hardware resources of the existing system. This is called stand-alone operating system.
This is the very basic type of operating system that performs only a single function at a time. This is still not clear that such a simple operating system could be an embedded operating system. Because generally operating systems perform multiple tasks to manage the system resource.
This type of operating system can perform multiple tasks at a time. The multiple tasks can run simultaneously. The operating system can keep track of each task and can switch between it without losing the information.
In multitasking actually, the overall time of a problem is divided into small tasks. Each divided subtask gets the CPU time based on a fixed interval.
Only current executing process get the entire CPU time. The remaining task executing in a virtual environment. Where they get a register, program counter(PC), stack memory and a stack pointer. The task is executing in a virtual environment. This all goes in runtime. When a higher priority task is coming to the currently executing task is saved into memory.
In this type of operating system, a rate monotonic priority algorithm is used in real-time operating systems(RTOS). It is a priority-based scheduling algorithm. In this operating system, the scheduling is preemptive. Means the task gets interrupted or suspended by another task with a short period.
The execution time of the task is set in such a way that all task gets an equal amount of execution time or at least the task get the chance to execute when it is expected to run. This type of operating system always gives the shorter task a higher priority.
In this type of operating system, the currently executing task may be interrupted by the other higher priority task and can be resumed later.
The system has a scheduler that receives the interrupt that is received from the external calls. Once the interrupt is received scheduler pause the running task and start the higher priority task. The control of the CPU passes from one task to another. This is called preemption.
The main concept here is to manage the higher priority task that is more important and critical.
As we know that real-time embedded systems have a time constrained to execute the task. This time is called a deadline. The soft-realtime system may vary the deadline. But the hard real-time system must complete the task in a given time frame.
The example of the soft-realtime system could be our day to day lifer products like washing machine, microwave oven, printer and fax machine. Let’s suppose we are cooking something. We put some item to cook. We set a time and temperature. As soon as we press the start button of the oven it takes some random time to start to suppose 15sec. Even after a 15sec delay, it cooked perfectly, nothing went wrong in cooking. It missed the time by approx 15sec. This is generally happening in the soft real-time system.
There is some application where the systems should act in a given time otherwise some went wrong or action is not acceptable.
Like in a traffic light controller, the timing of different signals should be running in a mentioned time in the program. The variation in time is not acceptable because something wrong may happen.
In essence, the deadline is fixed according to the system application. And to make the system time critical we pause other less important tasks so the main priority task can execute on time.
A system is called reactive if it acts on certain input by the user in the form of switch press or by some sensor. For example, a motion sensor security sensor triggers the alarm when someone comes in the rang of the sensor. Here system is reacting based on the sensor input.
As we know that embedded systems are designed as per the application requirement. And according to the hardware we need to customize the embedded operating system. So the operating system should be designed in such a way that an embedded developer can configure the operating system as per the need.
In some operating system facility of conditional compilation is available. Where the developer compiles the only required module from the overall modules. And it is best suitable if we are using the object-oriented approach.
There is no generalise hardware that is suitable or adjustable for all operating system versions.
The embedded operating system provides the use of interrupts to give them more control over the peripheral. The general purpose operating system does not provide such kind of facility to the user directly.
In the embedded system we need more control on the individual hardware so there is the demand of the interrupts. The interrupt also has the priority. And according to that priority, the task is serviced by the CPU.
As the embedded systems have small CPU with limited processing power. It should be customised perfectly so that it can execute fast.
It the embedded system developer task to understand the existing hardware and remove the unwanted software modules at the time of compilation. This will give a lightweight operating system results a faster execution speed.
The size is everytime considered in an embedded system. Because it has very limited resources like RAM, ROM and CPU power. So keep the embedded operating system small as possible to fit into given memory space.
Once the embedded operating system is compiled it can be used in a variety of application. The list is for mobile using the embedded operating system.
Yes, Android is an embedded operating system. It has several advantages over normal embedded operating systems like royalty-free, license free, stable kernel and a huge library of open source code and device drivers.
Because of all these advantages, it is favourable by the developer and manufacturer.