mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 02:46:47 +00:00
  实现了具有优秀架构设计的新的内存管理模块,对内核空间和用户空间的内存映射、分配、释放、管理等操作进行了封装,使得内核开发者可以更加方便地进行内存管理。   内存管理模块主要由以下类型的组件组成: - **硬件抽象层(MemoryManagementArch)** - 提供对具体处理器架构的抽象,使得内存管理模块可以在不同的处理器架构上运行 - **页面映射器(PageMapper)**- 提供对虚拟地址和物理地址的映射,以及页表的创建、填写、销毁、权限管理等操作。分为两种类型:内核页表映射器(KernelMapper)和用户页表映射器(位于具体的用户地址空间结构中) - **页面刷新器(PageFlusher)** - 提供对页表的刷新操作(整表刷新、单页刷新、跨核心刷新) - **页帧分配器(FrameAllocator)** - 提供对页帧的分配、释放、管理等操作。具体来说,包括BumpAllocator、BuddyAllocator - **小对象分配器** - 提供对小内存对象的分配、释放、管理等操作。指的是内核里面的SlabAllocator (SlabAllocator的实现目前还没有完成) - **MMIO空间管理器** - 提供对MMIO地址空间的分配、管理操作。(目前这个模块待进一步重构) - **用户地址空间管理机制** - 提供对用户地址空间的管理。 - VMA机制 - 提供对用户地址空间的管理,包括VMA的创建、销毁、权限管理等操作 - 用户映射管理 - 与VMA机制共同作用,管理用户地址空间的映射 - **系统调用层** - 提供对用户空间的内存管理系统调用,包括mmap、munmap、mprotect、mremap等 - **C接口兼容层** - 提供对原有的C代码的接口,是的C代码能够正常运行。 除上面的新增内容以外,其它的更改内容: - 新增二进制加载器,以及elf的解析器 - 解决由于local_irq_save、local_irq_restore函数的汇编不规范导致影响栈行为的bug。 - 解决local_irq_save未关中断的错误。 - 修复sys_gettimeofday对timezone参数的处理的bug --------- Co-authored-by: kong <kongweichao@dragonos.org>
147 lines
2.9 KiB
Markdown
147 lines
2.9 KiB
Markdown
(_genreal_features)=
|
||
|
||
# DragonOS的功能
|
||
|
||
## 规范
|
||
|
||
- [x] 启动引导:Multiboot2
|
||
|
||
- [x] 接口:posix 2008
|
||
|
||
## 内核层
|
||
|
||
### 内存管理
|
||
|
||
- [x] 页帧分配器
|
||
- [x] 小对象分配器
|
||
- [x] VMA
|
||
- [x] MMIO地址空间自动分配
|
||
- [x] 页面映射器
|
||
- [x] 硬件抽象层
|
||
- [x] 独立的用户地址空间管理机制
|
||
- [x] C接口兼容层
|
||
|
||
### 多核
|
||
|
||
- [x] 多核引导
|
||
- [x] ipi框架
|
||
|
||
### 进程管理
|
||
|
||
- [x] 进程创建
|
||
- [x] 进程回收
|
||
- [x] 内核线程
|
||
- [x] fork
|
||
- [x] exec
|
||
- [x] 进程睡眠(支持高精度睡眠)
|
||
- [x] kthread机制
|
||
- [x] 可扩展二进制加载器
|
||
|
||
#### 同步原语
|
||
|
||
- [x] mutex互斥量
|
||
- [x] semaphore信号量
|
||
- [x] atomic原子变量
|
||
- [x] spinlock自旋锁
|
||
- [x] wait_queue等待队列
|
||
|
||
### 调度
|
||
|
||
- [x] CFS调度器
|
||
- [x] 实时调度器(FIFO、RR)
|
||
- [x] 单核调度
|
||
- [x] 多核调度
|
||
- [x] 负载均衡
|
||
|
||
### IPC
|
||
|
||
- [x] 匿名pipe管道
|
||
- [x] signal信号
|
||
|
||
### 文件系统
|
||
|
||
- [x] VFS
|
||
- [x] fat12/16/32
|
||
- [x] Devfs
|
||
- [x] RamFS
|
||
- [x] Procfs
|
||
- [x] Sysfs
|
||
|
||
### 异常及中断处理
|
||
|
||
- [x] APIC
|
||
- [x] softirq 软中断
|
||
- [x] 内核栈traceback
|
||
|
||
### 内核数据结构
|
||
|
||
- [x] 普通二叉树
|
||
- [x] kfifo缓冲区
|
||
- [x] 循环链表
|
||
- [x] IDR
|
||
|
||
### 内核实用库
|
||
|
||
- [x] LZ4压缩库(1.9.3)
|
||
- [x] 字符串操作库
|
||
- [x] ELF可执行文件支持
|
||
- [x] printk
|
||
- [x] 基础数学库
|
||
- [x] 屏幕管理器
|
||
- [x] textui框架
|
||
- [x] CRC函数库
|
||
|
||
### 系统调用
|
||
|
||
  [请见系统调用文档](https://docs.dragonos.org/zh_CN/latest/syscall_api/index.html)
|
||
|
||
### 测试框架
|
||
|
||
- [x] ktest
|
||
|
||
### 驱动程序
|
||
|
||
- [x] ACPI 高级电源配置模块
|
||
- [x] IDE硬盘
|
||
- [x] AHCI硬盘
|
||
- [x] PCI、PCIe总线
|
||
- [x] XHCI(usb3.0)
|
||
- [x] ps/2 键盘
|
||
- [x] ps/2 鼠标
|
||
- [x] HPET高精度定时器
|
||
- [x] RTC时钟
|
||
- [x] local apic定时器
|
||
- [x] UART串口
|
||
- [x] VBE显示
|
||
- [x] VirtIO网卡
|
||
- [x] x87FPU
|
||
- [x] TTY终端
|
||
- [x] 浮点处理器
|
||
|
||
|
||
## 用户层
|
||
|
||
### LibC
|
||
|
||
- [x] 基础系统调用
|
||
- [x] 基础标准库函数
|
||
- [x] 部分数学函数
|
||
|
||
### shell命令行程序
|
||
|
||
- [x] 基于字符串匹配的解析
|
||
- [x] 基本的几个命令
|
||
|
||
### Http Server
|
||
|
||
- 使用C编写的简单的Http Server,能够运行静态网站。
|
||
|
||
## 软件移植
|
||
|
||
- [x] GCC 11.3.0 (暂时只支持了x86_64的Cross Compiler)[https://github.com/DragonOS-Community/gcc](https://github.com/DragonOS-Community/gcc)
|
||
- [x] binutils 2.38(暂时只支持了x86_64的Cross Compiler)[https://github.com/DragonOS-Community/binutils](https://github.com/DragonOS-Community/binutils)
|
||
- [x] gmp 6.2.1 [https://github.com/DragonOS-Community/gmp-6.2.1](https://github.com/DragonOS-Community/gmp-6.2.1)
|
||
- [x] mpfr 4.1.1 [https://github.com/DragonOS-Community/mpfr](https://github.com/DragonOS-Community/mpfr)
|
||
- [x] mpc 1.2.1 [https://github.com/DragonOS-Community/mpc](https://github.com/DragonOS-Community/mpc)
|
||
- [x] relibc [https://github.com/DragonOS-Community/relibc](https://github.com/DragonOS-Community/relibc)
|