Lazy Receive Processing (LRP)[5], proposed by Druschel and Banga, solves the problem of inaccurate accounting and interrupt live-lock due to network processing in interrupt context by identifying the process that caused the traffic and doing the network processing in the context of that process. In LRP, network processing is integrated into the system's global resource management. Resources spent in processing the network traffic are associated with and charged to the process that caused the traffic. Incoming network traffic is processed at the scheduling priority of the process that receive the traffic and excess traffic is discarded early. Later on, the concept of resource containers[6], proposed by Banga, Druschel and Mogul, was introduced as a means of resource management in large-scale server systems. A prototype implementation was reported for Digital UNIX. A FreeBSD implementation of it is available in [7].
Goyal, Guo and Vin [8] propose an operating system framework that can be used to support a variety of hard and soft real-time applications in the system. This framework allows hierarchical partitioning of CPU bandwidth: the OS partitions the CPU bandwidth among various application classes, and each application class, in turn, partitions its allocation (potentially using a different scheduling algorithm) among its sub-classes or applications. They used Start-time Fair Queuing (SFQ) algorithm for such a partitioning.
SMART[4], proposed by Nieh and Lam, a Scheduler for Multimedia And Real-Time applications, supports both real time and conventional computations and provides flexible and accurate control over sharing of processor time. SMART is able to satisfy real-time constraints in an efficient manner and provides proportional sharing across all real-time and conventional tasks. When not all real-time constraints are met, SMART satisfies each real time task's proportional share, and adjusts its execution rate dynamically. SMART achieves this by combining the concepts of proportional sharing, latency tolerance, and best-effort real-time decision making. SMART uses an algorithm based on weighted fair queueing (WFQ) to implement weighted fairness. The concept of virtual time, biased with notion of latency tolerance, is used to measure the resource usage of the applications. The biased virtual time is then used as priority in the best-effort scheduling algorithm so as to satisfy as many real-time requirements as possible.
Resource Kernel[9], proposed by Rajkumar, Juvva, Molano and Oikawa, is another approach to real-time scheduling. A resource kernel is one which provides timely, guaranteed and enforced access to physical resources for applications. With resource kernel, an application can request the reservation of a certain amount of a resource, and the kernel can guarantee that the requested amount is available to the application. A reservation can be time-multiplexed or dedicated. Time-multiplexed reservation is represented by parameters C, D & T, where T represents recurrence period, C represents processing time required within T, and D is the deadline within which the C units of processing time must be available within T. Oikawa et al[10] have an implementation of resource kernel for Linux.
RTLinux (RealTime Linux)[11] is an extension to Linux that handles time-critical tasks. In RTLinux, a small hard-realtime kernel and standard Linux share one or more processors, so that the system can be used for applications like data acquisition, control, and robotics while still serving as a standard Linux workstation.
KURT (KU Real-Time Linux)[12] is another approach to support real-time in Linux. KURT Linux allows for explicit scheduling of any real-time events rather than just processes. It has two modes of operation, the normal mode and the real-time mode. In normal mode, the system acts as a generic Linux system. When the kernel is running in real-time mode, it only executes real-time processes.