Since Unix was designed with other IPC mechanisms in mind, and since software engineering principles being developed at that time warned against sharing common variables, shared memory among programs was not provided. Unlike the conventions of most minis involved in the real time marketplace, memory is not shared between processes without specific programmer intervention. All System V and many BSD-derived systems now include the shared memory operations. Due to the nature of the data structures used, C routines are required to manipulate shared memory on such systems. Since unix was never intended to perform real time operations, there has historically been little support for it.
Real time is therefore one of the few areas into which unix has made almost no inroads.
Pre-emptability is a major issue in a real time system. Unix scheduling does not provide the flexibility many real time systems need. Finally, to decrease context switching time in real time applications, critical tasks are typically locked into main memory. Many have had simple, command-intensive user interfaces. Many of the older Unix applications excelled at this as well, but for many applications users want or need a better interface.