Flexible Event Delivery for Kernel Extensions in ELinux
MetadataShow full item record
Many applications rely on the kernel's ability specialize and extend its functionality in order to achieve high performance and meet application-specif QoS requirements. However, general-urpose operating systems lack sufficient support for flexible and scalable event-based communication between user-level applications and kernel-level extensions. This presents problems especially for real-time applications, which typically require notification of events and response to events in a timely manner. This paper introduces ECalls, a lightweight, bidirectional user/kernel event delivery facility. ECalls not only supports the timely delivery of events, but it also reduces the cost and frequency of user/kernel boundary crossings. ECalls is a communication tool that allows (a) kernel extensions to register their offered services adn (b) applications to register their interest in these services. Using ECalls, applications ause lightweight system calls to generate events, while kernel extensions raise realtime signals or invoke handler functions (residing in either user of kernel space), or they may use kernel threads to handle events on behalf of applications. ECalls can also influence the CPU scheduler such that a process with pending events is given preference over aother processes. To demonstrate their utility, this paper implements an I/O event delivery mechanism using ECalls. This mechanism is shown to improve the performance of two applications: a web server and a distributed video player.