大家好: 这是目前初步制定的任务列表
# crate-based&unikernel 方式构造定制操作系统内核
## 模块
### 文件系统 - easyfs - fatfs
### netstack - lose-net-stack 已经实现了 `udp`等 - smoltcp
### 基础图形库 - embedded-graphics (2D graphics library)
### 存储设备驱动 - virtio-blk - nvme
### 网络设备驱动 - virtio-net - e1000
### 人机交互设备驱动 - virtio-input(键盘/鼠标) - virtio-gpu(图形显示)
### 硬件平台设备驱动 - pci
## OS或Hypervisor - rcore-tutorial-v3 - rcore-tutorial-in-single-workspace - aceros - Rust-for-Linux - RVM
## 可选择的题目
### 改进组合已有crates
- (入门)改进virtio-drivers crates,支持virtio协议的各种虚拟外设/功能模块 - (入门)把新的crates组合入rcore-tutorial-v3 或 rcore-tutorial-in-single-workspace - (中级)把已有crate组合入新的OS中,如aceros - (高级)把已有crate组合入新的OS中,如Rust-for-Linux
### 文件系统类题目
- (中级)log xv6fs文件系统 - (高级)ext2文件系统
### 网络类题目
- lose-net-stack 已经实现了 `udp`等,可以对 `lose-net-stack` 进行扩展
- (中级)添加 `lose-net-stack` `tcp` 支持 - (高级)添加 `lose-net-stack` `ipv6` 支持 - (中级)添加 `lose-net-stack` `icmp` 支持
或者基于 `lose-net-stack` 编写相关的用例.(也可以使用 `smoltcp`)
- (中级)基于 `lose-net-stack` 的 `dns` `client`(`udp` 协议) - (中级)基于 `lose-net-stack` 的 `ntp` `client`(`udp` 协议 网络时间协议,可以通过网络同步操作系统时间,可以补全很多个人编写的 `os` 时间不准或者不支持的问题。)
### UI类题目
基于 `virtio-gpu` 在rcore-tutorial等
- (中级)利用字库显示文字(unicode) - `bmp` 文件的解析和显示 - `ico` 文件的解析和显示 - `jpg` 文件的解析和显示 - `png` 文件的解析和显示
- (高级)在有对图片的和字库的支持下,可以再结合 `virtio-input` 实现鼠标的移动和键盘输入的显示。
### 设备驱动类题目 - (初级)支持virtio协议的各种虚拟外设/功能模块 - (中级)各种Qemu中模拟设备的驱动程序crate
### 操作系统类题目 - (初级)扩展/改进rcore-tutorial-v3,支持各种内核crates - (初级)扩展/改进rcore-tutorial-in-single-workspace,支持各种内核crates - (中级)扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。 - (高级)设计实现TPU/GPU/APU driver crate on rcore-tutorial..Rust for Linux,可运行在RISC-V or ARM开发板上 - (高级)扩展 Rust for Linux,更好地支持跨OS的内核相关crates - (高级)扩展 Rust for Linux on RISC-V 32/64 - (高级)扩展RVM,支持可调度/多核支持的Hypervisor,可运行在ARM上 - (高级)移植各种OS/Hypervisor在x86-64\RISC-V64/AARCH64\LoongArch上
2022秋冬季开源操作系统训练营顺利结束,相关过程记录请查阅 https://github.com/LearningOS/rust-based-os-comp2022/blob/main/news.md 。
大家好:
请把需要基于贾越凯写的os开发的学生github id,发给我或贾越凯,他会加入到repo中。
如果在熟悉贾越凯的os过程中,如果想练手,可以找我或贾越凯,进行os 相关crate或功能模块开发。目前比较简单的有:线程调度算法、内存分配算法(优化现有的buddy system),同步互斥机制(支持线程的阻塞机制:即有等待队列的条件变量或信号量),文件系统(高性能嵌入式实时日志文件系统,可参考xv6fs ),基于virtio-gpu的framebufer driver(可参考rcore tutorial v3的ch9 branch 中给的OS), e1000网卡驱动(可参考 rcore/zcore中的e1000网卡驱动)。sd卡驱动(基于qemu或树莓派),nvme驱动(参考zcore的nvme驱动)。
当然,如何同学们说还需继续通过读代码来学习,那就等他们继续读代码来学习吧。请各位老师把握自己学生的进度。
> -----原始邮件----- > 发件人: "Yu Chen" yuchen@tsinghua.edu.cn > 发送时间: 2023-02-05 21:53:31 (星期日) > 收件人: bulletin@syswonder.org > 抄送: > 主题: 任务列表 -- crate-based&unikernel 方式构造定制操作系统内核 > > 大家好: > 这是目前初步制定的任务列表 > > # crate-based&unikernel 方式构造定制操作系统内核 > > ## 模块 > > ### 文件系统 > - easyfs > - fatfs > > ### netstack > - lose-net-stack 已经实现了 `udp`等 > - smoltcp > > ### 基础图形库 > - embedded-graphics (2D graphics library) > > ### 存储设备驱动 > - virtio-blk > - nvme > > ### 网络设备驱动 > - virtio-net > - e1000 > > ### 人机交互设备驱动 > - virtio-input(键盘/鼠标) > - virtio-gpu(图形显示) > > ### 硬件平台设备驱动 > - pci > > ## OS或Hypervisor > - rcore-tutorial-v3 > - rcore-tutorial-in-single-workspace > - aceros > - Rust-for-Linux > - RVM > > > ## 可选择的题目 > > ### 改进组合已有crates > > - (入门)改进virtio-drivers crates,支持virtio协议的各种虚拟外设/功能模块 > - (入门)把新的crates组合入rcore-tutorial-v3 或 rcore-tutorial-in-single-workspace > - (中级)把已有crate组合入新的OS中,如aceros > - (高级)把已有crate组合入新的OS中,如Rust-for-Linux > > ### 文件系统类题目 > > - (中级)log xv6fs文件系统 > - (高级)ext2文件系统 > > > ### 网络类题目 > > - lose-net-stack 已经实现了 `udp`等,可以对 `lose-net-stack` 进行扩展 > > - (中级)添加 `lose-net-stack` `tcp` 支持 > - (高级)添加 `lose-net-stack` `ipv6` 支持 > - (中级)添加 `lose-net-stack` `icmp` 支持 > > 或者基于 `lose-net-stack` 编写相关的用例.(也可以使用 `smoltcp`) > > - (中级)基于 `lose-net-stack` 的 `dns` `client`(`udp` 协议) > - (中级)基于 `lose-net-stack` 的 `ntp` `client`(`udp` 协议 网络时间协议,可以通过网络同步操作系统时间,可以补全很多个人编写的 `os` 时间不准或者不支持的问题。) > > ### UI类题目 > > 基于 `virtio-gpu` 在rcore-tutorial等 > > - (中级)利用字库显示文字(unicode) > - `bmp` 文件的解析和显示 > - `ico` 文件的解析和显示 > - `jpg` 文件的解析和显示 > - `png` 文件的解析和显示 > > - (高级)在有对图片的和字库的支持下,可以再结合 `virtio-input` 实现鼠标的移动和键盘输入的显示。 > > > ### 设备驱动类题目 > - (初级)支持virtio协议的各种虚拟外设/功能模块 > - (中级)各种Qemu中模拟设备的驱动程序crate > > ### 操作系统类题目 > - (初级)扩展/改进rcore-tutorial-v3,支持各种内核crates > - (初级)扩展/改进rcore-tutorial-in-single-workspace,支持各种内核crates > - (中级)扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。 > - (高级)设计实现TPU/GPU/APU driver crate on rcore-tutorial..Rust for Linux,可运行在RISC-V or ARM开发板上 > - (高级)扩展 Rust for Linux,更好地支持跨OS的内核相关crates > - (高级)扩展 Rust for Linux on RISC-V 32/64 > - (高级)扩展RVM,支持可调度/多核支持的Hypervisor,可运行在ARM上 > - (高级)移植各种OS/Hypervisor在x86-64\RISC-V64/AARCH64\LoongArch上 /yuchen@tsinghua.edu.cn
#腾讯会议:124-757-645 分享者:石磊 分享时间:2.12(今晚)20点 分享题目:初步OS组件化实验的结果和后续设想 所属题目:扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。 欢迎参加
# 组件化OS设计、Unikernel、Hypervisor技术交流的周例会
## 时间 2023.02.17 20:00~21:30
## 人员 advisor: ld,gy,ck,lm,cy student: jyk,clk,cxy,dsf,gmg,jr,lky,wlp,wxy,yjg,yjb,yjy,ysp,zyc,bhy,zyh,wwt,yz
## 内容
1. jyk: 清华 研3,smoltcp, virtio-net (no-intr),virtio-driver, 协作sched 2. clk: 哈工大深圳 本4, peking, hypervisor, 微内核(C)-->rust-sel4(riscv, loogarch) 3. cxy: 电子科大 本4, 计算所,hypervisor,毕设:面向工业实时应用的操作系统优化方法研究 4. dsf:清华本4,hypervisor rvm(arm),上周 RVM for arm, virt cpu part. arm hypervisor C proj)(都比较大) jailhouse, zircon (include a hypervisor) ,hardware: qemu-virt aarch64, 树莓派4(next) 5. gmg:北京4,rcore-tutorial-v3?,毕设:面向智慧家庭的泛在操作系统原型 home-assistant 改造。偏应用 6. jr:计算所 研2, rcore-tutorial-v3?,kernel, 先学习 7. lky:计算所 研2, hypevisor,学习rvm,等具体任务, sel4扩展功能(树莓派4),wasm, time-log,sel4-based hypervisor 8. wlp:清华 研2,read unikraft,aarch64,boot-->...--> helloworld(nolibc,nanosleep(linux syscall, posix-time to sleep),drv(framework, block drv(virto-blk?),fs interface),device tree rcore-tutorial-v3-ch9,GIC(platform)下周四汇报 9. wxy:北大本4,rcore-tutorial-v3?,中关村 10. yjg:清华研2, rust embedded tutorial(arm), arceos porting arm, qemu 下周四汇报。 virtio spec, 参考jyk的nimbos 11. yjb:河南科大4,virto-blk(no-intr), fatfs, devfs ) for arceos, no-intr. 也在读unikraft devfs. next:(ext2/4 simple, xv6 log-fs(rust已有), future:nvme(auu) 12. yjy: 计算所研1,sel4 hypervisor(裁剪,学习),已学rvm toturial, 等进一步安排. 13. ysp: 北大研2, 学习 arceos,boot-->...--> memtest,模块一起看。kernel(ck lead),framebuffer(virtio-gpu)+embedded-graphics for arceos, no-intr 14. zyc: 中科大本4 -> 中科大研(lc),kernel(special focus fs), xv6 log-fs(rust已有, crate),OS textbook three-easy-pieces, virto-blk(intr), GIC , trait/interface: vfs? 15. bhy:清华本4,支持unikraft C helloworld app,mem-test app, multitask app,malloc/free C lib fun --> 绕过或不绕过sbrk(old),mmap/munmap next:unikraft linux C app, future:unikraft/linux redis 16. zyh, 北大研1, hypervisor,已学rvm toturial, 调研jailhouse, 等进一步安排. 17. wwt, 北大研1, hypervisor,已学rvm toturial, 调研jailhouse, 等进一步安排. 18. yz, 中科大研5,kernel,学习arceos中,等进一步安排。
## 下周安排
unikernel: 线下:清华:周四下午
hypervisor: 线下:计算所 周五下午 dsf,jyk
各位老师好!
如果各位老师给同学们安排了工作,请给出每位同学要做或想做的事情的列表,我们看看是否可以进一步交流或指导。 如果有老师的学生没有题目,请给出这部分同学的名单,我们可以给他们指定题目。
请注意:周四晚上,各位老师的同学需要汇报各自的进展(需要写到github 或某个地方,让老师们看到)。
如果老师们能组织内部的进展汇报,也很好。希望能把进展发到邮件列表,大家可以看看。
谢谢!
> -----原始邮件----- > 发件人: "Yu Chen" yuchen@tsinghua.edu.cn > 发送时间: 2023-02-09 23:55:19 (星期四) > 收件人: bulletin@syswonder.org > 抄送: > 主题: 进一步的任务列表 -- crate-based&unikernel 方式构造定制操作系统内核 > > 大家好: > > 请把需要基于贾越凯写的os开发的学生github id,发给我或贾越凯,他会加入到repo中。 > > 如果在熟悉贾越凯的os过程中,如果想练手,可以找我或贾越凯,进行os 相关crate或功能模块开发。目前比较简单的有:线程调度算法、内存分配算法(优化现有的buddy system),同步互斥机制(支持线程的阻塞机制:即有等待队列的条件变量或信号量),文件系统(高性能嵌入式实时日志文件系统,可参考xv6fs ),基于virtio-gpu的framebufer driver(可参考rcore tutorial v3的ch9 branch 中给的OS), e1000网卡驱动(可参考 rcore/zcore中的e1000网卡驱动)。sd卡驱动(基于qemu或树莓派),nvme驱动(参考zcore的nvme驱动)。 > > 当然,如何同学们说还需继续通过读代码来学习,那就等他们继续读代码来学习吧。请各位老师把握自己学生的进度。 > > > -----原始邮件----- > > 发件人: "Yu Chen" yuchen@tsinghua.edu.cn > > 发送时间: 2023-02-05 21:53:31 (星期日) > > 收件人: bulletin@syswonder.org > > 抄送: > > 主题: 任务列表 -- crate-based&unikernel 方式构造定制操作系统内核 > > > > 大家好: > > 这是目前初步制定的任务列表 > > > > # crate-based&unikernel 方式构造定制操作系统内核 > > > > ## 模块 > > > > ### 文件系统 > > - easyfs > > - fatfs > > > > ### netstack > > - lose-net-stack 已经实现了 `udp`等 > > - smoltcp > > > > ### 基础图形库 > > - embedded-graphics (2D graphics library) > > > > ### 存储设备驱动 > > - virtio-blk > > - nvme > > > > ### 网络设备驱动 > > - virtio-net > > - e1000 > > > > ### 人机交互设备驱动 > > - virtio-input(键盘/鼠标) > > - virtio-gpu(图形显示) > > > > ### 硬件平台设备驱动 > > - pci > > > > ## OS或Hypervisor > > - rcore-tutorial-v3 > > - rcore-tutorial-in-single-workspace > > - aceros > > - Rust-for-Linux > > - RVM > > > > > > ## 可选择的题目 > > > > ### 改进组合已有crates > > > > - (入门)改进virtio-drivers crates,支持virtio协议的各种虚拟外设/功能模块 > > - (入门)把新的crates组合入rcore-tutorial-v3 或 rcore-tutorial-in-single-workspace > > - (中级)把已有crate组合入新的OS中,如aceros > > - (高级)把已有crate组合入新的OS中,如Rust-for-Linux > > > > ### 文件系统类题目 > > > > - (中级)log xv6fs文件系统 > > - (高级)ext2文件系统 > > > > > > ### 网络类题目 > > > > - lose-net-stack 已经实现了 `udp`等,可以对 `lose-net-stack` 进行扩展 > > > > - (中级)添加 `lose-net-stack` `tcp` 支持 > > - (高级)添加 `lose-net-stack` `ipv6` 支持 > > - (中级)添加 `lose-net-stack` `icmp` 支持 > > > > 或者基于 `lose-net-stack` 编写相关的用例.(也可以使用 `smoltcp`) > > > > - (中级)基于 `lose-net-stack` 的 `dns` `client`(`udp` 协议) > > - (中级)基于 `lose-net-stack` 的 `ntp` `client`(`udp` 协议 网络时间协议,可以通过网络同步操作系统时间,可以补全很多个人编写的 `os` 时间不准或者不支持的问题。) > > > > ### UI类题目 > > > > 基于 `virtio-gpu` 在rcore-tutorial等 > > > > - (中级)利用字库显示文字(unicode) > > - `bmp` 文件的解析和显示 > > - `ico` 文件的解析和显示 > > - `jpg` 文件的解析和显示 > > - `png` 文件的解析和显示 > > > > - (高级)在有对图片的和字库的支持下,可以再结合 `virtio-input` 实现鼠标的移动和键盘输入的显示。 > > > > > > ### 设备驱动类题目 > > - (初级)支持virtio协议的各种虚拟外设/功能模块 > > - (中级)各种Qemu中模拟设备的驱动程序crate > > > > ### 操作系统类题目 > > - (初级)扩展/改进rcore-tutorial-v3,支持各种内核crates > > - (初级)扩展/改进rcore-tutorial-in-single-workspace,支持各种内核crates > > - (中级)扩展arceos等,形成unikernel形态,支持Linux系统调用和Linux应用程序。 > > - (高级)设计实现TPU/GPU/APU driver crate on rcore-tutorial..Rust for Linux,可运行在RISC-V or ARM开发板上 > > - (高级)扩展 Rust for Linux,更好地支持跨OS的内核相关crates > > - (高级)扩展 Rust for Linux on RISC-V 32/64 > > - (高级)扩展RVM,支持可调度/多核支持的Hypervisor,可运行在ARM上 > > - (高级)移植各种OS/Hypervisor在x86-64\RISC-V64/AARCH64\LoongArch上 > /yuchen@tsinghua.edu.cn /yuchen@tsinghua.edu.cn
请各位老师和同学参加今晚的周例会。
陈渝 邀请您参加腾讯会议 会议主题:陈渝预定的会议 会议时间:2023/02/16 20:00-21:00 (GMT+08:00) 中国标准时间 - 北京
点击链接入会,或添加至会议列表: https://meeting.tencent.com/dm/5iitJoi1qoRK
#腾讯会议:452-536-153
复制该信息,打开手机腾讯会议即可参与