Redian新闻
>
为什么不用Go开发操作系统?

为什么不用Go开发操作系统?

公众号新闻
出品 | OSC开源社区(ID:oschina2013)
本文整理自 GoLand 官方博客的一篇文章:《OS in Go? Why Not?》,探讨了为什么像 C 这样的编程语言在 OS 开发中占据优势,以及是否可以使用 Go 编写 OS。此外还提到了用 Go 开发操作系统的可行性、局限性,以及目前的部分成果。
操作系统 (OS) 是计算机系统的心脏和灵魂,它管理着计算机的硬件和软件资源,并为用户提供与计算机交互的方式。传统上,C 和 Assembly 等语言因其低开销和 “接近机器码” 的特性而被用于开发操作系统。
但诸如 Go 等高级语言的兴起引入了一些特性,这些特性或许可以使开发操作系统等复杂软件变得更加容易。例如,类型安全、错误处理和并发性在开发操作系统时应该是有益的。
因此,采用像 Go 这样的高级语言来开发操作系统理应是自然选择,但为什么并没有成功的案例?

操作系统由不同的组件构成,它们负责不同的功能,可以使用不同的编程语言编写。
操作系统的核心是内核 (Kernel),它负责与硬件交互 —— 几乎都是采用 C 或汇编语言编写。至于面向用户的组件(例如 GUI 应用程序),可以采用任何语言编写。
例如,Android 采用 Java 编写用户层的组件,如 GUI 框架和系统应用程序(相机、电话等)。相对应的,其内核采用 C 和汇编语言编写;底层系统组件 —— 库,则是用 C++ 编写。
C 语言 “统治” 内核的主要原因:
  • 可直接管理内存

  • 缺少抽象

  • 无需依赖运行时

  • 可移植性

Go 作为高级语言提供了许多令人满意的特性。从这方面来看,它似乎可以成为开发操作系统的绝佳选择:
  • 某些类型的错误在高级语言中出现的可能性要小得多

  • 并发性:在高级语言中处理并发更容易,因为几乎每种高级语言都内置处理并发所需的机制

  • 类型安全:防止像 C 的宽松类型强制执行

不过尽管 Go 提供了令人满意的特性,可以让操作系统开发者的工作更轻松,但它也有一些局限性。
作为一种具有垃圾回收功能的语言,Go 并不真正适合操作系统开发。使用 Go 编写内核意味着需要小心翼翼地绕过 Go 的垃圾收集。正如 Reddit 论坛中开发者提到的,鼠标滞后可能是因为中断处理程序分配了触发垃圾回收的内存。
此外,Go 还需要大量的 runtime 才能执行,这意味着它不能直接在硬件上运行。尽管 TinyGo 可以将 Go 编译为在裸机上运行,但与 C 相比,它只支持少量的架构,而 C 几乎可以在任何架构上运行。
总的来说,使用 Go 开发一个不是 “玩具性质” 的操作系统几乎是不可能。尤其是要求支持在多种架构上运行、支持不同设备(如显卡或网卡),并符合 POSIX 标准,这更是极具挑战性。
最后看一下探索用 Go 开发操作系统的案例。
Biscuit 是一个用 Go 开发的操作系统,运行在 64 位 X86 架构上。它使用经过修改的 Go 1.10 运行时实现,其中添加了更多汇编代码来处理系统调用和中断处理程序的引导和进入 / 退出。
Biscuit 为用户进程提供 POSIX 接口,支持 fork、exec 等。它实现了支持核心 POSIX 文件系统调用的文件系统。Biscuit 为用 Go 编写的 Intel PCI-Express 以太网 NIC 实现了 TCP/IP 堆栈和驱动程序。使用 POSIX 接口,Biscuit 可以在不修改源代码的情况下运行许多 Linux C 程序。
然而,Biscuit 缺少许多功能,例如调度优先级、换出页面或磁盘,以及安全功能,例如用户、访问控制列表和地址空间随机化。
相关链接:https://blog.jetbrains.com/go/2023/05/16/os-in-go-why-not/


往期推荐



GAN“泰裤辣”,DragGAN点点鼠标就能让狮子开口,未开源已破8k star
国产中文大语言模型 “天河天元” 发布,涉及各种小说、古文、百科、新闻、中医、法律等!
Build 2023亮点汇总:Windows原生支持rar格式、发布Windows Copilot...



🌟 活动推荐

2023 年 5 月 27-28 日,GOTC 2023 全球开源技术峰会将在上海张江科学会堂隆重举行。
为期 2 天的开源行业盛会,将以行业展览、主题发言、特别论坛、分论坛、快闪演讲的形式来诠释此次大会主题 ——“Open Source, Into the Future”。与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及 OSPO、汽车软件、AIGC、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。
长按识别下方二维码立即查看 GOTC 2023 详情/报名。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
有了ChatGPT,还需要操作系统吗?|CCF C³银河麒麟桌面操作系统 V10 SP1 2203 update3 更新发布如何用“商业操作系统”释放企业业务和数据能量 | 数字商业技术篇「sealos」完成2000万元的天使轮和天使+轮融资,旨在打造以kubernetes为内核的云操作系统|早起看早期微软build 大会!ChatGPT重磅植入Windows!没有GPT的操作系统都老了?国产替代正当时:我们是如何迁移到国产操作系统的?微档--周光炯美国入境档案丘陵地带的一座乡村小城镇尤瓦尔·赫拉利最新演讲:刚刚,人工智能入侵了人类文明的操作系统!深度 deepin 操作系统 20.9 正式发布:Qt 版本升级至 5.15.8银河麒麟操作系统上线复旦大学内网正版化平台大话三国252:孙权为什么不重用庞统?鲁肃为什么放庞统去投奔刘备?开源开放,打造国产高安全高可靠物联网操作系统[直播] 操作系统英雄汇憨老头吐槽手撸个自己的操作系统,NB!| 极客时间纽曼夫妇信创生态:2022年中国操作系统行业概览大学“心理干预”系统,为何越来越像“心理监视”系统?Win12 用户界面抢先看?这就是微软正测试的下代操作系统一文了解网络操作系统,除了Windows、Linux,还有你没听过的!《西線無戰事》拍出戰火浮生錄Dubbo为什么用Go重写?后 CentOS 时代,国产操作系统能否扛起大旗?苹果宣布最新操作系统:visionOS这一次,彻底拿下操作系统!!!《人类简史》作者:AI已经攻破人类文明的操作系统对话OpenCloudOS:国内操作系统社区间不是竞争,而是互补最伟大 Windows 降临,微软要用大模型彻底改变操作系统和交互ChatGPT重塑Windows!微软王炸更新:操作系统全面接入,Bing也能用插件了国产替代正当时:我们是如何迁移到国产操作系统的?|直播预约对话 OpenCloudOS 社区:如何促进操作系统开源生态繁荣?我为什么不用GPT苹果前高管不看好新头显/特斯拉发布首支广告/华为鸿蒙成中国第三大手机操作系统AI操作系统龙头透露大消息!这些高增长低估值股热度爆棚
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。