Linux內存管理中的數據結構和函數

物理內存相關

1.         typedef struct { unsigned long pgprot;}pgprot_t; 頁面保護結構

2.         _ _mk_pte(page_nr,pgprot); 計算頁面表項的內容

3.         set_pte(pteptr,pteval);頁面表項的值,填到頁面表項中去

4.         #define pte_none(x) (!(x).pte_low) 是否建立頁面映射

5.         pte_present(x)  0表示物理頁面不再內存中 下面的幾個函數當該函數返回1的時候有意義Pte_young, pte_write

6.         #define pte_page(x) (mem_map+((unsigned long)(((x).pte_low>>PAGE_SHIFT))))找到mem_map數據結構 mem_map是全局變量 相當於一個物理頁面數組

7.         #define virt_to_page(kaddr)(mem_map+(__pa(kaddr)>>PAGE_SHIFT)) 虛擬地址到page結構的轉換函數

8.         page:物理頁面描述結構 mem_map_t 其中的page_list鏈入swapper_spacepage_lru鏈入active_list

9.         free_area_struct 空閒區間 free_area_t

10.     管理區:zone_struct, zone_t  zone_t->offset 該分區再mem_map中的起始頁面號

11.     存儲節點的引入是由於NUMA的一如,是最高層機構,存儲節點至少有兩個管理區

Typedef struct pglist_data {…}pg_data_t

虛擬內存相關

1.         虛存區間 vm_area_struct ,變量名通常爲vma

2.         Vm_area_struct中的vm_mm指向一個mm_struct數據結構,變量名通常爲mmmm->segments爲指向該進程的局部段描述符表LDT

3.         Find_vma()找到一個包含addr的虛存頁面

4.         Insert_vm_struct向進程的虛擬頁面隊列中插入一個虛存頁面(linux內核的鏈表插入全採用的是雙重指針的思想)

5.         Swap_info_struct 相當於page結構

6.         Swap_entry_t 相當於pte_t結構

7.         SWP_TYPE(x) 頁面所在的文件

8.         SWP_OFFSET(x)頁面在文件中的偏移

9.         SWP_ENTRY(typeoffset)獲得swap_entry_t

10.     List_entry(隊列A,隊列元素B,元素中的某成員C) 從隊列中A(隊列是由B組成)中找到C所在的B結構對象。

11.     Derect_reclaim是否分配單個頁面,PF_MEMALLOC是否分配頁面的特權進程

12.     page由活躍變爲不活躍的標準1、首先是活躍的 2、普通文件的page->count<2 頁面文件的page->count<3  3、不能用作ramdisk

13.     一個kswaped進程的兩個任務:1、斷開部分頁面的映射 2、不活躍的頁面寫出

14.     Refill_active的兩個任務: 1、將active_list中的部分放入inactive_list 2、掃描進程,將合適進程的mm換出

15.     Slabkmem_cache_tslab隊列的控制結構,指針firstnotfull指向隊列頭時,它不指向任何一個slab,表示這個slab隊列由不含存在空想對象的slab

16.     函數slab_bufctl(slabp)改變字段free的值,使它指向下一個空閒隊列序號

17.     當隊列中的firstnotfull指向隊列頭時,kmem_cache_grow()分配增加一個slab

18.     Vm_struct數據結構是一個單鏈隊列,它是內核爲自己保持一個虛存區間的隊列

19.     系統調用brk(),向內核申請空間

20.     進程的數據段包括了所有分配的數據控件,包括爲全局變量和生命爲static的局部變量

21.     Brk()分配空間,動態分配區底部邊界上推,也可用來釋放歸還空間

22.     Do_munmap 釋放空間

23.     File->f_op->mmap,建立從該類文件到虛存區間的映射操作

24.     Inode->i_mapping 它指向一個address_space數據結構

25.     Address_space->a_ops 指向一個 address_space_operations數據結構

 

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