Linux内核源码分析 (B.2)虚拟地址空间布局架构

Linux内核源码分析 (B.2)虚拟地址空间布局架构

文章目录

一、Linux内核整体架构及子系统

  • Linux内核只是操作系统当中的一部分,对下管理系统所有硬件设备,对上通过系统调用向Library Routine或其他应用程序提供API接口。

二、Linux内核内存管理架构

  • 内存管理可以通过以下三个维度进行介绍:
    • 用户空间
      • 相当于应用程序使用malloc()申请内存,通过free()释放内存。malloc()/free()glibc库的内存分配器ptmalloc提供的接口,ptmalloc使用系统调用brkmmap向内核以页为单位申请内存。
    • 内核空间
      • 虚拟内存管理负责从进程的虚拟地址空间分配虚拟页,sys_brk来扩大或收缩堆,sys_mmap用来在内存映射区域分配虚拟页,sys_munmap用来释放虚拟页。页分配器负责分配物理页,使用分配器是伙伴分配器。
      • 内核空间扩展功能,不连续页分配器提供分配内存的接口vmalloc和释放内存接口vfree。在内存碎片化的时候,申请连续物理页的成功率比较低,可以申请不连续的物理页,映射到连续的虚拟页,即虚拟地址连续而物理地址不连续。
      • 内存控制组用来控制进程占用的内存资源。当内存碎片化的时候,找不到连续的物理页,内存碎片整理过迁移方式得到连续的物理页。在内存不足的时候,页回收负责回收物理页。
    • 硬件
      • MMU包含一个页表缓存,保存最近使用过的页表映射,避免每次把虚拟地址转换为物理地址都需要查询内存中的页表。解决处理器执行速
        度和内存速度不匹配问题,中间增加一个缓存。一级缓存分为数据缓存和指令缓存。二级作用协调一级缓存和内存之间的工作效率。
  • 系统调用
相关推荐
AI浩14 小时前
【Labelme数据操作】LabelMe标注批量复制工具 - 完整教程
运维·服务器·前端
石像鬼₧魂石14 小时前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
sunxunyong14 小时前
doris运维命令
java·运维·数据库
Guheyunyi15 小时前
智慧消防管理系统如何重塑安全未来
大数据·运维·服务器·人工智能·安全
西陵15 小时前
为什么说 AI 赋能前端开发,已经不是选择题,而是必然趋势?
前端·架构·ai编程
椰子今天很可爱15 小时前
五种I/O模型与多路转接
linux·c语言·c++
国科安芯15 小时前
AS32S601型MCU芯片电源管理(PMU)模块详解
单片机·嵌入式硬件·性能优化·架构·risc-v
Lueeee.15 小时前
Linux kernel Makefile 语法
linux
六行神算API-天璇16 小时前
架构思考:大模型作为医疗科研的“智能中间件”
人工智能·中间件·架构·数据挖掘·ar
济南壹软网络科技有限公司16 小时前
企业级盲盒系统:Java高并发架构在多元化抽奖电商中的设计与实践
java·架构·开源源码·盲盒源码·盲盒h5·盲盒app