总结与计划
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语言用户程序支持
- 添加更多设备驱动