0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么不用Go開發(fā)操作系統(tǒng)?

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 2023-05-26 15:09 ? 次閱讀

本文整理自 GoLand 官方博客的一篇文章:《OS in Go? Why Not?》,探討了為什么像 C 這樣的編程語言在 OS 開發(fā)中占據(jù)優(yōu)勢,以及是否可以使用 Go 編寫 OS。此外還提到了用 Go 開發(fā)操作系統(tǒng)的可行性、局限性,以及目前的部分成果。

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

操作系統(tǒng) (OS) 是計算機(jī)系統(tǒng)的心臟和靈魂,它管理著計算機(jī)的硬件和軟件資源,并為用戶提供與計算機(jī)交互的方式。傳統(tǒng)上,C 和 Assembly 等語言因其低開銷和 “接近機(jī)器碼” 的特性而被用于開發(fā)操作系統(tǒng)。 但諸如 Go 等高級語言的興起引入了一些特性,這些特性或許可以使開發(fā)操作系統(tǒng)等復(fù)雜軟件變得更加容易。例如,類型安全、錯誤處理和并發(fā)性在開發(fā)操作系統(tǒng)時應(yīng)該是有益的。 因此,采用像 Go 這樣的高級語言來開發(fā)操作系統(tǒng)理應(yīng)是自然選擇,但為什么并沒有成功的案例?

操作系統(tǒng)由不同的組件構(gòu)成,它們負(fù)責(zé)不同的功能,可以使用不同的編程語言編寫。 操作系統(tǒng)的核心是內(nèi)核 (Kernel),它負(fù)責(zé)與硬件交互 —— 幾乎都是采用 C 或匯編語言編寫。至于面向用戶的組件(例如 GUI 應(yīng)用程序),可以采用任何語言編寫。 例如,Android 采用 Java 編寫用戶層的組件,如 GUI 框架和系統(tǒng)應(yīng)用程序(相機(jī)、電話等)。相對應(yīng)的,其內(nèi)核采用 C 和匯編語言編寫;底層系統(tǒng)組件 —— 庫,則是用 C++ 編寫。 C 語言 “統(tǒng)治” 內(nèi)核的主要原因:

可直接管理內(nèi)存

缺少抽象

無需依賴運(yùn)行時

可移植性

Go 作為高級語言提供了許多令人滿意的特性。從這方面來看,它似乎可以成為開發(fā)操作系統(tǒng)的絕佳選擇:

某些類型的錯誤在高級語言中出現(xiàn)的可能性要小得多

并發(fā)性:在高級語言中處理并發(fā)更容易,因為幾乎每種高級語言都內(nèi)置處理并發(fā)所需的機(jī)制

類型安全:防止像 C 的寬松類型強(qiáng)制執(zhí)行

不過盡管 Go 提供了令人滿意的特性,可以讓操作系統(tǒng)開發(fā)者的工作更輕松,但它也有一些局限性。 作為一種具有垃圾回收功能的語言,Go 并不真正適合操作系統(tǒng)開發(fā)。使用 Go 編寫內(nèi)核意味著需要小心翼翼地繞過 Go 的垃圾收集。正如 Reddit 論壇中開發(fā)者提到的,鼠標(biāo)滯后可能是因為中斷處理程序分配了觸發(fā)垃圾回收的內(nèi)存。 此外,Go 還需要大量的 runtime 才能執(zhí)行,這意味著它不能直接在硬件上運(yùn)行。盡管 TinyGo 可以將 Go 編譯為在裸機(jī)上運(yùn)行,但與 C 相比,它只支持少量的架構(gòu),而 C 幾乎可以在任何架構(gòu)上運(yùn)行。 總的來說,使用 Go 開發(fā)一個不是 “玩具性質(zhì)” 的操作系統(tǒng)幾乎是不可能。尤其是要求支持在多種架構(gòu)上運(yùn)行、支持不同設(shè)備(如顯卡或網(wǎng)卡),并符合 POSIX 標(biāo)準(zhǔn),這更是極具挑戰(zhàn)性。 最后看一下探索用 Go 開發(fā)操作系統(tǒng)的案例。 Biscuit 是一個用 Go 開發(fā)的操作系統(tǒng),運(yùn)行在 64 位 X86 架構(gòu)上。它使用經(jīng)過修改的 Go 1.10 運(yùn)行時實(shí)現(xiàn),其中添加了更多匯編代碼來處理系統(tǒng)調(diào)用和中斷處理程序的引導(dǎo)和進(jìn)入 / 退出。

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

