系统设计和模块设计
Fusion采用了模块化的设计思想,将内存管理、异步运行时、任务调度、文件管理等功能模块独立出来,将各模块组合的核心代码放在kernel
目录中。保证了各功能模块的开发独立。
内存管理
- kmem:提供基本的内存管理功能,包括内存的分配和回收,维护内存使用的状态。
- kalloc:内核堆的分配器,使用
buddy_system_allocator
这个crate。
文件系统
- fs: Fusion的虚拟文件系统。
- io:抽象一个读写相关的数据结构trait
IO
。
- afat32:基于
rust-fatfs
,实现了支持异步和并发的FAT32文件系统。
系统调用
- ksc:定义和实现系统调用接口,使得用户程序能够请求操作系统提供的服务。
- ksync:提供同步机制,如信号量、互斥锁等,确保多进程/线程安全地访问共享资源。
- co-trap:处理系统中发生的各种异常和中断,确保系统稳定运行。
设备管理
- device:管理和控制硬件设备,提供设备驱动接口。
- hard-id:识别和管理系统中的硬件设备,确保设备能够被正确识别和使用。
其他模块
- art:异步运行时的执行器实现,支持任务窃取和软抢占调度。
- ktime:处理时间相关的数据结构,参考标准库中的
Instant
。
- sygnal:任务间信号通信机制。