A Caching Model of Operating System Kernel Functionality --- Duda et al., 1994 - Main idea: define the concept of a caching model of operating system functionality. The idea is to cache the currently used objects, leaving the possibility of implementing application-specific management policies and mechanisms in application kernels running in user-mode. - micro-kernels have been slower, larger and more error-prone than desired; - they are larger because of the complications of a modern virtual memory system, the need to support many different hardware devices, and complex optimizations in communication facilities. - micro-kernels do not support domain-specific resource allocation policies any better than monolithic kernels; - adding a variety of resource management policies to the micro-kernel fails to achieve the efficiency that application-specific knowledge allows and increases the kernel size and complexity; - the Cache kernel caches active objects: address spaces, threads, scheduling and IPC. - in contrast to conventional micro-kernel design, it does not fully implement all the functionality associated with address spaces and threads; - it relies on higher-level application kernels to provide the management functions required for a complete implementation, including the loading and write-back of these objects. - application kernels control physical page selection, page replacement policy and paging I/O; - applications run above application kernels, which run on top of the supervisor-mode Cache kernel. - interactions between application kernels and Cache kernel occur to load/unload these objects, signals from the Cache kernel about missing objects, and write-back communication (object is evicted);