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

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

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

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

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

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

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

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

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

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

缺少抽象

無(wú)需依賴(lài)運(yùn)行時(shí)

可移植性

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

某些類(lèi)型的錯(cuò)誤在高級(jí)語(yǔ)言中出現(xiàn)的可能性要小得多

并發(fā)性:在高級(jí)語(yǔ)言中處理并發(fā)更容易,因?yàn)閹缀趺糠N高級(jí)語(yǔ)言都內(nèi)置處理并發(fā)所需的機(jī)制

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

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

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

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

審核編輯 :李倩

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

    關(guān)注

    37

    文章

    6617

    瀏覽量

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

    關(guān)注

    0

    文章

    43

    瀏覽量

    12233
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1921

    瀏覽量

    34507

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

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

    請(qǐng)問(wèn)一下ARM芯片可以不用操作系統(tǒng)而直接開(kāi)發(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ā)展過(guò)程 1.4 
    發(fā)表于 04-28 14:53 ?0次下載

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

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

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

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

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

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

    RTOS操作系統(tǒng)

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

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

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

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

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

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

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

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

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

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

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

    聊聊操作系統(tǒng)

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