当前位置: 首页 > article >正文

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)࿰


http://www.kler.cn/a/145211.html

相关文章:

  • 模型I/O
  • [HOT 100] 0003. 无重复字符的最长子串
  • SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门
  • Kafka常见问题之 org.apache.kafka.common.errors.RecordTooLargeException
  • 【ESP32】ESP-IDF开发 | WiFi开发 | TCP传输控制协议 + TCP服务器和客户端例程
  • arm-linux-gnueabihf安装
  • hdlbits系列verilog解答(exams/m2014_q4f)-47
  • 多维代码特征提取技术浅析
  • Vue环境的搭建
  • Python与设计模式--组合模式
  • Linux内核--内存管理(一)任务空间管理
  • 车载通信架构 —— 传统车内通信网络MOST总线(光纤传输、专精多媒体)
  • Mapper 编写有哪几种方式, 使用MyBatis的mapper接口调用时有哪些要求,接口绑定有两种实现方式, MyBatis高级查询
  • 优化前端性能
  • 在线音频视频剪辑网站推荐
  • ES6之class类
  • Typescript基础面试题 | 02.精选 ts 面试题
  • Liunx Ubuntu Server 安装配置 Docker
  • 串口通信基础知识介绍
  • JAVA编程规范-集合、并发(阿里手册)
  • A-莲子的软件工程学【算法必会题目】(JavaPythonC++实现)
  • 【深度学习】基于深度学习的超分辨率图像技术一览
  • CleanMyMac X好不好用?有哪些优势
  • 【ARM 嵌入式 编译系列 2.2 -- 如何在Makefile 中添加编译时间 | 编译作者| 编译 git id】
  • 信息素养大赛知识点
  • 决策树(第四周)