Technical Report Number
Real-time upcalls (RTUs) are an operating systems mechanism that can be used by applications to efficiently schedule code segments (or handlers) that must execute periodically. While the mechanism was conceibed to support protocol processing with quality-of-service guarantees for networked multimedia applicatoins it is general enough to be applicable in other domains like real-time image processing. Until now real-time threads have been the only mechanism for implementing protocols in user space with QoS guarantees. The RTU mechanism avoids the implementation complexity of the thread based approach while retaining its ability to ensure real-time behavior. In addition, our design simplifies protocol code, improves performance, and can be ported to most systems. A key feature of RTU scheduling is the pre-emption scheme that exploits the iterative nature of protocol processing by alloweing an RTU to yield the CPU by returning from the invocation. This obviates the need for RTU handlers to lock shared variables tehreby eliminating system calls needed for real-time locking, and reducing unnecessary context switches. Our schedulability test for RTU scheduling improves upon existing results. Our implementation did not require changing the existing process scheduling mechanism, and has been ported to Sparc-1 and pEntium CPUs in the NetBSD kernel. Our experimental results with the UDP protocol show that the RTU facility provides QoS guarantees under all background processing loads. It also improves the useful utilization by 12% by reducing context switches by up to 35%.
Gopalakrishna, Raman and Parulkar, Guru M., "Real-time Upcalls: A Mechanism to Provide Real-time Processing Guarantees" Report Number: WUCS-95-06 (1995). All Computer Science and Engineering Research.