我们提出了 LibrettOS,这是一种融合两种范式的操作系统设计,可同时解决隔离、性能、兼容性、故障可恢复性和运行时升级等问题。LibrettOS 充当以隔离方式运行服务器的微内核操作系统。为了获得更好的性能,LibrettOS 还可以充当库操作系统,选定的应用程序被授予对存储和网络等虚拟硬件资源的独占访问权限。此外,应用程序可以在运行时在两种操作系统模式之间切换而不会中断。LibrettOS 具有独特的优势,即两种范式无缝共存于同一操作系统中,使用户能够同时利用各自的优势(即更高的隔离性、高性能)。系统代码(例如设备驱动程序、网络堆栈和文件系统)在两种模式下保持相同,从而实现动态模式切换并降低开发和维护成本。为了说明这些设计原则,我们使用 rump 内核实现了 LibrettOS 的原型,使我们能够重用现有的、强化的 NetBSD 设备驱动程序和与 POSIX/BSD 兼容的大型应用程序生态系统。我们使用硬件 (VM) 虚拟化来将不同的 rump 内核实例彼此强隔离。由于原始的 rumprun 单核内核针对的是单处理器系统的更简单模型,因此我们对其进行了重新设计以支持多核系统。与 DPDK 等内核旁路库不同,应用程序无需修改即可从直接硬件访问中受益。LibrettOS 还支持通过我们开发的网络服务器进行间接访问。TCP/IP 堆栈的实例始终直接在应用程序的地址空间内运行。与原始的 rumprun 或单片操作系统不同,即使
我们提出了 LibrettOS,这是一种融合两种范式的操作系统设计,可同时解决隔离、性能、兼容性、故障可恢复性和运行时升级等问题。LibrettOS 充当以隔离方式运行服务器的微内核操作系统。当为了获得更好的性能,选定的应用程序被授予对存储和网络等虚拟硬件资源的独占访问权限时,LibrettOS 还可以充当库操作系统。此外,应用程序可以在运行时在两种操作系统模式之间切换而不会中断。LibrettOS 具有独特的优势,即两种范式无缝共存于同一操作系统中,使用户能够同时利用各自的优势(即更高的隔离性、更高的性能)。系统代码(例如设备驱动程序、网络堆栈和文件系统)在两种模式下保持相同,从而实现动态模式切换并降低开发和维护成本。为了说明这些设计原则,我们使用 rump 内核实现了 LibrettOS 的原型,使我们能够重用现有的、强化的 NetBSD 设备驱动程序和大量兼容 POSIX/BSD 的应用程序。我们使用硬件 (VM) 虚拟化将不同的 rump 内核实例彼此强隔离。由于原始的 rumprun 单核内核针对的是单处理器系统的更简单的模型,因此我们对其进行了重新设计以支持多核系统。与 DPDK 等内核旁路库不同,应用程序无需修改即可从直接硬件访问中受益。LibrettOS 还支持通过我们开发的网络服务器进行间接访问。TCP/IP 堆栈的实例始终直接在应用程序的地址空间内运行。与原始的 rumprun 或单片操作系统不同,即使网络组件发生故障或需要升级,应用程序也不会中断。最后,为了有效利用硬件资源,应用程序可以根据运行时的 I/O 负载在间接和直接模式之间动态切换。我们评估了 10GbE 的 LibrettOS 和