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

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

3天内不再提示

rCore入门-来自清华的OS前沿教程

yzcdx 来源:OS与AUTOSAR研究 作者:OS与AUTOSAR研究 2022-11-30 10:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 简介

rCore教程旨在一步一步展示如何从零开始用Rust语言写一个基于RISC-V架构的类 Unix 内核。值得注意的是, 本项目不仅支持模拟器环境(如Qemu/terminus 等),还支持在真实硬件平台 Kendryte K210 上运行。

1.1 为什么要学习操作系统

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

一名程序员的绝大部分工作都是在操作系统上面进行的。学习操作系统,深入了解操作系统原理,是每个合格的程序员必须要经历的。很多人学习 Rust 语言感到很吃力,基本上就是因为操作系统基础知识薄弱造成的。通过自己实现一个操作系统,可以让你对操作系统的理解不仅仅是停留在概念上。而且用 Rust 实现操作系统,对于 Rust 爱好者来说,更有意思。---上面应该是Rust大牛张汉东说的。

学习OS只是想更加了解Linux对当前工作辅助,可以参考我之前的一个文章介绍Linux 0.11的:os内核入门-linux0.11编译介绍。相对来说rCore更加学术前沿一些,关于学术和一个公司商用的技术,可能大家会有很多误解,一般在医学领域科研可能领先应用50年左右,计算机领域也可能领先15年左右。举个例子之前介绍的seL4微内核是一个学术性很先进的OS,十几年前开发出来的,现在还没大规模应用。

1.2 目前常见的操作系统内核都是基于 C 语言的,为何要推荐 Rust 语言?

事实上,C 语言就是为写 UNIX 而诞生的。Dennis Ritchie 和 KenThompson 没有期望设计一种新语言能帮助高效地开发复杂与并发的操作系统逻辑(面向未来),而是希望用一种简洁的方式来代替难以使用的汇编语言抽象出计算机的行为,便于编写控制计算机硬件的操作系统(符合当时实际情况)。

C 语言的指针既是天使又是魔鬼。它灵活且易于使用,但语言本身几乎不保证安全性,且缺少有效的并发支持。这导致内存和并发漏洞成为当前基于 C 语言的主流操作系统的噩梦。

Rust 语言具有与 C 一样的硬件控制能力,且大大强化了安全编程和抽象编程能力。从某种角度上看,新出现的 Rust 语言的核心目标是解决 C 的短板,取代 C 。所以用 Rust 写 OS 具有很好的开发和运行体验。

用 Rust写 OS 的代价仅仅是学会用 Rust 编程。

----上面摘自书中描述,下面讲点我对Rust的理解。

计算机技术的发展还算比较快,在这个过程中软件技术一直在更新,有的是因为要适应硬件,有的是要适应人类的需求,涌现出了大批的技术,最常见的是我们的桌面OS,还有很多桌面应用,这些大多是面向对象的C++Java、Object-c实现的,还有一些嵌入式设备,没有界面的,大部分用c语言这种面向过程的语言实现;网址网页的应用更多用一些脚本语言,例如php js python去实现;还有一些人工智能的应用可能用一些偏向算法的语言,例如matlab去实现;一些服务器上运行的程序可能需要并发支持强的Go语言去实现,也适应多核CPU的硬件设计理念。这么多语言,就像一个江湖,里面有很多门派,如果要新搞一个门派,那一定需要博采众长,成为一代宗师,厚积薄发才可以。

举个游戏的例子,什么样的游戏能受大众的欢迎,“王者荣耀”可以说是老少皆宜,其又可以追溯到Dota,Dota可以说创造了此类玩法的流派,当年Dota的发展就是一个很好的例子,首先用户主导,用户给iceforge提需求想玩什么样的角色,想玩什么的场景,然后不断的更新英雄和地图,英雄分三类:法师、力量型、敏捷型,基本涵盖了玩游戏需求的场景,你是什么样的性格就能找到自己对应的玩法,如上图中。可以说Dota也是游戏领域的集大成者了。换个说法就是“精益求精、持续改进”。

所以现代的编程语言是一个可以一直演变的,今天新加了这个特性,明天又新加另外一个特性,才能保持活力,而古老的语言可能很久都不更新,也可能历史的包袱太沉重,例如考虑兼容性和语言特长已无法再进行修改了。采众之所长,可以说是我对Rust的一大感触,首先底座基于C/C++,加入面向对象的思想,脚本语言的思想,并发、安全等思想,可以说是更高级的语言,包含了很多计算机技术的落地,所以对新手不友好,建议是多学几门语言再学习Rust,就知道其好处了。缺点肯定也有,好的东西不是越多越好,可能会相互冲突,并且会造成不稳定因素,更重要的是其弱小的时候得不到充分的验证,有点像学术性的东西,大家也多抱观望态度。就像上图中画的Rust吉祥物,一个大螃蟹:想横着走,但是还需要第一个愿意吃螃蟹的人。

