- 博客(4)
- 资源 (18)
- 收藏
- 关注
原创 Linux 子进程pgd处理
进程创建 fork函数运行。copy_mm()--> dup_mmstatic struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p, struct user_namespace *user_ns){ mm->mmap = NULL; mm->mm_rb = RB_ROOT;
2018-02-07 10:56:58 1296
原创 Linux 内核页表初始化
前面我们讨论了页描述符对象分配,以及初始化。接下来我们再来了解内核页表建立初始化处理。针对ARM64进行。start_kernel --> setup_arch --> paging_init()void __init paging_init(void){ phys_addr_t pgd_phys = early_pgtable_alloc(); 分配页全局目录表地址
2018-02-07 10:31:24 1744
原创 Linux初始化页描述符对象
在前面我们讨论了内存节点node_mem_map成员的初始化。了解到此成员其实是以struct page为单位的数组,数组大小跟此节点内存大小相关,那么这些描述符是何时初始化呢,当前主要是在mem_init函数进行设置。start_kernel() --> mm_init --> mem_init()需要注意的是mem_init是跟体系结构相关的函数,比如针对ARM64的实现函数:
2018-02-07 10:12:05 840
原创 Linux内存管理之mem_map对象
在linux内核中,所有的物理内存都用struct page结构来描述,这些对象以数组形式存放,而这个数组的地址就是mem_map。内核以节点node为单位,每个node下的物理内存统一管理,也就是说在表示内存node的描述类型struct pglist_data中,有node_mem_map这个成员,其针对平坦型内存进行描述(CONFIG_FLAT_NODE_MEM_MAP),与此相反的是S
2018-02-07 09:53:46 9330 1
没有程序语言是完美的.甚至没有一个唯一最好的语言,只有对于特定目的,比较适合和不适合
2010-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人