在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

rCore入門-來自清華的OS前沿教程

yzcdx ? 來源:OS與AUTOSAR研究 ? 作者:OS與AUTOSAR研究 ? 2022-11-30 10:47 ? 次閱讀

1. 簡介

rCore教程旨在一步一步展示如何從零開始用Rust語言寫一個基于RISC-V架構的類 Unix 內核。值得注意的是, 本項目不僅支持模擬器環(huán)境(如Qemu/terminus 等),還支持在真實硬件平臺 Kendryte K210 上運行。

1.1 為什么要學習操作系統(tǒng)

eb63729e-7045-11ed-8abf-dac502259ad0.png

一名程序員的絕大部分工作都是在操作系統(tǒng)上面進行的。學習操作系統(tǒng),深入了解操作系統(tǒng)原理,是每個合格的程序員必須要經歷的。很多人學習 Rust 語言感到很吃力,基本上就是因為操作系統(tǒng)基礎知識薄弱造成的。通過自己實現一個操作系統(tǒng),可以讓你對操作系統(tǒng)的理解不僅僅是停留在概念上。而且用 Rust 實現操作系統(tǒng),對于 Rust 愛好者來說,更有意思。---上面應該是Rust大牛張漢東說的。

學習OS只是想更加了解Linux對當前工作輔助,可以參考我之前的一個文章介紹Linux 0.11的:os內核入門-linux0.11編譯介紹。相對來說rCore更加學術前沿一些,關于學術和一個公司商用的技術,可能大家會有很多誤解,一般在醫(yī)學領域科研可能領先應用50年左右,計算機領域也可能領先15年左右。舉個例子之前介紹的seL4微內核是一個學術性很先進的OS,十幾年前開發(fā)出來的,現在還沒大規(guī)模應用。

1.2 目前常見的操作系統(tǒng)內核都是基于 C 語言的,為何要推薦 Rust 語言?

事實上,C 語言就是為寫 UNIX 而誕生的。Dennis Ritchie 和 KenThompson 沒有期望設計一種新語言能幫助高效地開發(fā)復雜與并發(fā)的操作系統(tǒng)邏輯(面向未來),而是希望用一種簡潔的方式來代替難以使用的匯編語言抽象出計算機的行為,便于編寫控制計算機硬件的操作系統(tǒng)(符合當時實際情況)。

C 語言的指針既是天使又是魔鬼。它靈活且易于使用,但語言本身幾乎不保證安全性,且缺少有效的并發(fā)支持。這導致內存和并發(fā)漏洞成為當前基于 C 語言的主流操作系統(tǒng)的噩夢。

Rust 語言具有與 C 一樣的硬件控制能力,且大大強化了安全編程和抽象編程能力。從某種角度上看,新出現的 Rust 語言的核心目標是解決 C 的短板,取代 C 。所以用 Rust 寫 OS 具有很好的開發(fā)和運行體驗。

用 Rust寫 OS 的代價僅僅是學會用 Rust 編程。

----上面摘自書中描述,下面講點我對Rust的理解。

計算機技術的發(fā)展還算比較快,在這個過程中軟件技術一直在更新,有的是因為要適應硬件,有的是要適應人類的需求,涌現出了大批的技術,最常見的是我們的桌面OS,還有很多桌面應用,這些大多是面向對象的C++Java、Object-c實現的,還有一些嵌入式設備,沒有界面的,大部分用c語言這種面向過程的語言實現;網址網頁的應用更多用一些腳本語言,例如php js python去實現;還有一些人工智能的應用可能用一些偏向算法的語言,例如matlab去實現;一些服務器上運行的程序可能需要并發(fā)支持強的Go語言去實現,也適應多核CPU的硬件設計理念。這么多語言,就像一個江湖,里面有很多門派,如果要新搞一個門派,那一定需要博采眾長,成為一代宗師,厚積薄發(fā)才可以。

