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包含一个页表缓存,保存最近使用过的页表映射,避免每次把虚拟地址转换为物理地址都需要查询内存中的页表。解决处理器执行速
        度和内存速度不匹配问题,中间增加一个缓存。一级缓存分为数据缓存和指令缓存。二级作用协调一级缓存和内存之间的工作效率。
  • 系统调用
相关推荐
李少兄3 分钟前
深入解析 Nginx 413 Request Entity Too Large 错误
运维·nginx
青主创享阁4 分钟前
玄晶引擎:基于多模态大模型的全流程AI自动化架构设计与落地实践
运维·人工智能·自动化
国科安芯5 分钟前
永磁同步电机驱动控制系统中MCU的抗干扰设计
单片机·嵌入式硬件·性能优化·架构·安全性测试
天才奇男子13 分钟前
LVS原理及部署
linux·运维·云原生·wpf·lvs·linux chrony
学习3人组15 分钟前
Docker run 挂载本地两个目录到容器内的写法(核心规则+实操示例)
运维·docker·容器
梁洪飞20 分钟前
内核启动卡死在Starting kernel ...,没有任何打印如何定位
linux·arm开发·嵌入式硬件·arm
321.。28 分钟前
深入理解 Linux 线程封装:从 pthread 到 C++ 面向对象实现
linux·开发语言·c++
EmbedLinX32 分钟前
Linux内核之文件系统:从VFS到实际存储的运作机制
linux·服务器·c语言·c++
实心儿儿32 分钟前
Linux —— 进程概念 - 初识进程
linux·运维·服务器
weixin_4624462337 分钟前
Linux/Mac 一键自动配置 JAVA_HOME 环境变量(含 JDK 完整性校验)
java·linux·macos