Linux内存管理初探

    linux内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍linux内存组织结构和页面布局,内存碎片产生原因和优化算法,linux内核几种内存管理的方法,内存使用场景以及内存使用的那些坑。从内存的原理和结构,到内存的算法优化,再到使用场景,去探寻内存管理的机制和奥秘。

一、走进 linux 内存

1、内存是什么?

  1) 内存又称主存,是CPU能直接寻址的存储空间,由半导体器件制成

  2) 内存的特点是存取速率快

  

2.内存的作用

  1) 暂时存放cpu的运算数据

  2) 硬盘等外部存储器交换的数据

  3) 保障cpu计算的稳定性和高性能

二、linux内存地址空间

1、linux内存地址空间Linux内存管理全貌

  

2、内存地址--用户态&内核态

  • 用户态: Ring3运行于用户态的代码则要受到处理器的诸多
  • 内核态: Ring0在处理器的存储保护中,核心态
  • 用户态切换到内核态的3种方式: 系统调用、异常、外设中断
  • 区别: 每个进程都有完全属于自己的,独立的,不被干扰的内存空间;用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用;内核态线程共享内核地址空间;

3、内存地址--MMU地址转换

  • MMU是一种硬件电路,它包含两个部件,一个是分段部件,一个是分页部件
  • 分段机制把一个逻辑地址转换为线性地址
  • 分页机制把一个线性地址转换为物理地址