关于Rust的名字的来源:

rust直译过来是一类真菌(中文中叫植物锈病的不少都是这类真菌造成的,如上图中),关于Rust的由来有很多说法:

直接因素是Mozilla公司和Chrome是对头,chrome是铬金属,那么就需要Rust去腐蚀。

我更喜欢的解释是:

这类真菌生物结构上没有一个中心点,而是完全分布式的.是空间上无单点失败的(想象下人类脑袋心脏随便哪块掉),非常鲁棒.

这类真菌的生命周期中有五种形态(像毛毛虫变蝴蝶这就是算有两种形态),非常独特,非常鲁棒。有多独特呢?笔者为了写这个答案,苦搜wiki,发现查出来的这五种形态 Pycniospore, Aecium ,Urediniospore , Telium ,Basidium 中间三种都是这类真菌独有的.

有多鲁棒呢?作为真菌,五种生物形态下的rust中的2,3,5形态甚至还能往前倒退到之前的形态(真正的回到娘胎重造),做到了避免时间上的单点失败

有多种生物形态,也是映射Rust多范式的特点吧

这类真菌在寄生的时候甚至可以是多宿主的,而且能在宿主间切换,也是映射Rust对语言间互操作性的重视(想想除了D基本没语言能跟C++好好互操作,都只能操作C,大家只能依赖SWIG这种技术再人为定义接口才行).

这类真菌有一个特性叫Dikaryon, 用采访中说的比喻就是类似当想夫妻两想生孩子时候,可以同步并行得看看到底两人的后代能有多少种组合,这种繁殖时候的并行性,是又双叒叕一层的保证rust菌生存的鲁棒性

1.3 目前常见的指令集架构是 x86 和 ARM ,为何要推荐 RISC-V ?

目前为止最常见的指令集架构是 x86 和 ARM ,它们已广泛应用在服务器、台式机、移动终端和很多嵌入式系统中。由于它们的通用性和向后兼容性需求,需要支持非常多(包括几十年前实现)的软件系统和应用需求,导致这些指令集架构越来越复杂。

x86 后向兼容的策略确保了它在桌面和服务器领域的江湖地位,但导致其丢不掉很多已经比较过时的硬件设计,让操作系统通过冗余的代码来适配各种新老硬件特征。

x86 和ARM 在商业上都很成功,其广泛使用使得其 CPU 硬件逻辑越来越复杂,且不够开放,不能改变,不是开源的,难以让感兴趣探索硬件的学生了解硬件细节,在某种程度上让CPU成为了一个黑盒子,并使得操作系统与硬件的交互变得不那么透明,增加了学习操作系统的负担。

从某种角度上看,新出现的 RISC-V 的核心目标是灵活适应未来的AIoT(人工智能物联网, AI + IoT)场景,保证基本功能,提供可配置的扩展功能。其开源特征使得学生都可以深入CPU的运行细节,甚至可以方便地设计一个 RISC-VCPU。从而可帮助学生深入了解操作系统与硬件的协同执行过程。

编写面向 RISC-V 的 OS 的硬件学习代价仅仅是你了解 RISC-V 的 Supervisor特权模式,知道 OS 在 Supervisor 特权模式下的控制能力。

---上面还是书中的解释,下面介绍点RISC-V的由来。

“芯片”是我国一个更大的痛点,抛开制造被美国各种卡脖子,在软件指令集授权方面也是被交智商税。你会说我们很多公司都会设计芯片,例如华为的麒麟芯片,或者国内大部分厂商都自己造了芯片,这只是表象,核心是基本都买的ARM的授权,然后自己再改改。

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

先介绍下ARM,ARM指令集也是RISC精简指令集,目前已经占领了大部分芯片市场。但是其商业模式是卖芯片设计的,授权费相当的昂贵,有时要上千万美元,大企业还可以买,小公司就不行了,可以说“天下苦ARM久已”。

