An exokernel is an operating system architecture that gives applications direct access to hardware resources. The exokernel architecture aims to maximize performance and efficiency by minimizing the abstraction layer between applications and hardware.
While exokernels have existed as a concept since 1994, they have not yet been implemented in any major commercial products. However, proof-of-concept and prototype exokernels have been developed by the Massachusetts Institute of Technology and other prominent research institutions.
Key exokernel characteristics
Exokernels expose low-level hardware resources directly to applications, letting them choose what they need. Direct access to hardware typically improves performance because applications have lower overhead when interacting with the system.
Exokernels may also enable liberal resource multiplexing, allowing multiple applications to share hardware resources efficiently. To prevent unauthorized access to critical system resources by rogue agents or apps, exokernels also implement robust access control measures.
Disadvantages of exokernels
- App developers must manage resource allocation and protection themselves.
- App developers must implement security mechanisms. Ensuring secure access to hardware resources without the safety net of higher-level abstractions can be challenging.
- Exokernels lack standard abstractions for common operating system services, which results in a lack of consistency across applications. Unlike traditional operating systems that provide standardized system calls for tasks, exokernels leave it to application developers to implement these services.