Real time operating systems are designed to facilitate real time applications that have strict timing constraints. They use algorithms with statically or dynamically assigned priorities to efficiently manage processes, communication, synchronization, and interrupts within restricted resource budgets. The architecture of an ideal RTOS takes into account the delicate timing requirements, which may involve techniques like monolithic kernels, libraries, virtual machines, or microkernels. Examples of systems that require real time processing include industrial control systems and flight control systems, where tasks must be completed within strict time windows.