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的大框架,后面有空在细说
热门推荐
丁士刚教授团队发表最新成果 揭示幽门螺杆菌相关胃炎致病新机制
最新最全的血糖、血压、血脂、尿酸健康指标对照表!
世界文化遗产——澳门历史城区
心电图上的那些间期问题
房颤心电图波形图是什么
数学与艺术:探索数学在艺术中的应用和美学价值
三个迹象证明你们是天生一对,"情感趋同"能让你们拥有更高的关系满意度
6-8月的避暑好去处,这8个地方平均气温20℃,开启清凉一夏
如何提高四级英语听力
房东租房怎样规避风险条款
创业不是年轻人专利,45到50岁创业者成功几率更高
弘一法师李叔同,从声色犬马到看破红尘,他的十件事你肯定不知道
《封神演义》的宗教影响
IBM强制解雇案例:企业应对员工心理健康的重要性
香港互认基金:内地投资者海外配置的新渠道
【汉宁·科普】小寒:揭秘病毒的结构与生命周期
没赶上火车可以改签吗?
滋阴潜阳、退热除蒸,软坚散结——鳖甲
昆明周边游三天自驾游路线推荐
时间复利效应才是人生的催化剂
如何运用复利效应进行财富积累:实现资产增值的秘诀
小鱼竿撬动千亿市场!抢抓银发“他经济”风口,“垂钓+”助力文旅市场加速增长
如何用AI工具制作小说推文,快速提升效率的小技巧
五行缺火佩戴红玛瑙:哪种更好?
自制豆浆30款,营养又好喝,全家老小都适合!
老子的智慧:道的局限性与无限可能
若似月轮终皎洁,不辞冰雪为卿热。
若似月轮终皎洁,不辞冰雪为卿热。
如何落实安全岗位责任
手指头皮薄手干有褶皱怎么办?原因分析与改善建议