Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
stardust-oxide:基于Rust的开源迷你操作系统Unikernel
22-03-10
banq
Stardust Oxide 是一个用 Rust 语言编写的单内核、单地址空间 Xen 半虚拟化操作系统Unikernel。
它支持动态内存分配、协作多任务处理的
异步
/等待语法、虚拟化网络和高性能控制台驱动程序。
Xen 功能有类型和内存安全的接口,例如共享内存授权表、XenStore 和 XenBus。
它在不到 3 毫秒的时间内启动,压缩镜像大小为 61KB(未压缩 152KB),包括网络堆栈。
该项目的结构是一个包含与 C Xen API 的不安全 Rust 绑定的库,一个具有与不安全绑定的安全 Rust 接口的库,然后是 Stardust Oxide 库。这允许其他操作系统开发根据需要重新使用各个包。
特点:
支持
日志
的控制台驱动程序
页框映射和表生成(使用
buddy_system_allocator
作为全局分配器)
授予表创建/销毁
XenStore 界面
XenBus 接口
简单的异步执行器
将smoltcp
用于 TCP/IP 堆栈的网络驱动程序
Unikernel是精简专属的库操作系统(LibraryOS),它能够使用高级语言编译并直接运行在商用云平台虚拟机管理程序之上。相比于容器技术它们有很多的优点,不仅仅是超快的启动时间和更小的攻击面。
此项目并非真正为任何生产而设计,但对操作系统研究很有用,迷你操作系统代码库不是最整洁的,但它是编写 unikernel 时为数不多的参考资料之一,因此希望 Rust 中的替代方案会有所帮助。
作者的最大的遗憾/收获是:不相信 2006 年的教科书,当时它说半虚拟化优于硬件虚拟化;这是在硬件加速虚拟化(例如英特尔 VT-d)存在之前,现在半虚拟化比编写裸机操作系统要慢得多且可移植性较差。
在现代环境中,半虚拟化通常是指管理程序使用有效的虚拟化感知接口而不是主机与主机通信(例如,用于虚拟磁盘访问),例如,模拟物理 SATA 硬盘。
因此,半虚拟化与 VT-d 等硬件加速虚拟化一起使用。
在这种情况下,半虚拟化确实可以显着提高速度。
rust 中的另一个 unikernel 是
RustyHermit
1
RUST语言
docker容器镜像
DevOps