美国的高校想用也要付费,RISC指令集的创始人加州大学伯克利分校的David Patterson教授自己想用都不行。2010年,加州大学伯克利分校的一个研究团队正在准备启动一个新项目。在为新项目选择指令集的时候,他们发现,x86指令集被Intel控制得死死的,ARM指令集的授权费又非常贵,MIPS、SPARC、PowerPC也存在知识产权问题。在牛人眼中,这么小儿科的东西还要收钱,直接新搞一个,并且使用BSDLicense开源协议,硬件也开源,没错就是这么疯狂,谁想用谁用,不用付费,并且新一代的设计,吊打旧的技术。有点像Linus Torvalds当年svn收费还不好用直接开发了一个git一样。

RISC-V是因为其前开发过四个版本,这是第五个版本。这么一个好东西,大家伙可以说一拥而上,短短几年的时间里,包括谷歌、华为、阿里、IBM、镁光、英伟达高通三星、西部数据等商业公司,以及加州大学伯克利分校、麻省理工学院、普林斯顿大学、ETH Zurich、印度理工学院、洛伦兹国家实验室、新加坡南洋理工大学以及中科院计算所等学术机构,都纷纷加入RISC-V基金会。好处首先就是价格便宜,例如阿里的玄铁开发板不足百元,可以硬刚树莓派几百元的价格。真是学生都可以随便买,真香系列如下图:

RISC-V当然作为新兴的事物,也有缺点,跟上面说的Rust一样,在发展的初期弱小的时候得不到充分验证,一些缺点也被ARM抨击,但是还是要多一些包容,其还在改进发展之中。作为“搅局者”,已经把大旗插好了,就看大家的热情了。

有兴趣可以参考:https://zhuanlan.zhihu.com/p/73089738

2.课程介绍和代码下载编译运行

2.1课程介绍

本小节调一点课程里面,刚开始就介绍很精彩的部分,大家感受下。

操作系统抽象:

在计算机和操作系统的技术研究和发展的过程中,形成了一系列的核心(抽象)概念:执行环境、进程、地址空间和文件,这些奠定了操作系统内核设计与实现的基础。

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

CPU在执行过程中,可以在不同层次的执行环境之间切换,这称为执行环境切换。执行环境切换主要是通过特定的API或ABI来完成的,这样不同执行环境的软件就能实现数据交换与互操作,而且还保证了彼此之间有清晰的隔离。对于应用程序的执行环境而言,应用程序只能看到执行环境直接提供给它的接口(API 或 ABI),这使得应用程序所能得到的服务取决于执行环境提供给它的访问接口。所以,操作系统可以看成是应用程序执行环境,其形态可以是一个库,也可以是一个虚拟机等,或者它们的某种组合形式。更清晰常见的形式如下图:

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

应用程序的内存布局:

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

在上图中可以看到,代码部分只有代码段.text一个段,存放程序的所有汇编代码。而数据部分则还可以继续细化:

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

未初始化数据段.bss保存程序中那些未初始化的全局数据,通常由程序的加载者代为进行零初始化,即将这块区域逐字节清零;

堆(heap)区域用来存放程序运行时动态分配的数据,如 C/C++ 中的 malloc/new 分配到的数据本体就放在堆区域,它向高地址增长;

栈(stack)区域不仅用作函数调用上下文的保存与恢复,每个函数作用域内的局部变量也被编译器放在它的栈帧内,它向低地址增长。

2.2 环境搭建和代码下载运行

环境搭建主要是安装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是这个系统的BootLoader,也是用Rust语言写的。

关于rCore系统整体的介绍,可以参考清华王润基同学的毕业论文:

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

后记:

rCore也算是一个承前启后的学习OS,可以学习OS的基本技术,另外Rust和RISC-V属于未来的前沿技术,未来的OS很可能以此为根基。有一点rCore是一个宏内核,这点不是太新颖,但是清华直接给补上了,下一篇会介绍更新的zCore。

审核编辑 :李倩

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

    关注

    183

    文章

    7642

    浏览量

    144611
  • UNIX
    +关注

    关注

    0

    文章

    296

    浏览量

    42876

原文标题:rCore入门-来自清华的OS前沿教程

