At design time, modern operating systems are locked in a specific safety and isolation strategy that mixes one or more hardware/software protection mechanisms (e.g. user/kernel separation); revisiting these choices after deployment requires a major refactoring effort. This rigid approach shows its limits given the wide variety of modern applications' safety/performance requirements, when new hardware isolation mechanisms are rolled out, or when existing ones break. We present FlexOS, a novel OS allowing users to easily specialize the safety and isolation strategy of an OS at compilation/deployment time instead of design time. This modular LibOS is composed of fine-grained components that can be isolated via a range of hardware protection mechanisms with various data sharing strategies and additional software hardening. The OS ships with an exploration technique helping the user navigate the vast safety/performance design space it unlocks. We implement a prototype of the system and demonstrate, for several applications (Redis/Nginx/SQLite), FlexOS' vast configuration space as well as the efficiency of the exploration technique: we evaluate 80 FlexOS configurations for Redis and show how that space can be probabilistically subset to the 5 safest ones under a given performance budget. We also show that, under equivalent configurations, FlexOS performs similarly or better than several baselines/competitors.
翻译:设计时,现代操作系统被锁定在特定的安全和隔离战略中,这种战略混合了一个或多个硬件/软件保护机制(例如用户/内核分离);在部署后重新审视这些选择要求做出重大再考虑努力。这种僵硬的方法显示了其局限性,因为现代应用的安全/性能要求种类繁多,新的硬件隔离机制已经推出,或现有安全/性能要求已经破损。我们提出了FlexOS,这是一个新的OS,用户可以在编译/部署时间而不是设计时间很容易地专门设计OS的安全和隔离战略。这个模块式LibOS由精细精细的部件组成,可以通过一系列硬件保护机制与各种数据共享战略和更多软件更加坚固地分离。具有探索技术的OS船舶帮助用户浏览它解锁的庞大的安全/性能设计空间。我们实施了一个系统的原型,为若干应用程序(Redis/Nginx/SQLite)、FlexOS的庞大配置空间以及勘探技术的效率演示:我们为Redis评估了80个FlexOS配置的精细微组合,并显示空间在类似性预算下如何以更稳定的方式进行。