arXivDaily arXiv每日学术速递 周一至周五更新
arXiv周末暂无论文更新,休息一下吧,周末愉快~~
arXiv 1905.02529cs.PLcs.OS
收藏

通过函子驱动的开发在大范围内编程单内核

Programming Unikernels in the Large via Functor Driven Development

Gabriel Radanne, Thomas Gazagnaire, Anil Madhavapeddy, Jeremy Yallop, Richard Mortier, Hannes Mehnert, Mindy Preston, David Scott

摘要:

将应用程序编译为unikernels允许它们针对不同的执行环境进行调整。对单一操作系统的依赖被提供特定服务的库的链接所取代。在实践中这样做揭示了一个主要的障碍:跨异构执行目标管理配置矩阵。一个实际的单内核应用程序依赖于数百个库,每个库可能对不同的目标执行平台提出不同的要求(例如,加密加速)。我们提出了一个模块化的方法来构建大规模的代码库,干净地分离配置,应用程序和操作系统逻辑。我们的实现是建立在\mirage的unikernel框架,使用\ocaml语言的强大的抽象和元编程设施。利用模块,我们可以独立地构建许多组件,通过一组标准化签名实现松散耦合。组件可以由其他组件参数化和组合。我们的方法占状态,依赖排序和错误管理,我们多年来的使用已经证明了显着的效率优势,利用编译器功能,如全局链接时优化配置过程中。我们描述了我们的应用程序的架构和经验,通过我们的方法的一些实际应用,并讨论如何在\mirage库开发可以促进采用其他unikernel框架和程序设计语言。

英文摘要:

Compiling applications as unikernels allows them to be tailored to diverse execution environments. Dependency on a monolithic operating system is replaced with linkage against libraries that provide specific services. Doing so in practice has revealed a major barrier: managing the configuration matrix across heterogenous execution targets. A realistic unikernel application depends on hundreds of libraries, each of which may place different demands on the different target execution platforms (e.g.,~cryptographic acceleration). We propose a modular approach to structuring large scale codebases that cleanly separates configuration, application and operating system logic. Our implementation is built on the \mirage unikernel framework, using the \ocaml language's powerful abstraction and metaprogramming facilities. Leveraging modules allows us to build many components independently, with only loose coupling through a set of standardised signatures. Components can be parameterized by other components and composed. Our approach accounts for state, dependency ordering, and error management, and our usage over the years has demonstrated significant efficiency benefits by leveraging compiler features such as global link-time optimisation during the configuration process. We describe our application architecture and experiences via some practical applications of our approach, and discuss how library development in \mirage can facilitate adoption in other unikernel frameworks and programming languages.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