当前位置:首页 > 报告详情

os2atc-学生会场-张艺枫.pdf

上传人: 2*** 编号:129187 2023-05-01 23页 980.69KB

1、OopS:用Rust编写的RISC-V操作系统开发经验与体会张艺枫学校:哈尔滨工业大学(深圳)开发人员:李诺舟、刘嘉琛、张艺枫指导老师:夏文、仇洁婷01.OopS介绍02.03.04.OopS开发历程为什么使用Rust心得与体会AgendaCSCC大赛要求各参赛队综合运用各种知识构思并实现一个综合性的操作系统。大赛鼓励各参赛队充分了解所使用的编程语言及目标硬件平台特点,使设计实现的操作系统能够尽可能发挥目标硬件平台能力以支持评测用例并提高应用的运行效率。各参赛队可自行决定操作系统体系结构、内部功能规范、具体实现细节等。内核赛说明(摘自官网)OopS介绍:Rust编写、RISC-V、宏内核操作系

2、统 开发人员:3个本科生;时间:6个月;代码量:约15000 能够在K210/QEMU上运行 支持84个系统调用,能运行:vi、gcc、rustc.还算OK的性能李诺舟内存模块应用支持张艺枫进程模块文件系统刘嘉琛文件系统驱动PART 02开发历程TimelineQ1.开始学习Rust与rCore Tutorial以rCore Tutorial为蓝本开发十余条系统调用,无文件系统Q2.完善(4-7月)VFS和FAT32 多核多线程 Busybox和sh 信号 Futex.Q3.优化 节约内存:lazy alloc、COW等 页面置换 动态链接 VFS优化Q4.应用支持(8月)gcc、rustc、

3、sh、vi、binutils.6Q2.功能Q4.应用支持TimelineQ1.开始学习Rust与rCore Tutorial以rCore Tutorial为蓝本开发十余条系统调用,无文件系统Q2.完善(4-7月)VFS和FAT32 多核多线程 Busybox和sh 信号 Futex.Q3.优化 节约内存:lazy alloc、COW等 页面置换 动态链接 VFS优化Q4.应用支持(8月)gcc、rustc、sh、vi、binutils.7Q2.功能Q4.应用支持文件系统抽象:虚拟文件系统+“一切皆文件”划分职责:VFS:挂载、路径解析、访问控制FAT32:具体I/O的实现Dirent Cach

4、e:加快路径解析FileIndex:(FileSystemID,FileID)与 挂载表 实现挂载文件系统沿用Unix“一切皆文件”的思想利用Rust的trait实现了文件的多态和文件类型的继承e.g.e.g.多核多线程 为了实现多核多线程,对进程模型进行重构。将各种数据结构(资源)从任务控制块中剥离,由独占变成可共享 资源的共享由clone系统调用的CloneFlag指定 如果CloneFlag包含CLONE_THREAD,则父子进程处于同一线程组。TimelineQ1.开始学习Rust与rCore Tutorial以rCore Tutorial为蓝本开发十余条系统调用,无文件系统Q2.完善

5、(4-7月)VFS和FAT32 多核多线程 Busybox和sh 信号 Futex.Q3.优化 节约内存:lazy alloc、COW等 页面置换 动态链接 VFS优化Q4.应用支持(8月)gcc、rustc、sh、vi、binutils.11Q2.功能Q4.应用支持内存优化背景:k210内存大小只有8M 但是 需要运行1-96个lmbench程序需要:节省内存+页面置换1,Lazy Allocation用户堆、用户栈、mmap区域在用到的时候才分配物理内存2,Copy on Write父子进程共享物理页,写时复制。内存优化Exec:Copy MapExec将文件映射到程序的虚拟地址空间,而不

6、是将文件内容拷贝到物理内存优化前只能同时跑8个lmbench,优化后能跑64个,但是还不够。页面置换实现页面置换后,成功在QEMU上运行96个lmbench。但是由于K210的内存特性引发了一个难以排查的bug,导致在K210运行失败。近似LRU的局部页面置换算法hash table记录(被置换的VPN、换出的文件位置)TimelineQ1.开始学习Rust与rCore Tutorial以rCore Tutorial为蓝本开发十余条系统调用,无文件系统Q2.完善(4-7月)VFS和FAT32 多核多线程 Busyb

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
OopS是一个使用Rust编写的、针对RISC-V架构的宏内核操作系统,由哈尔滨工业大学(深圳)的三个本科生开发。项目耗时六个月,代码量约15000行。OopS能在K210/QEMU上运行,支持84个系统调用,包括vi、gcc、rustc等。性能上,OopS实现了多核多线程,并针对K210的8M内存大小进行了内存优化,采用Lazy Allocation和Copy on Write技术,提高了内存使用效率。开发团队选择Rust的原因在于其优秀的工具链、社区支持、内存安全特性以及零成本抽象。他们认为,开发OS的过程也是学习的过程,并倡导开源精神。
"Rust语言在操作系统开发中的优势是什么?" "如何实现多核多线程在Rust操作系统中的进程模型重构?" "OopS操作系统开发历程中有哪些挑战和收获?"
客服
商务合作
小程序
服务号
折叠