[問題] 有關slab allocator和kmalloc的問題

看板LinuxDev作者 (larkes)時間13年前 (2012/04/21 04:28), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
最近在使用配置記憶體的功能, 有遇到一些問題, 問題如下: 1. 我對於kmem_cache_create的認知是: kernel在預設情況下會事先配置4k bytes(跟page size)的記憶體, 然後根據我們設定的object size, 決定要分割幾個object. 不知道我這樣的說法有無錯誤呢? 2. struct kmem *my_cache; my_cache = kmeme_cache_create("my_cache",800,0, SLAB_HWCACHE_ALIGN,NULL); printk(KERN_ALERT "my_cache->num:%d",my_cache->num); 我把object size設成800 bytes, 理論上my_cache->num顯示結果應該是5才對... 可是顯示結果卻是9, 之後我把object size調成500 bytes, 它顯示結果卻是7. 理論上應該要顯示8才對吧... 請問....為什麼會這樣子呢? my_cache->num, 它的數值結果要怎麼計算呢? 不過我把object size調到1000或2000的話,它分別顯示4和2, 這個結果是正確的. 3. 承上, 把object size調到1 byte的話, 再去顯示my_cache->num的值, 電腦馬上就當機了, 為什麼會當機呢? 4. 如果kmalloc的flag是GFP_USER, 應該就是指幫user application配置記憶區塊吧? 不知我這樣的說法有沒有錯誤呢? 如果沒有錯的話, 那它跟user application在用的malloc, 是不是功能都一樣呢? 都一樣是幫user application配置記憶區塊呢? 還麻煩請指教一下, 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.18.139

04/21 13:00, , 1F
最後一個問題直接去看malloc的實作會比較準吧..@@
04/21 13:00, 1F

04/22 17:23, , 2F
FLAG應該是指要以什麼態度來allocate吧
04/22 17:23, 2F
※ 編輯: larkes 來自: 59.120.179.172 (04/22 23:18)
文章代碼(AID): #1FaZTURR (LinuxDev)