OSes which implement the segmented architecture are more predictable and can deal with higher interrupt rates compared to the unified architecture. Similarly, the System Management Mode on x86 compatible Hardware can take a lot of time before it returns control to the operating system. Memory allocation Memory allocation is more critical in a real-time operating system than in other operating systems. First, for stability there cannot be memory leaks (memory that is allocated but not freed after use). The device should work indefinitely, without ever needing a reboot. For this reason, dynamic memory allocation is frowned upon. Whenever possible, all required memory allocation is specified statically at compile time. Another reason to avoid dynamic memory allocation is memory fragmentation. With frequent allocation and releasing of small chunks of memory, a situation may occur where available memory is divided into several sections and the RTOS cannot allocate a large enough continuous block of memory, although there is enough free memory. Secondly, speed of allocation is important. A standard memory allocation scheme scans a linked list of indeterminate length to find a suitable free memory block, which is unacceptable in an RTOS since memory allocation has to occur within a certain amount of time. Because mechanical disks have much longer and more unpredictable response times, swapping to disk files is not used for the same reasons as RAM allocation discussed above. The simple fixed-size-blocks algorithm works quite well for simple embedded systems because of its low overhead. See also Adaptive Partition Scheduler Comparison of real-time operating systems Data General RDOS DO-178B Earliest deadline first scheduling Firmware FreeRTOS Interruptible operating system Least slack time scheduling OSEK POSIX Rate-monotonic scheduling Robot Operating System SCADA Synchronous programming language Time-triggered system Time-utility function References Operating systems Real-time computing