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

Linux内核学习小记-1

内存映射

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

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

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

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

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

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

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


slab分配器

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

相关文章:

  • 【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突然不执行问题分析
  • 怎么在vk网站上做推广/重庆森林在线观看
  • 温州做外贸网站/加强服务保障 满足群众急需需求
  • 网站建设定制开发价格/seo优化教程培训
  • 徐州招标投标信息网/志鸿优化设计
  • 网站建设的公司/软件开发自学步骤
  • 建立相适应的政府债务管理机制/seo快速排名是什么