舉個游戲的例子,什么樣的游戲能受大眾的歡迎,“王者榮耀”可以說是老少皆宜,其又可以追溯到Dota,Dota可以說創(chuàng)造了此類玩法的流派,當年Dota的發(fā)展就是一個很好的例子,首先用戶主導,用戶給iceforge提需求想玩什么樣的角色,想玩什么的場景,然后不斷的更新英雄和地圖,英雄分三類:法師、力量型、敏捷型,基本涵蓋了玩游戲需求的場景,你是什么樣的性格就能找到自己對應的玩法,如上圖中。可以說Dota也是游戲領域的集大成者了。換個說法就是“精益求精、持續(xù)改進”。

所以現代的編程語言是一個可以一直演變的,今天新加了這個特性,明天又新加另外一個特性,才能保持活力,而古老的語言可能很久都不更新,也可能歷史的包袱太沉重,例如考慮兼容性和語言特長已無法再進行修改了。采眾之所長,可以說是我對Rust的一大感觸,首先底座基于C/C++,加入面向對象的思想,腳本語言的思想,并發(fā)、安全等思想,可以說是更高級的語言,包含了很多計算機技術的落地,所以對新手不友好,建議是多學幾門語言再學習Rust,就知道其好處了。缺點肯定也有,好的東西不是越多越好,可能會相互沖突,并且會造成不穩(wěn)定因素,更重要的是其弱小的時候得不到充分的驗證,有點像學術性的東西,大家也多抱觀望態(tài)度。就像上圖中畫的Rust吉祥物,一個大螃蟹:想橫著走,但是還需要第一個愿意吃螃蟹的人。

關于Rust的名字的來源:

rust直譯過來是一類真菌(中文中叫植物銹病的不少都是這類真菌造成的,如上圖中),關于Rust的由來有很多說法:

直接因素是Mozilla公司和Chrome是對頭,chrome是鉻金屬,那么就需要Rust去腐蝕。

我更喜歡的解釋是:

這類真菌生物結構上沒有一個中心點,而是完全分布式的.是空間上無單點失敗的(想象下人類腦袋心臟隨便哪塊掉),非常魯棒.

這類真菌的生命周期中有五種形態(tài)(像毛毛蟲變蝴蝶這就是算有兩種形態(tài)),非常獨特,非常魯棒。有多獨特呢?筆者為了寫這個答案,苦搜wiki,發(fā)現查出來的這五種形態(tài) Pycniospore, Aecium ,Urediniospore , Telium ,Basidium 中間三種都是這類真菌獨有的.

有多魯棒呢?作為真菌,五種生物形態(tài)下的rust中的2,3,5形態(tài)甚至還能往前倒退到之前的形態(tài)(真正的回到娘胎重造),做到了避免時間上的單點失敗

有多種生物形態(tài),也是映射Rust多范式的特點吧

這類真菌在寄生的時候甚至可以是多宿主的,而且能在宿主間切換,也是映射Rust對語言間互操作性的重視(想想除了D基本沒語言能跟C++好好互操作,都只能操作C,大家只能依賴SWIG這種技術再人為定義接口才行).

這類真菌有一個特性叫Dikaryon, 用采訪中說的比喻就是類似當想夫妻兩想生孩子時候,可以同步并行得看看到底兩人的后代能有多少種組合,這種繁殖時候的并行性,是又雙叒叕一層的保證rust菌生存的魯棒性

1.3 目前常見的指令集架構是 x86 和 ARM ,為何要推薦 RISC-V ?

目前為止最常見的指令集架構是 x86 和 ARM ,它們已廣泛應用在服務器、臺式機、移動終端和很多嵌入式系統(tǒng)中。由于它們的通用性和向后兼容性需求,需要支持非常多(包括幾十年前實現)的軟件系統(tǒng)和應用需求,導致這些指令集架構越來越復雜。

x86 后向兼容的策略確保了它在桌面和服務器領域的江湖地位,但導致其丟不掉很多已經比較過時的硬件設計,讓操作系統(tǒng)通過冗余的代碼來適配各種新老硬件特征。

