rCore技术详解:基于Rust语言的RISC-V操作系统开发
创作时间:
作者:
@小白创作中心
rCore技术详解:基于Rust语言的RISC-V操作系统开发
引用
CSDN
1.
https://m.blog.csdn.net/2301_79725204/article/details/143097003
rCore是一个基于Rust语言开发的类Unix操作系统,主要运行在RISC-V架构上。本文将详细介绍rCore的开发过程,包括裸机打印、分时时间轮转、虚拟页表、进程管理、文件系统和多线程等核心功能的实现。
基础环境
QEMU 是一个开源的虚拟化软件,可以模拟多种架构的硬件,使用户能够在不同的平台上运行操作系统和应用程序。在rCore中用到qemu-system-riscv64
BIOS是计算机的固件,负责在启动时初始化硬件并引导操作系统。在rCore中使用RUSTSBI
编译:cargo+riscv64gc-unknown-none-elf(指定平台)
开发步骤
在开源操作系统青训营的第二阶段,对rCore的学习中,写出一个os是循序渐进的
第一步:先脱离标准库限制去打印字符串,裸机打印"hello world"
用到链接脚本(.ld)内核程序加载脚本(.S)RUSTSBI(bootloader)riscv汇编代码
Riscv下的OS代码三模式:M(machine)S(supervisor)U(user)
- M模式:RUSTSBI实现
- S模式:各种操作系统功能的底层实现,涉及访问内存硬件资源
- U模式:应用程序,地址空间与S模式隔离,受错误处理机制监视
entry.S和linker.ld:加载内核到内存中
Rustsbi提供中断和异常的处理,定时器,内存管理等
第二步:实现分时时间轮转运行应用程序
用到switch.S(切换脚本),trap.S(异常处理脚本),懒加载
批处理系统:
- 在任务队列中加载应用程序
- 设置任务的状态:运行(running),挂起(ready),退出(exit)
- 保存当前任务的上下文
- 切换到下一个任务,放入switch中运行
在这个基础上加每个任务运行最大时间限制就是分时时间轮转了,用到定时器中断
异常处理
- enable_timer_interrupt函数实现定时
- Trap_handler实现监督,
- 超时则挂起当前任务,运行下一个任务
- Trap_handler
- 中断处理
- 程序异常时退出并报错
- 系统调用
第三步,实现虚拟页表在内存中存储数据
用到SV39,mmu(硬件,辅助虚拟地址转换为物理地址)
- SV39划分了39位虚拟地址和56位物理地址
- 39位=vpn0(2^9)+ vpn1(2^9)+ vpn2(2^9)+page_offset(2^12)
- vpn0, vpn1, vpn2都是虚拟页号,索引到页表
- 第一级页表包含了第二级页表的地址,
- 第二级页表包含了第三级页表的地址,
- 第三级页表包含了映射的物理页号(44位)和页表项(读写权限),
- 物理页号+页内偏移量为物理地址
- (在rCore的mm目录中有相应的转换计算和映射处理)
第四步,实现进程管理
- 虚拟地址的基础上,
- 任务+内存栈-->进程
- 实现fork,exec,spawn等系统调用
- 调度算法采用优先级调度
- 优先级值越小,步长越大,进程越靠前,越先执行
第五步,实现文件系统
也就是disinode这个结构体索引到具体的数据块
一个块512个字节,可以存放一定数量的索引,被称为索引块,也可以存放数据,被称为数据块
第六步,实现并发(多线程)
也就是将原本的进程中一个个线程单独拎出来,放到列表中执行
这样也就方便对每个线程操控,进行死锁检测
先潦草记一下rCore的大框架,后面有空在细说
热门推荐
金桔种植全攻略:常见病虫害防治与日常养护要点
干性坏疽的表现
警察怀疑我犯罪但没证据:法律视角下的权利保护与应对策略
江苏宝应:直播助推荷藕产业发展
Science子刊 | UKB数据库的前瞻性研究设计和数据分析
抹茶粉是增肥的还是减肥的?
项目管理如何验证数据
“佚名”古诗词八首,不知是何人所作,却流传千古,人人会背
统计学数据分析p值怎么表示
抹茶粉能减肥吗?科学分析与实用建议
合同违约金会计的处理方式有哪些
火场逃生要命还是保命?真实案例,学会能救命→
如何全面评估汽车性能?关键指标和评估方法详解
肠胃问题别忽视!这5种食物需尽量少吃,保护胃肠健康!
会议寻找法:提升会议效率的实用技巧
手机恢复出厂设置,对手机有多大影响?许多人都不知道
股东会决议怎么撤销
股东会决议可以撤销吗
数字式兆欧表和手动摇表的比较分析
如何使用Taskkill命令行工具终止进程?
基因家族分析:从数据准备到结果可视化
这10种花,好养又好寓意,养起来旺人、旺宅!
喜阳不怕晒的植物花卉大全(适合阳台暴晒的大型绿植)
Gnucash科目详解:从基础概念到实际应用
如何减少虚拟机的资源占用
白术种植技术与管理
种植白术需要什么肥料?肥料选择与施用技巧详解
环保材料在PCB板制造中的应用趋势
冬季封车,该如何存放自己的爱车?
年金险万能账户和终身寿险利与弊