Biscuit 為用戶進(jìn)程提供 POSIX 接口,支持 fork、exec 等。它實(shí)現(xiàn)了支持核心 POSIX 文件系統(tǒng)調(diào)用的文件系統(tǒng)。Biscuit 為用 Go 編寫的 Intel PCI-Express 以太網(wǎng) NIC 實(shí)現(xiàn)了 TCP/IP 堆棧和驅(qū)動程序。使用 POSIX 接口,Biscuit 可以在不修改源代碼的情況下運(yùn)行許多 Linux C 程序。 然而,Biscuit 缺少許多功能,例如調(diào)度優(yōu)先級、換出頁面或磁盤,以及安全功能,例如用戶、訪問控制列表和地址空間隨機(jī)化。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6688

    瀏覽量

    123141
  • Go
    Go
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    12235
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1930

    瀏覽量

    34540

原文標(biāo)題:為什么不用Go開發(fā)操作系統(tǒng)?

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    實(shí)時操作系統(tǒng)和分時操作系統(tǒng)的區(qū)別

    操作系統(tǒng)能否滿足實(shí)時性要求來區(qū)分,可把操作系統(tǒng)分成分時操作系統(tǒng)和實(shí)時操作系統(tǒng),分時操作系統(tǒng)按照相等的時間片調(diào)度進(jìn)程輪流運(yùn)行,分時操作系統(tǒng)
    發(fā)表于 11-14 17:39 ?1.3w次閱讀

    如何選擇嵌入式系統(tǒng)操作系統(tǒng)操作系統(tǒng)特征

    嵌入式系統(tǒng)開發(fā)人員目前擁有廣泛的操作系統(tǒng)。當(dāng)然,最直接的操作系統(tǒng)就是沒有操作系統(tǒng)!但是,當(dāng)今的許多系統(tǒng)都是復(fù)雜的連接
    的頭像 發(fā)表于 09-07 11:51 ?1917次閱讀

    開發(fā)環(huán)境介紹主機(jī)操作系統(tǒng)

    開發(fā)環(huán)境介紹主機(jī)操作系統(tǒng):Ubuntu14.04 64位目標(biāo)平臺:IMX.6Q ARM Cortex-A9內(nèi)核交叉工具鏈:arm-poky-linux-gnueabi,gcc4.9.1Go版本
    發(fā)表于 07-16 06:54

    請問一下ARM芯片可以不用操作系統(tǒng)而直接開發(fā)嗎?

    請問一下ARM芯片可以不用操作系統(tǒng)而直接開發(fā)嗎?求大神解答
    發(fā)表于 06-06 16:01

    Linux操作系統(tǒng)原理及應(yīng)用

    Linux操作系統(tǒng)原理及應(yīng)用 1.1  操作系統(tǒng)的地位 1.2  操作系統(tǒng)的功能 1.3  操作系統(tǒng)的發(fā)展過程 1.4 
    發(fā)表于 04-28 14:53 ?0次下載

    linux操作系統(tǒng)的安全性

    linux操作系統(tǒng)的安全性 計算機(jī)系統(tǒng)安全性的內(nèi)涵 操作系統(tǒng)的安全性功能 操作系統(tǒng)的安全機(jī)制 安全操作系統(tǒng)
    發(fā)表于 04-28 15:05 ?0次下載

    什么是VxWorks操作系統(tǒng)

    VxWorksVxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的一種實(shí)時操作系統(tǒng)。VxWorks擁有良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及良好的用戶開發(fā)環(huán)境,在實(shí)
    發(fā)表于 06-17 00:33 ?4047次閱讀

    iPhone的操作系統(tǒng)詳解

    iPhone的操作系統(tǒng)詳解 iPhone OS 或 OS X iphone是由蘋果公司為iPhone開發(fā)操作系統(tǒng)。 iPhone OS包括了操作系統(tǒng)和支持應(yīng)用程序在iphone和
    發(fā)表于 02-03 10:01 ?1915次閱讀

    RTOS操作系統(tǒng)

    RTOS操作系統(tǒng)RTOS操作系統(tǒng)RTOS操作系統(tǒng)RTOS操作系統(tǒng)RTOS操作系統(tǒng)
    發(fā)表于 12-28 15:30 ?0次下載

    谷歌開發(fā)操作系統(tǒng)Fuchsia

    據(jù)消息報道,谷歌正在悄然開發(fā)的手機(jī)和平板電腦操作系統(tǒng)Fuchsia可能會在5年內(nèi)取代Android和Chrome OS。
    的頭像 發(fā)表于 07-22 09:43 ?3165次閱讀

    谷歌正式推出Android 10 Go操作系統(tǒng),應(yīng)用程序啟動速度提高10%

    去年,谷歌推出安卓9 Pie的同時,還推出了Android Go版,今天谷歌詳細(xì)介紹了其最新版本的Android 10 Go操作系統(tǒng),適用于內(nèi)存不足1.5GB的入門級智能手機(jī)。Android 10(
    的頭像 發(fā)表于 09-26 14:58 ?2348次閱讀

    嵌入式操作系統(tǒng)

    2.2 實(shí)時操作系統(tǒng)的評價指標(biāo)三、基于Linux的嵌入式操作系統(tǒng)3.1 ARMLinux簡介3.2 uCLinux簡介四、嵌入式操作系統(tǒng)設(shè)計方法4.1 嵌入式系統(tǒng)開發(fā)特點(diǎn)4.2 嵌入式
    發(fā)表于 11-03 18:36 ?46次下載
    嵌入式<b class='flag-5'>操作系統(tǒng)</b>

    裸機(jī)開發(fā)和帶操作系統(tǒng)開發(fā)的區(qū)別

    1.概述所謂裸機(jī)就是執(zhí)行單任務(wù)的單片機(jī),對應(yīng)的訪問外設(shè)的方式有輪詢、中斷和DMA(看單片機(jī)是否支持);這里的操作系統(tǒng)一般是指嵌入式開發(fā)操作系統(tǒng),常見的有UC/OS、FreeRTOS
    發(fā)表于 12-09 12:51 ?24次下載
    裸機(jī)<b class='flag-5'>開發(fā)</b>和帶<b class='flag-5'>操作系統(tǒng)開發(fā)</b>的區(qū)別

    如何選擇您的嵌入式系統(tǒng)操作系統(tǒng)操作系統(tǒng)特性

    libraries, security, and maintainability also play an essential role. 嵌入式系統(tǒng)開發(fā)人員如今可以使用范圍廣泛的操作系統(tǒng)。當(dāng)然
    的頭像 發(fā)表于 07-14 08:17 ?822次閱讀

    聊聊操作系統(tǒng)

    說到操作系統(tǒng),大家都不會陌生。我們天天都在接觸操作系統(tǒng)——用臺式機(jī)或筆記本電腦,使用的是windows和macOS系統(tǒng);用手機(jī)、平板電腦,則是android(安卓)和iOS系統(tǒng)
    的頭像 發(fā)表于 05-12 11:13 ?1322次閱讀
    聊聊<b class='flag-5'>操作系統(tǒng)</b>