x86 和ARM 在商業(yè)上都很成功,其廣泛使用使得其 CPU 硬件邏輯越來越復雜,且不夠開放,不能改變,不是開源的,難以讓感興趣探索硬件的學生了解硬件細節(jié),在某種程度上讓CPU成為了一個黑盒子,并使得操作系統(tǒng)與硬件的交互變得不那么透明,增加了學習操作系統(tǒng)的負擔。

從某種角度上看,新出現的 RISC-V 的核心目標是靈活適應未來的AIoT(人工智能物聯(lián)網, AI + IoT)場景,保證基本功能,提供可配置的擴展功能。其開源特征使得學生都可以深入CPU的運行細節(jié),甚至可以方便地設計一個 RISC-VCPU。從而可幫助學生深入了解操作系統(tǒng)與硬件的協(xié)同執(zhí)行過程。

編寫面向 RISC-V 的 OS 的硬件學習代價僅僅是你了解 RISC-V 的 Supervisor特權模式,知道 OS 在 Supervisor 特權模式下的控制能力。

---上面還是書中的解釋,下面介紹點RISC-V的由來。

芯片”是我國一個更大的痛點,拋開制造被美國各種卡脖子,在軟件指令集授權方面也是被交智商稅。你會說我們很多公司都會設計芯片,例如華為的麒麟芯片,或者國內大部分廠商都自己造了芯片,這只是表象,核心是基本都買的ARM的授權,然后自己再改改。

ec33a8c4-7045-11ed-8abf-dac502259ad0.png

先介紹下ARM,ARM指令集也是RISC精簡指令集,目前已經占領了大部分芯片市場。但是其商業(yè)模式是賣芯片設計的,授權費相當的昂貴,有時要上千萬美元,大企業(yè)還可以買,小公司就不行了,可以說“天下苦ARM久已”。

美國的高校想用也要付費,RISC指令集的創(chuàng)始人加州大學伯克利分校的David Patterson教授自己想用都不行。2010年,加州大學伯克利分校的一個研究團隊正在準備啟動一個新項目。在為新項目選擇指令集的時候,他們發(fā)現,x86指令集被Intel控制得死死的,ARM指令集的授權費又非常貴,MIPS、SPARC、PowerPC也存在知識產權問題。在牛人眼中,這么小兒科的東西還要收錢,直接新搞一個,并且使用BSDLicense開源協(xié)議,硬件也開源,沒錯就是這么瘋狂,誰想用誰用,不用付費,并且新一代的設計,吊打舊的技術。有點像Linus Torvalds當年svn收費還不好用直接開發(fā)了一個git一樣。

RISC-V是因為其前開發(fā)過四個版本,這是第五個版本。這么一個好東西,大家伙可以說一擁而上,短短幾年的時間里,包括谷歌、華為、阿里、IBM、鎂光、英偉達高通三星、西部數據等商業(yè)公司,以及加州大學伯克利分校、麻省理工學院、普林斯頓大學、ETH Zurich、印度理工學院、洛倫茲國家實驗室、新加坡南洋理工大學以及中科院計算所等學術機構,都紛紛加入RISC-V基金會。好處首先就是價格便宜,例如阿里的玄鐵開發(fā)板不足百元,可以硬剛樹莓派幾百元的價格。真是學生都可以隨便買,真香系列如下圖:

RISC-V當然作為新興的事物,也有缺點,跟上面說的Rust一樣,在發(fā)展的初期弱小的時候得不到充分驗證,一些缺點也被ARM抨擊,但是還是要多一些包容,其還在改進發(fā)展之中。作為“攪局者”,已經把大旗插好了,就看大家的熱情了。

有興趣可以參考:https://zhuanlan.zhihu.com/p/73089738

2.課程介紹和代碼下載編譯運行

2.1課程介紹

本小節(jié)調一點課程里面,剛開始就介紹很精彩的部分,大家感受下。

