0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

OSC开源社区 来源:OSC开源社区 2023-05-26 15:09 次阅读

本文整理自 GoLand 官方博客的一篇文章:《OS in Go? Why Not?》,探讨了为什么像 C 这样的编程语言在 OS 开发中占据优势,以及是否可以使用 Go 编写 OS。此外还提到了用 Go 开发操作系统的可行性、局限性,以及目前的部分成果。

1d78b518-fb6b-11ed-90ce-dac502259ad0.jpg

操作系统 (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 运行时实现,其中添加了更多汇编代码来处理系统调用和中断处理程序的引导和进入 / 退出。

1d800bd8-fb6b-11ed-90ce-dac502259ad0.png

Biscuit 为用户进程提供 POSIX 接口,支持 fork、exec 等。它实现了支持核心 POSIX 文件系统调用的文件系统。Biscuit 为用 Go 编写的 Intel PCI-Express 以太网 NIC 实现了 TCP/IP 堆栈和驱动程序。使用 POSIX 接口,Biscuit 可以在不修改源代码的情况下运行许多 Linux C 程序。 然而,Biscuit 缺少许多功能,例如调度优先级、换出页面或磁盘,以及安全功能,例如用户、访问控制列表和地址空间随机化。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121877
  • Go
    Go
    +关注

    关注

    0

    文章

    40

    浏览量

    12178
  • 编程语言
    +关注

    关注

    9

    文章

    1878

    浏览量

    33108

原文标题:为什么不用Go开发操作系统?

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是QNX操作系统

    是为了读音更像UNIX电气和电子工程师协会(IEEE)最初开发POSIX 标准,是为了提高UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于UNIX.许多其它的操作系统,例如DEC
    发表于 06-07 14:16

    Linux与其他操作系统的区别

    ,而其他操作系统都是封闭的系统,需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问Internet时,会发现几乎所有可用的自由软件
    发表于 09-13 10:12

    ARM CPU操作系统

    。更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用,使应用程序员面向操作系统开发应用软件,并易于在不同的ARM核的嵌入式处理器上移植。 嵌入式操作系统都具有一定的实时性,易于裁剪
    发表于 07-04 07:03

    开发环境介绍主机操作系统

    开发环境介绍主机操作系统:Ubuntu14.04 64位目标平台:IMX.6Q ARM Cortex-A9内核交叉工具链:arm-poky-linux-gnueabi,gcc4.9.1Go版本
    发表于 07-16 06:54

    go语言开发的相关资料分享

    的单片机控制就能完成的简单的功能,普遍带有更高级的操作系统,比如linux和Android.而Android上开发可以使用高级语言java,或者如reaect native的html5混合开发。但是嵌入式lin...
    发表于 11-05 08:41

    请问一下ARM芯片可以不用操作系统而直接开发吗?

    请问一下ARM芯片可以不用操作系统而直接开发吗?求大神解答
    发表于 06-06 16:01

    Linux操作系统原理及应用

    Linux操作系统原理及应用 1.1  操作系统的地位 1.2  操作系统的功能 1.3  操作系统的发展过程 1.4 
    发表于 04-28 14:53 0次下载

    什么是VxWorks操作系统

    VxWorksVxWorks操作系统是美国WindRiver公司于1983年设计开发的一种实时操作系统。VxWorks拥有良好的持续发展能力、高性能的内核以及良好的用户开发环境,在实
    发表于 06-17 00:33 3647次阅读

    iPhone的操作系统详解

    iPhone的操作系统详解 iPhone OS 或 OS X iphone是由苹果公司为iPhone开发操作系统。 iPhone OS包括了操作系统和支持应用程序在iphone和
    发表于 02-03 10:01 1324次阅读

    RTOS操作系统

    RTOS操作系统RTOS操作系统RTOS操作系统RTOS操作系统RTOS操作系统
    发表于 12-28 15:30 0次下载

    Rust开发操作系统教程之如何自制一个操作系统

    正如标题,这篇文章是关于如何用Rust开发一个船新的操作系统,而这个操作系统只会打印一句话: Hello World 在这之前,我们需要了解有关计算机底层的基础知识,包括IO、接口、网络底层等等
    发表于 06-05 17:51 0次下载
    Rust<b class='flag-5'>开发</b><b class='flag-5'>操作系统</b>教程之如何自制一个<b class='flag-5'>操作系统</b>

    谷歌正式推出Android 10 Go操作系统,应用程序启动速度提高10%

    去年,谷歌推出安卓9 Pie的同时,还推出了Android Go版,今天谷歌详细介绍了其最新版本的Android 10 Go操作系统,适用于内存不足1.5GB的入门级智能手机。Android 10(
    的头像 发表于 09-26 14:58 2187次阅读

    谷歌开发的Fuchsia OS操作系统已正式进入测试阶段

    。 根据最新的消息,谷歌已经开发了很长时间的Fuchsia OS操作系统终于要进入“狗粮”测试阶段。 所谓“狗粮”阶段就是是让开发者亲自安装使用操作系统,通过测试找到缺点和不足。
    发表于 03-02 08:39 1016次阅读

    嵌入式操作系统

    2.2 实时操作系统的评价指标三、基于Linux的嵌入式操作系统3.1 ARMLinux简介3.2 uCLinux简介四、嵌入式操作系统设计方法4.1 嵌入式系统开发特点4.2 嵌入式
    发表于 11-03 18:36 46次下载
    嵌入式<b class='flag-5'>操作系统</b>

    Linux操作系统搭建51单片机开发环境(国产桌面操作系统deepin)

    1.概述操作系统作为计算机系统的掌上明珠,一直是我们国家极力想要掌握的核心技术之一。随着这几年国际关系动荡,地缘政治风云突变的缘故,开发和应用国产操作系统热情空前高涨。尤其基于 Lin
    发表于 11-13 11:51 23次下载
    Linux<b class='flag-5'>操作系统</b>搭建51单片机<b class='flag-5'>开发</b>环境(国产桌面<b class='flag-5'>操作系统</b>deepin)