slab分配器分配task_struct結構

Linux通過slab分配器分配task_struct結構,這樣能達到對象複用和緩存着色的目的


分配和釋放數據結構是所有內核中最普遍的操作之一。爲了便於數據的頻繁分配和回收,編程者常常會用到一個空閒鏈表。該空閒鏈表包含可供使用的、已經分配好的數據結構塊。當代碼需要一個新的數據結構實例時,就可以從空閒鏈表中取出一個,而不需要分配內存、再把數據放進去。以後,當不再需要這個數據結構的實例時,就把它放回空閒鏈表、而不是釋放掉它。從這個意義上說,空閒鏈表相當於對象高速緩存以便快速存儲頻繁使用的對象類型。


在內核中,空閒鏈表面臨的主要問題之一就是不能全局控制。當內存變的緊缺時,內核無法通知每個空閒鏈表,讓其收縮緩存大小以便釋放出一些內存來。實際上,內核根本就不知道存在任何空閒鏈表。爲了彌補這一缺陷,也爲了使代碼更加穩固,linux內核提供了slab層。slab分配器扮演了通用數據結構緩存層的角色。


對存放的對象進行着色,以防止多個對象映射到相同的高速緩存行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章