总结与计划

NUDT-OS目前只是一个简单的类UNIX系统,采用混合内核架构,本章简要总结已实现的各模块功能和特点,并给出后续的拓展方向和计划。

总结

NUDT-OS是一个x86_64架构的,使用Rust实现的64位分时多任务操作系统。试图平衡微内核性能低于宏内核可靠性低的问题,我们采用基于内核线程的混合内核架构,目前运行在单核CPU上,主要实现的模块和特点总结如下:

模块功能和特点
任务管理具有进程、内核线程、用户线程三种对象
内核统一调度内核线程和用户线程
采用多对一线程模型,一个协程执行器内核线程服务多个用户线程
支持互斥锁、信号量
内存管理每个进程有独立的地址空间
切换进程时切换地址空间
文件系统一个简易的文件系统
一切皆文件,将多种对象都抽象为文件
实现管道,命令行参数,重定向
异步管理实现异步系统调用
利用协程实现多对一线程模型

目前总共实现了24个系统调用,如下:

  • 任务管理类:
    • fork:复制当前进程
    • exec:当前进程加载可执行文件
    • waitpid:等待子进程结束并回收子进程资源
    • getpid:获取进程号
    • gettid:获取线程号
    • waittid:等待线程结束
    • thread_create:创建用户线程
    • kthread_req:向内核线程发送请求
    • exit:线程退出
    • sleep:线程睡眠
    • yield:线程放弃CPU,主动调度
    • get_time:获取系统时钟数
  • 文件类:
    • dup:复制文件描述符
    • open:打开文件
    • close:关闭文件
    • pipe:创建管道
    • read:从文件读取
    • write:向文件写入
  • 同步互斥:
    • mutex_create:创建互斥锁
    • mutex_lock:互斥锁上锁
    • mutex_unlock:互斥锁解锁
    • semaphore_create:创建信号量
    • semaphore_up:增加信号量资源
    • semaphore_down:减少信号量资源

计划

  • 添加多核支持
  • 实现更完善的文件系统
  • 添加更多内核线程
  • 添加C语言用户程序支持
  • 添加更多设备驱动