Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
educg-net-22023-2210132
project123-522
Commits
4810de25
Commit
4810de25
authored
1 year ago
by
M.H.W
Browse files
Options
Download
Patches
Plain Diff
文档的补充
parent
f05400e5
main
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+5
-6
README.md
with
5 additions
and
6 deletions
+5
-6
README.md
+
5
−
6
View file @
4810de25
...
...
@@ -327,37 +327,36 @@ private:
</div>
#### 结论
#### 1. 从所占用的内存来看。My_slab分配器比malloc分配器占用的内存要少。
My_slab分配器在较小的对象大小(8字节和16字节)时,比malloc节省了大量内存。这表明My_slab分配器在分配较小对象时有更好的内存布局和更少的碎片化。随着对象大小的增加,My_slab分配器和malloc的内存占用差距逐渐缩小,My_slab分配器在较大的对象(128字节)时稍微节省了一些内存。这表明My_slab分配器在处理中等到大型对象时效率相当。
#### 2. 从所需的时间来看(1000个对象),My_slab分配器在小对象的性能优于内核态的kmalloc和slab分配器。
对于较小的对象(16字节和32字节),My_slab分配器的性能优于内核态的kmalloc和slab分配器。而随着对象大小增加,My_slab分配器的性能开始下降,尤其是在256字节对象上,分配时间显著高于内核态的kmalloc和slab分配器。
#### 3. 从所需的时间来看(10000个对象),My_slab分配器小对象的性能优于内核态的slab分配器。
#### 3. 从所需的时间来看(10000个对象),My_slab分配器
在
小对象的性能优于内核态的slab分配器。
对于较小的对象(16字节、32字节和64字节),My_slab分配器的性能优于内核态的slab分配器。当对象大小增加到128字节和256字节时,My_slab分配器的性能显著下降,分配时间远高于内核态的slab分配器。
### 比赛收获
1.
课堂知识的运用
####
1. 课堂知识的运用
在这个项目中,我们将操作系统和其他专业课的知识综合运用于实践:
1)内存管理:运用了操作系统课程中学到的内存管理技术,特别是 slab 分配器的概念。slab 分配器是一种高效的内存分配算法,适用于频繁分配和释放小块内存。我们在实现 UserlandSlab 类和 ObjsCache 类时,充分应用了这些知识来管理对象的分配和释放。
2)数据结构:我们使用了链表结构来管理空闲和使用中的对象(Obj 类中的 Header 联合体),这依赖于数据结构课程中关于链表的知识。
3)算法设计:在设计 slab 分配器时,我们应用了算法课程中的分配和释放策略,通过优化对象的分配和释放流程,提高了内存使用效率和程序性能。
4)编程语言:运用了 C++ 的高级特性如类、构造函数、析构函数和函数对象(std::function),来实现对象的创建和销毁,以及定制的内存管理策略。
2.
提高了解决问题的能力
####
2. 提高了解决问题的能力
在参与这个项目的过程中,我们遇到了许多挑战和问题:
调试和错误修复:在实现过程中,我们不断地遇到编译错误和运行时错误,通过阅读错误信息、查阅文档、使用调试工具等方法,我们逐步解决了这些问题。这大大提高了我们分析问题、定位问题和解决问题的能力。
性能优化:我们对内存分配和释放的性能进行了优化,通过分析和测试,不断改进算法,提高了程序的效率。这培养了我们从多个角度考虑问题、优化代码的能力。
3.
提高了团队协作的能力
####
3. 提高了团队协作的能力
任务分工与协作:在项目初期,我们明确了每个成员的任务分工,并定期召开线上和线下会议讨论进展和遇到的问题。通过这种方式,我们学会了如何高效地分工协作。
代码审查和讨论:每个成员的代码提交后,我们会进行代码审查,通过互相交流和讨论,发现代码中的问题和改进点。这不仅提高了代码质量,也加强了团队成员之间的技术交流和理解。
文档撰写和维护:我们在项目过程中撰写了详细的设计文档和使用说明,这要求我们清晰准确地表达思路和实现细节,提高了书面沟通能力。
4.
学习到了新知识
####
4. 学习到了新知识
1)高级内存管理技术:通过实现 slab 分配器,我们深入理解了操作系统中的内存管理策略,以及如何在实际项目中应用这些技术。
2)C++ 高级特性:在项目中,我们深入使用了 C++ 的一些高级特性,如 std::function、类和对象的管理等,提高了我们对 C++ 语言的掌握和应用能力。
3)项目构建和管理:通过使用 Makefile,我们学习了如何自动化构建项目,管理项目的依赖关系和构建流程。
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets