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

Linux内核学习小记-1

内存映射

在Linux系统中mmap来实现,该函数的原理包括以下几个关键步骤:

1、虚拟内存区域创建:系统首先在进程的虚拟地址空间中寻找一段满足要求的连续空闲虚拟地址,然后为这段虚拟地址分配一个vm_area_struct结构,这个结构用于描述虚拟内存区域的各种属性,

如起始地址、结束地址、权限等,并将其插入到进程的虚拟地址区域链表或树中;

2、地址映射建立:通过待映射的文件指针,找到对应的文件描述符,进而链接到内核 “已打开文件集” 中该文件的文件结构体。再通过这个文件结构体,调用内核函数mmap,定位到文件磁盘物理地址,

然后通过remap_pfn_range函数建立页表,实现文件物理地址和进程虚拟地址的一一映射关系;

3、数据加载就是缺页处理:

当进程首次访问映射区域中的数据时,由于数据还未在物理内存中,会触发缺页异常。内核会捕获这个异常,然后在交换缓存空间(swap cache)中寻找需要访问的内存页,如果没有找到,则调用nopage函数把所缺的页从磁盘装入到主存中 。


slab分配器

slab 分配器的工作机制基于对象复用和缓存技术。它预先分配一组相同大小的内存块,将这些内存块组成一个缓存(Cache),每个缓存专门用

http://www.dtcms.com/a/241977.html

相关文章:

  • 【Linux网络编程】网络通信初步认识 重要套接字接口
  • 联邦学习聚合参数操作详解
  • 【K8S】k8s中node和pod的区别
  • K8S认证|CKS题库+答案| 11. AppArmor
  • 【C++】26. 哈希扩展1—— 位图
  • k8s从入门到放弃之Ingress七层负载
  • 快速理解AI Agent、Agentic AI和Multi Agent Systems之间的区别
  • ARM 单片机定义变量绝对地址方法
  • dMSA 滥用(BadSuccessor)导致权限提升
  • crosstool-ng构建sysroot
  • RPC调用三 使用代理进行服务自动注册
  • 清华大学视觉空间智能新突破!Spatial-MLLM:提升多模态大语言模型的视觉空间智能能力
  • Remmina远程访问如何开启本地音频?
  • 论文解析:一文弄懂ResNet(图像识别分类、目标检测)
  • 高效多尺度网络与可学习离散小波变换用于盲运动去模糊
  • 守护数字世界:网络安全核心技术与实践策略
  • 进程间通信详解(二):System V IPC 三件套全面解析
  • ABP vNext + Hive 集成:多租户大数据 SQL 查询与报表分析
  • 到院率最高提升40%,消费医疗用AI营销机器人跑赢增长焦虑
  • MySQL中event突然不执行问题分析
  • C++ 8.1 内联函数
  • 如何使用 DeepSeek 帮助自己的工作
  • 深入解析MySQL锁机制:从全局锁到行级锁的全面指南
  • Uniapp如何适配HarmonyOS5?条件编译指南以及常见的错误有哪些?
  • DAY47打卡
  • 常见算法题目6 - 给定一个字符串,输出其最长的回文子串
  • 多场景 OkHttpClient 管理器 - Android 网络通信解决方案
  • 用户体验升级:表单失焦调用接口验证,错误信息即时可视化
  • 111页可编辑精品PPT | 华为业务变革框架及战略级项目管理华为数字化转型方法论
  • 不同类型的道路运输安全员证书(如公路、水路、联运)考试内容有何区别?