没有合适的资源?快使用搜索试试~ 我知道了~
1. 异步块设备驱动及其异步系统调用接口 2. 异步的FAT32文件系统 3. 共享调度器 4. 异步互斥锁和基于管道的异步通信
资源详情
资源评论
资源推荐
飓风内核项目大纲
一、目标描述
飓风内核是无相之风战队设计的一种基于共享调度器的异步内核实现。
针对现代任务时间短、数量较多的特点,我们提出一种新的“异步内核”;它将传统上在用户层提供的“协
程”下沉到内核,通过“共享调度器”的方案提高速 度,进而在内核态提供一种针对协程 的支持机制。我们期
望通过这种全新设 计的内核,同时满足传统操作系统的易 用性,和专有操作系统的高性能特点,进而总体
地提高现代应用的运行效率。
本次的任务将使用 Rust语言的异步特性, 在RISC-V平台上设计一个异步内 核。这个内核将统一 不同空间的
任务调度器,共同作用于线程或协程的调度。通过这种方法,提高操作系统的整体性能。
二、比赛题目分析和相关资料调研
赛题要求我们在rCore系统设计的 基础上 ,学习Rust语言 的异步 特性, 在内核 层提供 协程调 度的原 语,最
终得到一个以内核为核心的用户层异步任务执行环境。
Rust语言具有async/await语法特性,它也是无栈协程的一种实现。使用async/await时,Rust编译器将生
成内部的枚举结构体,指示当前任务执行的状态,这个结构体统一以Future接口作为抽象。在Rust中,
Future是一个trait,我们能手工实现,也可以交由编译器自己实现。
在引入用户态协程 支持时,我们采用任务作为抽象方法。 任务是调度的最小单元,它可长可短,协程和线
程可以分别看作是 短的或长的任务。任务可由内核创建, 也可由用户创建。传统的协程实现中,利用系统
提供的线程,搭建一个新的用户态运行时,这需要和内核总共有两个调度器实现。为了更高效地调度协
程,我们“拍扁”两层,只 使用一个调度器,来节约调度算法消耗的时间。借助 共享内存的概念,我们提出
了“共享调度器”。
于是使用协程调度 后,我们可以尽量减少陷入内核的次数 。陷入内核的上下文切换时间由多个部分组成,
是调度开销较大的 耗时部分,通过尽量在用户层切换任务 ,减少了短任务的切换开销。为了达成这一点,
将经常相互使用的一组任务 归纳在一起,就构成了“地址空间”的概念。异步内 核的调度器设计应当考虑地
址空间,将相同空间的任务调度到一起运行,就能减少切换地址空间的频率。因为切换地址空间时间较
长,就能节省运行时间。
在这些都完成后, 我们可以编写协作式的异步内核。飓风 内核就是这样的内核,它能协作式地调度和运行
用户任务。作为一个拥有一定功能的内核,它提供了系统调用接口,帮助用户程序的实现步骤。
为了完善异步内核的功能,内核应 当编写一系列的异步系统调用和异步功能模 块 。以本次比赛典型的RISC-
V平台为例,可以编写异 步的 文件系统、SD卡和块设备驱动。包装以上的接口为异步系统调用,进一步得
到异步的标准库。在这些步骤都完成后,进行一定的性能测试,说明异步内核的性能提升方向。
三、系统框架设计
飓风系统作品包含飓风内核、用户程序和机器接口三个部分。
飓风内核是一个协 作式的异步内核。它向上提供的接口分 为两类:系统调用接口、共享调度器接口。内核
中的异步块设备、 异步文件系统提供接口功能,也向共享 调度器中添加任务。用户使用接口功能,调用共
享调度器,取出用户任务并执行。
执行器是内核和用 户都编写的功能模块。飓风系统提供了 一种简单的执行器实现方法。它不断从共享调度
器中得到任务,并判断是否应当在当前的地址空间中运行。如果是,那么使用Future的poll函数立即运
行;如果不是,就 调用内核的系统调用,立即执行切换地 址空间操作,以便其它地址空间开始运行系统任
务。通过共享调度器的“修 改任务状态”接口,可以改变当前任务的运行状态, 帮助系统取出已就绪的任务
执行。
飓风内核本身也采用了较多的异 步 功能设计。异步virtio块设备驱动是针对QEMU虚 拟 化平台设计的,它接
受内核的外部中断,提交读写请求,通过异步接口返回吞吐的硬盘数据。异步的SD卡驱动操作K210平 台
的存储接口,它从K210外接的存储卡中读取数据,用于运行内核的应用程序。异步的FAT32文件系统实现
了较完整的 FAT32异步接口,包括 FAT表等存储结构, 用于配合SD卡驱动和块设备驱动,完成系统对存储
的访问步骤。
以上的异步功能设计也得益于飓风内核本身的异步特性,充分利用了异步内核的特点。
内核的设计采用了“隔离内 核”思想。内核程序并非占用高地址,而是使用自己 的地址空间,避免影响用户
程序的运行。为了在隔离的 地址空间中切换,“跳板页”是必要的途径。上下文 结构体在这个步骤中也要被
访问,它也是内核 提供的数据结构。最终,使用这种思想 编写内存管理模块,就可以在不同的程序中切换
了。
在操作系统之下 ,RISC-V仍然定义了机器特权层接口。这个接口用于实现被 称作“SBI”的机器级环境,它将
在不同的平台下支持其上操作系统的运行。飓风项目采用了RustSBI机器环境,它 具有较好的兼容性和简便
性。
四、开发计划
2021年3月:
完成能在QEMU上运行的RISC-V内核
基本的执行器和调度器
完成简单的特权级切换代码
2021年4月:
为用户程序分配栈和上下文内存
添加调试用系统调用
完成分离的共享调度器设计
异步任务的不同状态
2021年5月:
优化内核项目的编译流程
完善共享调度器的接口函数
2021年6月:
异步的virtio块设备
异步的FAT32文件系统模块
支持K210处理器平台
2021年7月:
异步的数据同步机构
链接和运行用户层应用程序
完善virtio块设备等异步驱动
2021年8月:
完善K210烧写步骤和编译方法
让出、异步读、异步写系统调用
内核性能测试样例
剩余16页未读,继续阅读
曹将
- 粉丝: 21
- 资源: 308
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0