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

    文章

    6847

    浏览量

    123420
  • Go
    Go
    +关注

    关注

    0

    文章

    43

    浏览量

    12262
  • 编程语言
    +关注

    关注

    10

    文章

    1947

    浏览量

    34807

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

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

收藏 人收藏

    评论

    相关推荐

    实时操作系统和分时操作系统的区别

    操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统,分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统
    发表于 11-14 17:39 1.3w次阅读

    如何选择嵌入式系统操作系统操作系统特征

    嵌入式系统开发人员目前拥有广泛的操作系统。当然,最直接的操作系统就是没有操作系统!但是,当今的许多系统都是复杂的连接
    的头像 发表于 09-07 11:51 1984次阅读

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

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

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

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

    Linux操作系统原理及应用

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

    linux操作系统的安全性

    linux操作系统的安全性 计算机系统安全性的内涵 操作系统的安全性功能 操作系统的安全机制 安全操作系统
    发表于 04-28 15:05 0次下载

    什么是VxWorks操作系统

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

    iPhone的操作系统详解

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

    RTOS操作系统

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

    谷歌开发操作系统Fuchsia

    据消息报道,谷歌正在悄然开发的手机和平板电脑操作系统Fuchsia可能会在5年内取代Android和Chrome OS。
    的头像 发表于 07-22 09:43 3217次阅读

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

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

    嵌入式操作系统

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

    裸机开发和带操作系统开发的区别

    1.概述所谓裸机就是执行单任务的单片机,对应的访问外设的方式有轮询、中断和DMA(看单片机是否支持);这里的操作系统一般是指嵌入式开发操作系统,常见的有UC/OS、FreeRTOS
    发表于 12-09 12:51 24次下载
    裸机<b class='flag-5'>开发</b>和带<b class='flag-5'>操作系统开发</b>的区别

    如何选择您的嵌入式系统操作系统操作系统特性

    libraries, security, and maintainability also play an essential role. 嵌入式系统开发人员如今可以使用范围广泛的操作系统。当然
    的头像 发表于 07-14 08:17 881次阅读

    聊聊操作系统

    说到操作系统,大家都不会陌生。我们天天都在接触操作系统——用台式机或笔记本电脑,使用的是windows和macOS系统;用手机、平板电脑,则是android(安卓)和iOS系统
    的头像 发表于 05-12 11:13 1447次阅读
    聊聊<b class='flag-5'>操作系统</b>