《os2atc-学生会场-张艺枫.pdf》由会员分享,可在线阅读,更多相关《os2atc-学生会场-张艺枫.pdf(23页珍藏版)》请在三个皮匠报告上搜索。
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