Linux内核--内存管理(十二)内存映射

目录

一、引言
二、用户态内存映射
------>2.1、小块内存申请
------>2.2、大内存块申请
三、用户态缺页异常
------>3.1、匿名页映射
------>3.2、文件映射
------>3.3、页交换
四、内核态内存映射及缺页异常
五、总结

一、引言

内存映射不仅是物理内存和虚拟内存间的映射,也包括将文件中的内容映射到虚拟内存空间。这个时候,访问内存空间就能够访问到文件里面的数据。
本文首先分析用户态在堆中申请小块内存的brk和申请大块内存的mmap,之后会分析内核态的内存映射机制vmalloc,kmap_atomic,swapper_pg_dir以及内核态缺页异常。

二、用户态内存映射

用户态调用malloc()会分配堆内存空间,而实际上则是完成了一次用户态的内存映射,根据分配空间的大小,内存映射对应的系统调用主要有brk()和mmap()(当然我们也可以直接调用mmap()来映射文件)。对小块内存(小于 128K),C 标准库使用 brk() 来分配,也就是通过移动堆顶的位置来分配内存。这些内存释放后并不会立刻归还系统,而是被缓存起来,这样就可以重复使用。而大块内存(大于 128K)࿰

你可能感兴趣的:(CPU性能分析与操作系统的构建,linux,java,spring)