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的大框架,后面有空在细说
热门推荐
坦诚相待:化解友情危机的小妙招
像哈利与莎莉一样,用坦诚沟通化解朋友间的误会
心理学教你破解友情冷战
环氧地坪是什么?环氧地坪的做法及注意事项!
白银区消防科普教育基地:VR技术让消防安全教育“身临其境”
消防员教你火灾逃生体能训练
火灾逃生时的心理调适技巧,你真的会吗?
湿毛巾也能救命?火灾自救小妙招
杨绛先生说:“我不是不原谅,而是算了。沉默并不是无话可说,而是一言难尽”
美的集团高层变动背后:何享健的管理智慧
如何认识和处理遗憾事件
液体活检:癌症早筛新利器
Nature Medicine重磅:AI驱动液体活检实现癌症复发早期预警
微信钱包密码升级:你的移动支付安全新防线!
就业满意度高达96.55%!康复治疗学才不是“天坑专业”!
春节必看:光头强与小亮的成长之旅
萘普生片如何使用是正确的
扎龙与莫莫格:守护丹顶鹤最后的家园
扎龙保护区:380只丹顶鹤成功野化放归的背后
赵本山经典小品回顾:从《卖拐》到《昨天今天明天》
春晚小品42年:从茶话会到盛典,见证中国社会变迁
大理州疾控中心发布重要提醒:前往这些国家需警惕疟疾
如何带领一支廉洁团队
心口痛是冠心病的预警信号,这些预防要点请收好
酵母菌:面包界的超级英雄!
酵母菌发酵面团:营养翻倍的健康之选
家庭面包制作完全指南:从发酵到烘焙的实用技巧
掌握酵母菌发酵小窍门,你也能做出大师级面点!
假期出行 如何在火车站迅速找到检票口顺利上车?手把手教你
科普 | 高铁站检票口为什么要分A、B?