
读书笔记之深入理解Linux虚拟内存管理
New_Worms
这个作者很懒,什么都没留下…
展开
-
mlock函数的2.4内核实现
Linux可以通过系统调用mlock()锁住给定地址范围的内存。由sys_mlock()=>do_mlock()函数实现。 1、创建VMA. 2、设置VM_LOCKED. 3、make_pages_present()函数保证所有的页都在内存中。 与之相对应的解锁函数: munlock()由sys_munlock实现。 与之类似的一对函数: mlockall()和munlockall()。只不过mlockall()实现对线程内所有的vma的锁定。 ...原创 2020-05-22 06:36:51 · 852 阅读 · 0 评论 -
第二章 描述物理内存(Describing Physical Memory)
This chapter describes the structrures used to keep account of memory banks(nodes), pages and flags that affect VM behavior. Node: typedef struct pglist_data { ____zone_t node_zones[MAX_NR_ZONES];...原创 2020-06-01 06:10:59 · 279 阅读 · 0 评论 -
第四章 进程地址空间(Process Address Space)
第四章主要讨论如下问题: 1、线性地址空间的构成及其各个部分的用途。(4.1) 2、与进程相关的结构mm_struct以及mm_struct的配置、初始化和释放。(4.2,4.3) 3、如何创建进程地址空间中的私有区域以及与之相关的函数,同时涉及到与进程相关的异常处理、缺页中断等。 4、介绍内核与用户空间之间如何相互正确地拷贝数据。 4.1 Linear Address Space ...原创 2020-02-08 22:38:36 · 712 阅读 · 0 评论 -
第三章 页表管理(Page Table Management)
3.7 地址和struct page之间的映射 Linux使用mem_map全局数组,实现快速虚拟地址到物理地址的映射(或者struct page 映射到他们的物理地址)。 在x86中,Linux把从0开始的物理地址直接映射成从PAGE_OFFSET(3G)开始的虚拟地址。 #define __PAGE_OFFSET_______(0xC0000000) #define __pa(x)__...原创 2020-02-07 16:22:43 · 1349 阅读 · 0 评论