| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> linux内核源码分析之内存概述 -> 正文阅读 |
|
[系统运维]linux内核源码分析之内存概述 |
目录 内存相关术语主存:也称为物理内存,描述计算机的高速数据存储区域,通常是动态随机访问内存(DRAM) 虚拟内存:抽象的主存概念 常驻内存:当前处于主存中的内存 匿名内存:无文件系统或者路径名的内存,它包括进程地址空间的工作数据,称作堆 地址空间:内存上下文。 段:标记为特殊用途的一块内存区域,例如用来存储可执行或者可写的页 OOM:内存耗尽,内核检测到可用内存低 页:操作系统和CPU使用的内存单位。4kB或者8kB 缺页:无效内存访问,使用按虚拟内存时,这是正常事件 换页:在主存与存储设备间交换页。 交换:页面转移到交换设备 CPU 缓存: ????????处理器通常在芯片中包含硬件缓存以提高内存访问性能,这些缓存可能包含如下级别
一级缓存通常按虚拟内存地址空间寻址,二级及以上按物理内存地址寻址,具体取决于处理器。 MMU内存管理单元(MMU)负责虚拟到物理地址的转换。将虚拟内存地址映射到物理内存地址。内核为每个进程都维护了一张页表,记录虚拟地址与物理地址的映射关系。 ? 按页做转换,而页内的偏移量则直接映射。 ? slabLinux 使用伙伴分配器管理页,它以2的幂的方式向不同尺寸的内存分配器提供多个空闲链表。伙伴值找到相邻的空闲内存页以被同时分配。 伙伴空闲链表处于如下等级结构的低端,起始于每个内存节点pg_data_t
在节点的空闲链表分配能提高内存的本地性和性能 ? 虚拟内存空间? ?
内存申请brk() :小块内存,内存释放后并不会立刻归还系统,而被缓存起来,可以重复使用。 ? ? ? ? 优点:可以减少缺页异常的发生,提高内存访问效率。不过,由于这些内存没有归还系统,? ? ? ? ? ? 缺点:在内存工作繁忙时,频繁的内存分配和释放会造成内存碎片。 mmap() :大块内存,在文件映射段找一块空闲内存分配。 ????????释放时直接归还系统,每次 mmap 都会发生缺页异常,使内核的管理负担增大。 用户态在申请分配后,只有在首次访问时才分配,也就是通过缺页异常进入内核中,再由内核来分配内存。 内存释放1)free() 或 unmap()? 2)系统中可用内存过低时,多种释放方法
换页时,换页倾向 0~100范围的参数(默认60).较高的值更倾向于用换页释放内存,而较低的值更倾向于回收缓存。这就通过保留热文件系统缓存的同时,换出冷应用程序的内存页面来提高系统吞吐量。 内存检测工具页扫描:寻址连续的页扫描(超过10秒),它是内存压力的预兆; 换页:换页是系统内存低的进一步征兆。vmstat 检查si 和 so列; vmstat:每秒运行vmstat检查free列可用内存; oom:日志信息/var/log/messages查看; top/prostat:查看哪些进程和用户是物理内存和虚拟内存的最大使用者; dtrace/perf/stap:内存分配的栈跟踪,确认内存使用的原因。 ???????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 20:02:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |