Typical RTOS hardware requirements are: RAM more than one kilobyte and a RISC processor operating at a frequency of a few megahertz and higher. In contrast to full-functional operating systems, an RTOS is a source code or library that is statically linked together with the developed software and forms a monolithic image of the firmware. This approach greatly simplifies the user isolation mechanism and the system code (there is no isolation in some RTOS), as well as optimizes the size of the firmware by deleting an unused code at the compilation stage.
The second important RTOS feature is determinism due to the computational complexity O(1) of any system call, which means that there is no dependence of time spent on processing the system call on the internal state of the system. This feature results in part from the ability of a real-time operating system to work on systems with minimum RAM and a low speed CPU.
Thus any algorithm implemented on top of an RTOS will be performed on a time scale, which is a linear function of the real-time clock rate (of course, provided the CPU clock frequency remains unchanged). This feature helps implement RTOS-based systems that control real-time processes: control of electric motors; signal capture, processing and transmission; control of technical processes, and more.
More complex operating systems (such as Linux or Windows) do not have this feature, so even with an operating system in place, real-time tasks are often performed in the RTOS on a dedicated controller or processor core.
In addition to low-level system calls which provide multitasking and working with basic hardware resources (timer, RAM), most RTOSs also provide higher-level services that help implement a graphical user interface (GUI), work with a large number of peripherals, create file systems, implement a variety of network protocols (TCP / IP, PPPoE, FTP, etc.), and much more.