Kernel-mode Web servers have been implemented in the context of both production and experimental operating systems. Migration of services considered integral to a server's operation into the kernel is not a new idea. For example, most commercial operating systems include kernel-mode file servers. Delivery of static Web responses amounts to sending files on a network interface and does not require extensive request parsing. A kernel-mode Web server can fetch response data from a file system or kernel-managed Web cache. If the kernel-mode caching Web server determines that it cannot serve the request from its cache, it forwards it to a full-featured user-mode Web server.
Kernel-mode Web servers can be characterized according to the degree of their integration with the TCP/IP stack and whether responses are derived in a thread or interrupt context. Microsoft's Scalable Web Cache (SWC) [16] is tightly integrated with the Windows 2000 TCP/IP stack. By contrast, Linux's kHTTPd [17] uses socket interfaces in kernel-mode. Both SWC and kHTTPd handle response processing from kernel-mode threads. TUX [18] is another in-kernel Web server introduced by RedHat on Linux. Like kHTTPd, TUX uses a threaded model, but it offers greater features and performance. First, TUX caches objects in a pinned memory cache rather than using the file system. Second, TUX implements zero copy TCP send from this pinned memory cache and a checksum cache for network adapters without hardware support for offloading checksum computation.