操作系統(tǒng)抽象:

在計算機和操作系統(tǒng)的技術研究和發(fā)展的過程中,形成了一系列的核心(抽象)概念:執(zhí)行環(huán)境、進程、地址空間和文件,這些奠定了操作系統(tǒng)內核設計與實現的基礎。

ecbaa234-7045-11ed-8abf-dac502259ad0.png

CPU在執(zhí)行過程中,可以在不同層次的執(zhí)行環(huán)境之間切換,這稱為執(zhí)行環(huán)境切換。執(zhí)行環(huán)境切換主要是通過特定的API或ABI來完成的,這樣不同執(zhí)行環(huán)境的軟件就能實現數據交換與互操作,而且還保證了彼此之間有清晰的隔離。對于應用程序的執(zhí)行環(huán)境而言,應用程序只能看到執(zhí)行環(huán)境直接提供給它的接口(API 或 ABI),這使得應用程序所能得到的服務取決于執(zhí)行環(huán)境提供給它的訪問接口。所以,操作系統(tǒng)可以看成是應用程序執(zhí)行環(huán)境,其形態(tài)可以是一個庫,也可以是一個虛擬機等,或者它們的某種組合形式。更清晰常見的形式如下圖:

ece620bc-7045-11ed-8abf-dac502259ad0.png

應用程序的內存布局:

ecf6b5b2-7045-11ed-8abf-dac502259ad0.png

在上圖中可以看到,代碼部分只有代碼段.text一個段,存放程序的所有匯編代碼。而數據部分則還可以繼續(xù)細化:

已初始化數據段保存程序中那些已初始化的全局數據,分為.rodata和.data兩部分。前者存放只讀的全局數據,通常是一些常數或者是常量字符串等;而后者存放可修改的全局數據。

未初始化數據段.bss保存程序中那些未初始化的全局數據,通常由程序的加載者代為進行零初始化,即將這塊區(qū)域逐字節(jié)清零;

堆(heap)區(qū)域用來存放程序運行時動態(tài)分配的數據,如 C/C++ 中的 malloc/new 分配到的數據本體就放在堆區(qū)域,它向高地址增長;

棧(stack)區(qū)域不僅用作函數調用上下文的保存與恢復,每個函數作用域內的局部變量也被編譯器放在它的棧幀內,它向低地址增長。

2.2 環(huán)境搭建和代碼下載運行

環(huán)境搭建主要是安裝Rust和qemu,參考:

http://rcore-os.cn/rCore-Tutorial-Book-v3/chapter0/5setup-devel-env.html

代碼下載參考第一章的代碼:

git clone https://github.com/rcore-os/rCore-Tutorial-v3.git cd rCore-Tutorial-v3 gitcheckoutch1 cd os makerun

ed111fc4-7045-11ed-8abf-dac502259ad0.png

打印的RUSTSBI是這個系統(tǒng)的BootLoader,也是用Rust語言寫的。

關于rCore系統(tǒng)整體的介紹,可以參考清華王潤基同學的畢業(yè)論文:

https://raw.githubusercontent.com/wiki/rcore-os/zCore/files/wrj-thesis.pdf

后記:

rCore也算是一個承前啟后的學習OS,可以學習OS的基本技術,另外Rust和RISC-V屬于未來的前沿技術,未來的OS很可能以此為根基。有一點rCore是一個宏內核,這點不是太新穎,但是清華直接給補上了,下一篇會介紹更新的zCore。

審核編輯 :李倩

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

    關注

    180

    文章

    7614

    瀏覽量

    137499
  • UNIX
    +關注

    關注

    0

    文章

    296

    瀏覽量

    41549

原文標題:rCore入門-來自清華的OS前沿教程

