Efficient software-based fault isolation
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Exokernel: an operating system architecture for application-level resource management
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Extensibility safety and performance in the SPIN operating system
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
VCODE: a retargetable, extensible, very fast dynamic code generation system
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Dealing with disaster: surviving misbehaved kernel extensions
OSDI '96 Proceedings of the second USENIX symposium on Operating systems design and implementation
Adaptation: the key to mobile I/O
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
ASHs: application-specific handlers for high-performance messaging
IEEE/ACM Transactions on Networking (TON)
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Fine-grained dynamic instrumentation of commodity operating system kernels
OSDI '99 Proceedings of the third symposium on Operating systems design and implementation
Proceedings of the seventeenth ACM symposium on Operating systems principles
A middleware toolkit for client-initiated service specialization
ACM SIGOPS Operating Systems Review
An infrastructure for application-specific customization
EW 6 Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs
Stream Handlers: Application-Specific Message Services on Attached Network Processors
HOTI '02 Proceedings of the 10th Symposium on High Performance Interconnects HOT Interconnects
Active Streams-An Approach to Adaptive Distributed Systems
HOTOS '01 Proceedings of the Eighth Workshop on Hot Topics in Operating Systems
Xen and the art of virtualization
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Denali: a scalable isolation kernel
EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
A comparison of OS extension technologies
ATEC '96 Proceedings of the 1996 annual conference on USENIX Annual Technical Conference
A survey of active network research
IEEE Communications Magazine
KStreams: kernel support for efficient data streaming in proxy servers
NOSSDAV '05 Proceedings of the international workshop on Network and operating systems support for digital audio and video
Flexible cross-domain event delivery for quality-managed multimedia applications
ACM Transactions on Multimedia Computing, Communications, and Applications (TOMCCAP)
Just in time: adding value to the IO pipelines of high performance applications with JITStaging
Proceedings of the 20th international symposium on High performance distributed computing
Hi-index | 0.00 |
This paper presents kernel plugins, a framework for dynamic kernel specialization inspired by ideas borrowed from virtualization research. Plugins can be created and updated inexpensively on-the-fly and they can execute arbitrary user-supplied functions such that neither safety nor performance are compromised. Three key techniques are used to implement kernel plugins: (1) hardware fault isolation, (2) dynamic code generation, and (3) dynamic linking. Hardware fault isolation protects kernel-level services from plugin misbehavior, dynamic code generation enables rapid online creation of arbitrary plugins, and dynamic linking governs the kernel/plugin interface. We discuss the design and implementation of the kernel plugin facility, as well as its advantages and shortcomings. Its use is demonstrated by a range of micro-and macro-benchmarks and a real-life application featuring plugins that dynamically transcode images served by a high-performance kernel web server. Benefits realized from plugins can be both qualitative (adapting services to clients' needs), and quantitative (improving performance through co-location of application plugin code with kernel services). Plugins are implemented in GNU/Linux on the Intel x86 platform. Reported performance results include plugin upcalls in 0.45-0.62 µS, dynamic code generation in 4 mS, and linking/unlinking in 3.1/1.6 µS for an image grayscaling plugin - a dynamically code generated 66-line function written in a subset of C. All results are measured on an 866 MHz Pentium III.