linux內(nèi)存管理理解
slab/kmalloc/vmalloc都是內(nèi)核分配虛擬地址空間的方法,不是物理地址的方法
本文引用地址:http://2s4d.com/article/201609/304178.htmget_free_page/allocate_page這些都是內(nèi)核分配物理空間的,但是最終又要重新映射為虛擬地址空間vremap
用戶態(tài)的虛擬地址空間的分配是new/malloc,最終都是要到內(nèi)核去分配
高速緩存
它保存的是虛擬地址到指令或者數(shù)據(jù)的映射關(guān)系,不是物理地址到指令和數(shù)據(jù)的映射
TLB
它保存的是虛擬地址到物理地址的轉(zhuǎn)換的緩存,也就是MMU轉(zhuǎn)換的緩存
這其中它可能采用的是組關(guān)聯(lián),全關(guān)聯(lián)等映射方法
頁(yè)表
內(nèi)核頁(yè)表和進(jìn)程頁(yè)表,在系統(tǒng)有很大的內(nèi)存的時(shí)候,不可能采用一級(jí)頁(yè)表,否則頁(yè)表占用的頁(yè)的數(shù)量太多,而且不一定都使用到,所以采用了多級(jí)頁(yè)表,類似段頁(yè),linux常用的是3級(jí)頁(yè)表。
評(píng)論