求教:uC/OS-II内存管理在实际使用中的问题
uC/OS-II的内存管理中创建的内存块大小都是一样的大小.
如果都块大小是100.
而我们在申请内存的时候使用大小为20的情况加多,这样就会导致内存的使用效率不高
如果定义块大小为20.
那么在使用到大块的数据内存就没办法调用内核函数.
是否有办法创建内存池的时候可以自己定义内存块大小和数目.
如:
大小为20的50块.
大小为100的10块
大小为1000的为2块.
.......
求高手指点下,最好能有源码.谢谢!
uC/OS-II的内存管理中创建的内存块大小都是一样的大小.
如果都块大小是100.
而我们在申请内存的时候使用大小为20的情况加多,这样就会导致内存的使用效率不高
如果定义块大小为20.
那么在使用到大块的数据内存就没办法调用内核函数.
是否有办法创建内存池的时候可以自己定义内存块大小和数目.
如:
大小为20的50块.
大小为100的10块
大小为1000的为2块.
.......
求高手指点下,最好能有源码.谢谢!
UCOS2内存管理的内核代码我也没有仔细研究过,只是阅读过一些书籍,了解过它的外部特性,内存管理实现的思想也知道一些。具体的细节性问题不敢瞎说,只是依感觉,你找找相关的资料,说不定在那个config的配置文件中有的。代码上,你顺着malloc这个函数往底层找相关内存块大小的代码。
UCOS2确实用的人很多,一般的需求都是可以满足的,至少有些需求转个弯也还是可以满足的。实在不行,Missque提供的资料也可以参考一下,换个OS也可以趁机会扩展一下眼界和思路。希望能帮到你。
自己改写ucos会很复杂,而且ucos本身架构设计的时候并没有设计成可变内存块
推荐你换一个操作系统,uTenux可以有可变内存池的功能,能实现你要效果