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的大框架,后面有空在细说
热门推荐
健康宵夜指南:吃对了也能瘦!
参松养心胶囊:心脏早搏治疗的新突破
心脏早搏患者的营养秘籍:菠菜、香蕉和三文鱼
提升自我书籍推荐,十本年轻人必读的经典之作
焦虑症与心脏早搏:如何自我调节?
北京红旗中医院推荐:中医艾灸和核桃操缓解心脏早搏
底层逻辑的十大原理
从饮食到运动:打造健康生活方式的实用指南
大S的最后时光:从荧幕到家庭的生活轨迹
培养数学思维:解锁解题思路,打开认知之门
掌握高对比度黑白摄影,拍出质感大片!
PS大神教你七招变黑白!
隐翅虫登上热搜:教你正确应对这种“小恶魔”
西安夏季隐翅虫来袭,教你如何保护肌肤
旅途更丝滑!山东优化景区预约机制,泰山门票政策微调效果明显
摩羯座性格深度解析:优缺点、爱情、事业、上升与十大行星特质
家用榨油机真的安全吗?专家揭秘!
花生榨油机:农村致富新路径
螺旋榨油机工作原理大揭秘!
家用榨油机安装全攻略:从开箱到通电自检,小白也能轻松上手!
猫咪指甲护理的重要性,你知道吗?
收烟盒扫码:轻松理财新方式?
烟盒回收真能赚大钱?揭秘背后微商套路
高对比度+虚化:拍照质感UP!
掌握景深控制:拍出专业级照片的关键技巧
用RAW格式拍出高清大片,你get了吗?
干皮救星!哪款妆前乳适合你?
生活中的"怎么做":探索高效方法提升工作学习与生活品质
秋冬打卡景德镇古窑:感受千年陶瓷魅力
埃及卢克索卡纳克神庙:世界上最大的神庙建筑群