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

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

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

文章目录

  • Linux内核源码分析 (B.2)虚拟地址空间布局架构
  • 一、Linux内核整体架构及子系统
  • 二、Linux内核内存管理架构

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

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

二、Linux内核内存管理架构

在这里插入图片描述

  • 内存管理可以通过以下三个维度进行介绍:
    • 用户空间
      • 相当于应用程序使用malloc()申请内存,通过free()释放内存。malloc()/free()glibc库的内存分配器ptmalloc提供的接口,ptmalloc使用系统调用brkmmap向内核以页为单位申请内存。
    • 内核空间
      • 虚拟内存管理负责从进程的虚拟地址空间分配虚拟页,sys_brk来扩大或收缩堆,sys_mmap用来在内存映射区域分配虚拟页,sys_munmap用来释放虚拟页。页分配器负责分配物理页,使用分配器是伙伴分配器。
      • 内核空间扩展功能,不连续页分配器提供分配内存的接口vmalloc和释放内存接口vfree。在内存碎片化的时候,申请连续物理页的成功率比较低,可以申请不连续的物理页,映射到连续的虚拟页,即虚拟地址连续而物理地址不连续。
      • 内存控制组用来控制进程占用的内存资源。当内存碎片化的时候,找不到连续的物理页,内存碎片整理过迁移方式得到连续的物理页。在内存不足的时候,页回收负责回收物理页。
    • 硬件
      • MMU包含一个页表缓存,保存最近使用过的页表映射,避免每次把虚拟地址转换为物理地址都需要查询内存中的页表。解决处理器执行速
        度和内存速度不匹配问题,中间增加一个缓存。一级缓存分为数据缓存和指令缓存。二级作用协调一级缓存和内存之间的工作效率。
  • 系统调用
    在这里插入图片描述
http://www.lryc.cn/news/161376.html

相关文章:

  • Spring系列文章:Spring使用JdbcTemplate
  • [matlab]cvx安装后测试代码
  • 【css】margin:auot什么情况下失效
  • linux的dirty page回写磁盘过程中是否允许并发写入更新page?
  • Docker-基础命令使用
  • 【Python 程序设计】Python 中的类型提示【06/8】
  • 78 # koa 中间件的实现
  • 国产操作系统麒麟v10中遇到的一些问题
  • Gridea+GitPage+Gittalk 搭建个人博客
  • 代码质量保障第2讲:单元测试 - 浅谈单元测试
  • “五度晟企通”企业发展服务平台正式发布,帮扶企业行稳致远!
  • Java类和对象(七千字详解!!!带你彻底理解类和对象)
  • 机器学习笔记:node2vec(论文笔记:node2vec: Scalable Feature Learning for Networks)
  • go基础10 -字符串的高效构造与转换
  • VR钢铁实训 | 铁前事业部虚拟仿真培训软件
  • DevOps
  • IJ中PHP环境的搭建和使用教程
  • java开发之个人微信的二次开发
  • ISYSTEM调试实践11-Profiler Timeline和软件运行时间分析
  • 第十八章 ObjectScript - 使用例程
  • Linux中select poll和epoll的区别
  • 新知同享|Cloud 开发加速创新,更加安全
  • el-form内容重置(解决点击保存关闭后再点击新增会有编辑携带的数据的问题)
  • 怎样吃透一个java项目?
  • linux 网络命令
  • QUIC协议科普导入(一)
  • matlab 矩阵逆运算的条件数
  • [构建自己的 Vue 组件库] 小尾巴 UI 组件库
  • 由于电脑出现msvcr110.dll提示错误的解决方法
  • [LINUX使用] iptables tcpdump wireshark tshark