总结与计划

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

总结

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

模块功能和特点
任务管理具有进程、内核线程、用户线程三种对象
内核统一调度内核线程和用户线程
采用多对多线程模型,一个协程执行器内核线程服务多个用户线程
支持互斥锁、信号量、管道等进程间通信
内存管理每个进程有独立的地址空间
切换进程时切换地址空间
所有用户线程共享内核栈
文件系统一个简易的文件系统
一切皆文件,将多种对象都抽象为文件
实现管道,命令行参数,重定向
异步管理利用协程实现多个异步系统调用
利用协程实现多对多线程模型
内核服务线程每个内核服务线程执行一种特定服务
用户通过系统调用向内核服务线程发送请求并获得服务
内核服务线程崩溃时系统保持稳定,并可以`重启恢复内核线程

目前实现的系统调用如下:

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

计划

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