系统设计和模块设计

2024-05-27

最后编辑于:2024-09-15

    #OS
    #Fusion
    #RISC-V

系统设计和模块设计

Fusion采用了模块化的设计思想,将内存管理、异步运行时、任务调度、文件管理等功能模块独立出来,将各模块组合的核心代码放在kernel目录中。保证了各功能模块的开发独立。

arch

内存管理

  • kmem:提供基本的内存管理功能,包括内存的分配和回收,维护内存使用的状态。
  • kalloc:内核堆的分配器,使用buddy_system_allocator这个crate。

文件系统

  • fs: Fusion的虚拟文件系统。
  • io:抽象一个读写相关的数据结构traitIO
  • afat32:基于rust-fatfs,实现了支持异步和并发的FAT32文件系统。

系统调用

  • ksc:定义和实现系统调用接口,使得用户程序能够请求操作系统提供的服务。
  • ksync:提供同步机制,如信号量、互斥锁等,确保多进程/线程安全地访问共享资源。
  • co-trap:处理系统中发生的各种异常和中断,确保系统稳定运行。

设备管理

  • device:管理和控制硬件设备,提供设备驱动接口。
  • hard-id:识别和管理系统中的硬件设备,确保设备能够被正确识别和使用。

其他模块

  • art:异步运行时的执行器实现,支持任务窃取和软抢占调度。
  • ktime:处理时间相关的数据结构,参考标准库中的Instant
  • sygnal:任务间信号通信机制。