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数据结构

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值