Summary. Monolithic kernels provide a large number of abstractions (e.g. processes, files, virtual memory, interprocess communication) to applications. Microkernels push some of this functionality into user space but still provide a fixed set of abstractions and services. Providing these inextensible fixed abstractions is detrimental to applications.
The exokernel operating system architecture takes a different approach. It provides protected access to hardware and nothing else. All abstractions are implemented by library operating systems. The exokernel purely provides protected access to the unabstracted underlying hardware.
The exokernel interface governs how library operating systems get, use, and release resources. Exokernels follow the following guidelines.
Exokernels use three main techniques to ensure protected access to the underlying hardware.
There are three forms of secure bindings. First are hardware mechanism like the TLB entries or screens in which each pixel is tagged with a process. Second are software mechanisms like TLB caching or packet filters. Third is downloading and executing code using type-safe languages, interpretation, or sandboxing. Exokernels can download Application-Specific Safe Handlers (ASHes). 2. Visible resource revocation. In traditional operating systems, resource revocation is made invisible to applications. For example, when an application's page is swapped to disk, it is not notified. The exokernel makes resource revocation visible by notifying the libOS. For example, each libOS is notified when its quantum is over. This allows it do things like only store the registers it needs. 3. Abort protocol. If a libOS is misbehaving and not responding to revocation requests, the exokernel can forcibly remove allocations. Naively, it could kill the libOS. Less naively, ti can simply remove all secure bindings.
The paper also presents the Aegis exokernel and the ExOS library operating system.