When dealing with time-related data streams in network protocol stacks, the problem of Quality of Service crosstalk between streams has been identified. crosstalk occurs because of contention for resources between different streams multiplexed onto a single lower-level channel. If the thread processing the channel has no notion of the component streams, it cannot apply resource guarantees to them and statistical delays are introduced into the packets of each stream. To preserve the allocated to a stream, scheduling decisions must be made at each multiplexing point.
When crosstalk occurs the performance of a given network association at the application level is unduly affected by the traffic pattern of other associations with which it is multiplexed. The solution advocated in [4, 5] is to multiplex network associations at a single layer in the protocol stack immediately adjacent to the network point of attachment. This allows scheduling decisions to apply to single associations rather than to multiplexed aggregates. While this particular line of work grew out of the use of virtual circuits in ATM networks, it can also be employed in IP networks by the use of packet filters [6, 7] and fair queueing schemes .
Analogously, application Crosstalk occurs when operating system services and physical resources are multiplexed among client applications. In addition to network protocol processing, components such as device I/O, filing systems and directory services, memory management, link-loaders, and window systems are needed by client applications. These services must provide concurrency and access control to manage system state, and so are generally implemented in server processes or within the kernel.
This means that the performance of a client is dependent not only on how it is scheduled but also on the performance of any servers it requires, including the kernel. The performance of these servers is in turn dependent on the demand for their services by other clients. Thus one client's activity can delay invocations of a service by another. This is at odds with the resource allocation policy, which should be attempting to allocate resources among applications rather than servers. We can look upon scheduling as the act of allocating the real resource of the processor. Servers introduce virtual resources which must also be allocated in a manner consistent with application quality of service.