文章出处:【微信号:OS与AUTOSAR研究,微信公众号:OS与AUTOSAR研究】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    普华基础软件走进清华大学研究生课堂

    近日,普华基础软件走进清华大学车辆与运载学院,在《车辆控制工程》课堂上开展研究生专题授课和交流。本次授课聚焦智能驾驶汽车基础软件发展与关键技术,旨在搭建校企知识传递桥梁,为高校学子带来产业前沿视角,助力培养符合行业需求的复合型人才。
    的头像 发表于 11-26 15:53 189次阅读

    开源鸿蒙技术大会2025丨OS内核与视窗分论坛:筑基开源鸿蒙核心内核,共拓视窗技术边界

    开源鸿蒙技术大会2025 OS内核与视窗分论坛在湖南长沙国际会议中心圆满举行。来自西北工业大学、浙江大学、厦门大学、华为等高校和企业的学者专家齐聚一堂,围绕鸿蒙内核通信机制、智能渲染、内存缓存优化、端云协同备份及空间视窗架构等前沿
    的头像 发表于 11-20 17:29 465次阅读
    开源鸿蒙技术大会2025丨<b class='flag-5'>OS</b>内核与视窗分论坛:筑基开源鸿蒙核心内核,共拓视窗技术边界

    开源鸿蒙技术大会2025丨OS原生智能分论坛圆满举办

    开源鸿蒙技术大会2025 OS原生智能分论坛在湖南长沙国际会议中心圆满举行。来自学术界与产业界的多位专家学者齐聚一堂,围绕端侧AI、智能体(Agent)技术、大模型高效推理等前沿议题展开深度交流
    的头像 发表于 11-20 17:28 398次阅读
    开源鸿蒙技术大会2025丨<b class='flag-5'>OS</b>原生智能分论坛圆满举办

    清华大学TOP EE+项目参访美光上海

    此前,2025年6月4日至6日,清华大学TOP EE+ 项目于美光上海的参访活动圆满举行。为期三天的活动汇聚了来自清华大学电子工程系的优秀留学生与美光的多位管理者和工程师,展开了深入的技术交流与文化互动之旅。
    的头像 发表于 07-07 18:02 1263次阅读

    清华经管学院PE产业投资家莅临谷东智能参观交流

    近日,清华大学经济管理学院私募股权(PE)产业投资家项目师生一行20余人,在清华经管学院教授、清华私募股权研究院院长肖星带领下,莅临谷东智能进行深度参观交流。谷东智能董事长崔海涛、交付中心负责人王进
    的头像 发表于 06-26 16:58 842次阅读

    2025年开放原子校源行清华大学站成功举办

    近日,由开放原子开源基金会、清华大学计算机科学与技术系、清华大学软件学院主办的开放原子“校源行”(清华站)在清华大学成功举办。
    的头像 发表于 04-22 16:46 757次阅读

    单模光纤os1和os2的区别分析

    单模光纤OS1和OS2的主要区别体现在标准定义、传输性能、应用场景及成本等方面,以下是具体分析: 1. 标准定义 OS1:符合ITU-T G.652.A和G.652.B标准,属于常规单模光纤
    的头像 发表于 04-21 10:37 1569次阅读

    清华大学与华为启动“卓越中心”专项合作

    近日,清华大学与华为技术有限公司在清华大学自强科技楼正式签署合作协议,共同宣布“清华大学鲲鹏昇腾科教创新卓越中心专项合作”(简称“卓越中心”)正式启动。 出席签约仪式的有清华大学副校长
    的头像 发表于 02-18 14:11 1062次阅读

    清华大学发布:DeepSeek从入门到精通

    《DeepSeek:从入门到精通》是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后团队精心撰写的一份专业文档。该文档篇幅长达104页,文档的核心内容围绕DeepSeek的技术
    的头像 发表于 02-14 09:49 1.2w次阅读
    <b class='flag-5'>清华</b>大学发布:DeepSeek从<b class='flag-5'>入门</b>到精通

    清华大学自动化系学子走进华砺智行研学交流

    近日,清华大学自动化系的11名学子走进华砺智行研学交流,开展科技前沿探索的社会实践活动。
    的头像 发表于 02-13 10:03 696次阅读

    清华大学DeepSeek指南:从入门到精通

    本资料由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室余梦珑博士后团队出品,细致讲述了DeepSeek的应用技巧。                    
    的头像 发表于 02-11 09:16 1.4w次阅读
    <b class='flag-5'>清华</b>大学DeepSeek指南:从<b class='flag-5'>入门</b>到精通

    AIGC入门及鸿蒙入门

    人工智能生成内容(AIGC)和鸿蒙系统是当前科技领域的两个热门话题。以下是对它们的入门指南: AIGC入门 1. 基础概念: AIGC,全称Artificial Intelligence
    发表于 01-13 10:32

    美光科技一行走进清华大学电子工程系

    2024年底,美光课堂已连续五年为大学生授课,已有超过600名来自北京大学、清华大学、上海交通大学和西安交通大学的学子参与其中。
    的头像 发表于 01-09 15:31 956次阅读