YueOS 重构日志 - 内存管理
内存管理
每个进程可支配的全部内存空间有下述几个部分构成:
-
全局堆
系统初始化时,由系统维护的堆空间。 -
全局池
系统初始化时,由系统维护的内存池。 -
进程堆
在进程初始化时,由用户手动指定指定的堆空间。(可留空) -
进程栈
在进程初始化时,由用户手动指定指定的栈空间。
全局堆
全局堆中的内存块是尽可能紧密排布的,使用时需要对链表进行逐块搜索,这使得其申请与释放较为复杂。
为了解决这一问题而提出了全局池。
全局池
全局池是一系列提前划分好的内存块,当进程申请时,可以快速的分配这些块给进程使用。
但是,内存块分配的多了会占用大量空间,分配少了会使进程无法获得资源。且其无法根本上解除对内存资源的争抢问题,因为其入口仍然是单一的,于是在此基础上提出了进程堆。
进程堆
进程堆是由该进程独享的堆空间,永远不会出现资源竞争。进程堆可以不分配,有些进程是不需要堆的,因此硬性要求堆的分配是不合理的。但若某个进程有着频繁的空间申请行为时,应该为这个进程分配专有的进程堆。
但要注意的是,进程堆并不是一个静态堆,其本身可以 由 GC 进行管理。
进程栈
额… 应该不用解释了吧。
GC
GC 是一项可选功能,旨在为优化单片机的内存碎片化。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Reglucis 的博客!
