做點筆記好了
- 在 mmu-less 的CPU上, malloc()無法以 sbrk/brk 來implement
- uclinux目前的做法是用 mmap() 直接向 kernel global pool要
- 用mmap有兩個問題,
- 每個memory block, 要花56 bytes來booking, 對作許多次 small allocation的app來說並不划算
- 標準kernel allocator, 每次配置size 是以二的乘方為單位, 比如要33k, 會直接給64k
uclinux提出新的allocator, Kmalloc2, 特色如下
為了避免fragmentation, 小於8kb從尾端 allocate, 大於8kb的block則從前端allocate
沒有留言:
張貼留言