Linux之物理页面的分配
生活随笔
收集整理的這篇文章主要介紹了
Linux之物理页面的分配
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Linux中存儲(chǔ)空間按連續(xù)與否可分為連續(xù)存儲(chǔ)空間和不連續(xù)存儲(chǔ)空間。連續(xù)存儲(chǔ)空間以UMA為代表,非連續(xù)存儲(chǔ)空間以NUMA為代表。在內(nèi)核中,通過條件編譯選擇項(xiàng)CONFIG_DISCONTIGMEM可以選擇不同類型的存儲(chǔ)空間。針對不同的存儲(chǔ)空間,Linux內(nèi)核有不同的alloc_pages()函數(shù)以供調(diào)用,以實(shí)現(xiàn)物理頁面的分配。
Linux中物理頁面分配的主函數(shù)為:struct page * alloc_pages(int gfp_mask, unsigned long order)
先考慮NUMA結(jié)構(gòu)的存儲(chǔ)空間。我們知道,NUMA結(jié)構(gòu)的存儲(chǔ)空間有不同的存儲(chǔ)節(jié)點(diǎn)(pg_data_t),每個(gè)存儲(chǔ)節(jié)點(diǎn)有多個(gè)不同類型的存儲(chǔ)管理區(qū)(最多3個(gè)),而每個(gè)存儲(chǔ)管理區(qū)又管理多個(gè)連續(xù)的物理頁面。如果有進(jìn)程要求分配頁面,則依次在由存儲(chǔ)節(jié)點(diǎn)構(gòu)成的單鏈表中嘗試分配2的order次冪頁面?zhèn)€數(shù),如果成功就返回申請成功的頁面塊的首個(gè)頁面結(jié)構(gòu)的地址。
相對于UMA結(jié)構(gòu)的存儲(chǔ)空間,其頁面分配就相對簡單多了。它只有一個(gè)存儲(chǔ)節(jié)點(diǎn),只需在該節(jié)點(diǎn)的各個(gè)存儲(chǔ)管理區(qū)上去獲取2的order次冪頁面?zhèn)€數(shù)即可。
Linux中物理頁面分配的主函數(shù)為:struct page * alloc_pages(int gfp_mask, unsigned long order)
先考慮NUMA結(jié)構(gòu)的存儲(chǔ)空間。我們知道,NUMA結(jié)構(gòu)的存儲(chǔ)空間有不同的存儲(chǔ)節(jié)點(diǎn)(pg_data_t),每個(gè)存儲(chǔ)節(jié)點(diǎn)有多個(gè)不同類型的存儲(chǔ)管理區(qū)(最多3個(gè)),而每個(gè)存儲(chǔ)管理區(qū)又管理多個(gè)連續(xù)的物理頁面。如果有進(jìn)程要求分配頁面,則依次在由存儲(chǔ)節(jié)點(diǎn)構(gòu)成的單鏈表中嘗試分配2的order次冪頁面?zhèn)€數(shù),如果成功就返回申請成功的頁面塊的首個(gè)頁面結(jié)構(gòu)的地址。
相對于UMA結(jié)構(gòu)的存儲(chǔ)空間,其頁面分配就相對簡單多了。它只有一個(gè)存儲(chǔ)節(jié)點(diǎn),只需在該節(jié)點(diǎn)的各個(gè)存儲(chǔ)管理區(qū)上去獲取2的order次冪頁面?zhèn)€數(shù)即可。
轉(zhuǎn)載于:https://blog.51cto.com/stonehorse/1143091
總結(jié)
以上是生活随笔為你收集整理的Linux之物理页面的分配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL Workbench的使用教程
- 下一篇: Linux命令之cd