Prior to discussing details on the SYS/BIOS, a review of basic real time operating systems (RTOS) will be reviewed. General operating systems are fairly familiar to most people. An OS provides a set of low level and middleware services. This includes operations like booting up a computer, handling basic I/O, allowing multiple programs to run concurrently, handling how memory and disk space is allocated for the different programs that are running, and allowing more sophisticated I/O to occur through communication stacks such as USB and Ethernet. An RTOS is similar to this, but is tailored for real time embedded systems. Because real time systems tend to have very demanding requirements for responding to interrupts, the RTOS does too. In addition to fast response, it can also be very important that the response time be consistent and deterministic and not vary from frame to frame. Very often, embedded developers start using an RTOS because their systems are getting complex and need to become multithreaded, so the RTOS needs to offer a robust set of services that enable this. Similar to a regular OS, memory management can also be a critical function, but there will probably be more vigorous requirements to allow for low latencies when allocating and deallocating memory, and to offer ways to avoid memory fragmentation, which can be a critical design aspect for embedded systems. File systems can also be needed for embedded systems, particularly if the system is using a hard drive or, more commonly these days, some kind of flash drive.