Tasks may wait on several events simultanously. If a higher priority task's event is set when that tasks is already waiting for it, the higher priority task is guaranteed to be run within a deterministic amount of time. SVR3's signals are a poor substitute, as signal occurance is not recognized until the kernel's regular rescheduling checks. Simultanous pending on kernel objects of different types is not possible. Efficient message passing calls are therefore provided.
Messages arrive deterministically in prioritized order.
Under SVR3, inter-process message passing is an afterthought, performed either through bulky Berkley sockets, or though the file system, such as pipes. In addition to the features stated above, RTOSes have other features which are not typical of non-realtime OSes. An RTOS is typically small, since it is often used in an embedded application, such as a cellular phone, VCR or car. It is also fast, in addition to being deterministic. Mutual exclusions mechanisms, such as semaphores and monitors are also present, given that data objects are often shared in common memory.