分配task struct時分配頁面的大小的問題

2021-05-28 18:27:10 字數 577 閱讀 2692

#define thread_size (page_size << thread_size_order)

#define thread_size_order    1

thread_size定義為兩個頁面來表示乙個核心執行緒

#define alloc_task_struct_node(node)                        \

({                                        \

struct page *page = alloc_pages_node(node, gfp_kernel | __gfp_comp,    \

kernel_stack_size_order);        \

struct task_struct *ret = page ? page_address(page) : null;        \

\ret;                                    \

#define kernel_stack_size_order      3

但是為什麼在分配任務節點時分配的是8個頁面呢?

slab分配器分配task struct結構

linux通過slab分配器分配task struct結構,這樣能達到物件復用和快取著色的目的 分配和釋放資料結構是所有核心中最普遍的操作之一。為了便於資料的頻繁分配和 程式設計者常常會用到乙個空閒鍊錶。該空閒鍊錶包含可供使用的 已經分配好的資料結構塊。當 需要乙個新的資料結構例項時,就可以從空閒鍊...

臨時分配做測試

這個星期都在做測試,其實說是做測試,更多的就是學習這個工具,macro scheduler,官方 是http www.mjtnet.com resources.htm,我作為唯一乙個實習生,被編配進測試組裡面,我們的任務,主要其實還是學習這個工具,因為大家都沒用過,所以如果有用,提前掌握了,就是公司...

C 執行時分配記憶體和編譯時分配記憶體的區別

c 記憶體管理詳解 記憶體分配方式簡介 在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。棧,在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量...