DragonOS
DragonOS copied to clipboard
【重构】内存管理模块
简介
由于之前的内存管理模块是C写的,并且代码比较emm难以描述的丑,以及没有考虑到处理器架构可移植性的问题,因此我们从4月开始对它进行重构。
重构的代码在patch-refactor-mm分支。可以在代码搜索引擎中查看:https://opengrok.ringotek.cn/xref/DragonOS-patch-refactor-mm/
内存管理重构目前已经接近尾声,主要是在调试各种bug.
工作计划
| 内容 | 开发 | 测试 | 合并dev分支 | 负责人 |
|---|---|---|---|---|
| bump分配器 | ✅ | ✅ | ✅ | @kkkkkong mailto: [email protected] |
| buddy分配器 | ✅ | ✅ | ✅ | @kkkkkong mailto: [email protected] @fslongjin mailto: [email protected] |
| slab分配器 | ✅ | @kkkkkong mailto: [email protected] | ||
| 硬件抽象层 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
| 内核空间映射管理 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
| 用户空间映射管理 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
| 系统调用层 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
| 新的二进制程序加载器 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
| C兼容层 | ✅ | ✅ | ✅ | @fslongjin mailto: [email protected] |
涉及的帖子
- 内存管理模块重构方案 https://bbs.dragonos.org/forum.php?mod=viewthread&tid=72&extra=page%3D1
- 地址映射管理及VMA机制设计 https://bbs.dragonos.org/forum.php?mod=viewthread&tid=76&extra=page%3D1
目前还有以下的地方没有改好/测好/添加到relibc.
- slab分配器
- mremap还没接上
- mmap系统调用
- munmap系统调用
- procfs对mm的处理: hiwater_vm
- buddy的usage统计功能
经过测试,以下系统调用正常:
- mmap(暂时不支持文件映射)
- munmap
- mprotect
原先重构的时候写了slab,但是未经测试,可以考虑移植开源的slab
https://github.com/DragonOS-Community/DragonOS/issues/523