百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
E

eggos

> 编程语言
开源

在 x86 光核上运行的 Go unikernel

2.3K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

在 x86 光核上运行的 Go unikernel

在 x86 光核上运行的 Go unikernel 在 x86 纯硬件上运行 Go 应用程序,完全使用 Go 编写(仅少量的 C 代码和一些汇编代码),支持 Go 的大部分功能(如 GC、goroutine)和标准库,还配备了一个网络栈,可以运行大多数基于 `net` 的库。 整个内核是一个在 ring0 上运行的 Go 应用程序。没有进程和进程同步原语,只有协程和通道。没有 elf 加载器,但有一个 JavaScript 解释器,可以运行 js 脚本文件,稍后还将添加一个 WASM 解释器,用于运行 WASM 文件。 # 背景

Go 的运行时提供了一些基本的操作系统抽象。Goroutine 对应于进程,而 channel 对应于进程间通信。此外,Go 还具有自己的虚拟内存管理,因此在裸机上运行 Go 程序的想法就此诞生。

事实证明,Go具有操纵硬件资源的能力,这要归功于Go可控的内存布局、无需虚拟机即可直接翻译硬件指令,以及类似C的语法。这些都使Go能够编写在裸机上运行的程序。然而,也存在一些挑战。Go在执行协程调度和内存GC时需要堆叠许多指令,这在一些无法递归的地方带来了麻烦,例如中断处理和系统调用。

总的来说,用 Go 编写内核是一段非常有趣的经历。一方面,它让我深入了解了 Go 的运行时。另一方面,它还提供了一个在裸机上使用 C 语言以外的编程语言来编写操作系统内核的尝试。

中文说明

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Gogogolangkernelnetstack

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言