文章出處:【微信號:OS與AUTOSAR研究,微信公眾號:OS與AUTOSAR研究】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AIGC入門及鴻蒙入門

    人工智能生成內容(AIGC)和鴻蒙系統(tǒng)是當前科技領域的兩個熱門話題。以下是對它們的入門指南: AIGC入門 1. 基礎概念: AIGC,全稱Artificial Intelligence
    發(fā)表于 01-13 10:32

    美光科技一行走進清華大學電子工程系

    2024年底,美光課堂已連續(xù)五年為大學生授課,已有超過600名來自北京大學、清華大學、上海交通大學和西安交通大學的學子參與其中。
    的頭像 發(fā)表于 01-09 15:31 ?226次閱讀

    京微齊力受邀參加2024年清華大學工程博士論壇

    此前,2024年清華大學國家卓越工程師學院工程博士論壇在北京亦莊(北京經濟技術開發(fā)區(qū))舉辦。本屆論壇以“清亦融創(chuàng)、新質引領”為主題,來自集成電路、生物醫(yī)藥、人工智能等戰(zhàn)略性新興領域500余位清華大學創(chuàng)新領軍工程博士生參加。
    的頭像 發(fā)表于 11-06 10:17 ?474次閱讀

    愛芯元智受邀參加2024清華自動化論壇

    近日,“2024清華自動化論壇”在廣州舉行。本次論壇由清華校友總會自動化系分會主辦,匯聚了海內外約200位清華大學自動化系系友、學術界和產業(yè)界精英,共同分享各自領域最新研究成果與未來發(fā)展趨勢,探索校企之間與系友之間的合作。
    的頭像 發(fā)表于 11-05 14:41 ?417次閱讀

    清華新力量,滬上芯征程!清華大學上海校友會半導體專委會2024思瑞浦迎新日

    聚焦高性能模擬芯片2024年10月,清華大學上海校友會半導體專業(yè)委員會聯(lián)合思瑞浦共同舉辦2024年來滬清華校友迎新活動。金秋時節(jié),新一批清華人離開清華園來到上海,希望借此活動助力他們更
    的頭像 發(fā)表于 10-31 08:09 ?378次閱讀
    <b class='flag-5'>清華</b>新力量,滬上芯征程!<b class='flag-5'>清華</b>大學上海校友會半導體專委會2024思瑞浦迎新日

    字節(jié)跳動與清華AIR成立聯(lián)合研究中心

    近日,清華大學智能產業(yè)研究院(AIR)與字節(jié)跳動共同宣布成立“可擴展大模型智能技術聯(lián)合研究中心”(SIA Lab),并在清華大學舉行了隆重的成立儀式。
    的頭像 發(fā)表于 10-12 15:24 ?437次閱讀

    如何配置ESP8266的I2S模塊以接收來自外部微控制器的數據?

    如何配置 ESP8266 的 I2S 模塊以接收來自外部微控制器的數據(例如,具有 I2S 接口的 STM32F303)? 我想通過 I2S 接口將數據從 STM32 連續(xù)傳輸到 ESP8266,但非 OS SDK 不支持循環(huán)模式。也許
    發(fā)表于 07-12 14:08

    清華FPGA的開發(fā)軟件

    清華的FPGA除了官方提供的開發(fā)軟件,能用其它開發(fā)軟件進行開發(fā)嗎? 官方的開發(fā)軟件安裝,挺麻煩啊。
    發(fā)表于 06-23 12:25

    清華大學創(chuàng)新領軍工程博士團訪問摩爾線程

    5月19日,“清華大學創(chuàng)新領軍工程博士代表團走進摩爾線程”活動順利舉辦。近五十位來自集成電路、能源、航天、通信等重要領域的清華大學工程博士參加了本次活動。
    的頭像 發(fā)表于 05-20 15:28 ?479次閱讀

    清華大學創(chuàng)新領軍工程博士代表團到訪摩爾線程,深化產學合作

    5月19日,“清華大學創(chuàng)新領軍工程博士代表團走進摩爾線程”活動成功舉行。此次活動聚集了五十多位來自集成電路、能源、航天、通信等重要行業(yè)的清華大學創(chuàng)新領軍工程博士。
    的頭像 發(fā)表于 05-20 09:21 ?560次閱讀
    <b class='flag-5'>清華</b>大學創(chuàng)新領軍工程博士代表團到訪摩爾線程,深化產學合作

    什么是OS1和OS2單模光纖?

    OS1和OS2光纖均是由ITU-T標準(即ITU-T建議書,描述了單模光纖和多模光纖的幾何特性和傳輸特性)規(guī)范的單模光纖。在ITU-T標準中,OS1單模光纖是一種符合G.652.A和G.652B
    的頭像 發(fā)表于 04-16 10:20 ?1509次閱讀

    清華MBA企業(yè)移動課堂走進航盛電子,產學研共話汽車電子新航向

    2024年3月21日,清華MBA企業(yè)移動課堂走進航盛。清華經管學院金融系教授、清華科技創(chuàng)新MBA項目學術主任朱玉杰、清華經管學院MBA教育中心主任馬嘉和
    的頭像 發(fā)表于 04-01 16:50 ?1253次閱讀
    <b class='flag-5'>清華</b>MBA企業(yè)移動課堂走進航盛電子,產學研共話汽車電子新航向

    深圳市薩科微半導體有限公司,技術骨干來自清華大學和韓國延世大學...

    深圳市薩科微半導體有限公司,技術骨干來自清華大學和韓國延世大學,掌握第三代半導體碳化硅功率器件國際領先的工藝,和第五代超快恢復功率二極管技術。薩科微slkor(www.slkormicro.com
    發(fā)表于 03-15 11:22

    2024款鴻蒙OS 最新HarmonyOS Next_HarmonyOS4.0系列教程分享

    了有關華為鴻蒙的課程,包括清華大學、武漢大學、哈爾濱工業(yè)大學等等。據香港《南華早報》報道,當地時間1月3日,加拿大市場研究與咨詢機構TechInsights發(fā)布按照操作系統(tǒng)(OS)劃分的全球智能手機銷售
    發(fā)表于 02-28 10:29

    聯(lián)想今年將發(fā)布AI OS操作系統(tǒng)

    聯(lián)想正式宣布,將把AI PC和個人Agent作為2024年的核心業(yè)務推進重點,并計劃在今年內推出全新的“AI OS操作系統(tǒng)”以及一系列搭載此系統(tǒng)的“AI PC”。這一創(chuàng)新舉措標志著聯(lián)想在人工智能領域的深度布局和前沿探索。
    的頭像 發(fā)表于 02-18 11:10 ?1075次閱讀
    主站蜘蛛池模板: 操熟逼 | 国产成人mv在线观看入口视频 | 欧美一级高清片在线 | 伊人网站在线 | 天天射综合网站 | 狠狠操人人 | 久久久久久久蜜桃 | 欧美性猛交xxxx乱大交 | 四虎永久精品免费网址大全 | 亚洲人成电影院在线观看 | 午夜视频在线观看网站 | 四虎网址在线观看 | 57pao成人永久免费视频 | 日韩免费 | 日本精品视频 | 亚洲欧洲一区二区三区在线观看 | 婷婷久久综合九色综合九七 | 黄色一级毛片在线观看 | 中国特级毛片 | 色内内免费视频播放 | 天天做天天爱天天综合网 | 色妇网 | 亚洲成人免费看 | 特黄特色网站 | 五等分的新娘免费漫画 | 国产精品美女一区二区三区 | 真实一级一级一片免费视频 | 91av成人| 毛片免费观看 | 国产美女精品视频免费观看 | 七月丁香八月婷婷综合激情 | 国产成人精品日本亚洲语言 | 看全黄大片狐狸视频在线观看 | 夜夜夜操操操 | 中文字幕一区二区三区免费看 | 综合激情婷婷 | 亚洲韩国欧美一区二区三区 | 亚洲人成www在线播放 | 69xxx日本护士| 久久男人网 | 天天艹夜夜艹 |