如何展开Linux Memory Management学习?
Linux的进程和内存是两座大山,没有翻过这两座大山对于内核的理解始终是不完整的。
关于Linux内存管理,在开始之前做些准备工作。
首先bing到了Quora的《How can one really learn Linux Kernel Memory Management?》,这也是大部分初学者,或者说大部分Linux内核开发人员的疑问?
正如Vaishali Thakkar所说,最好的方法是读代码,但是面对这么庞杂的代码,往往是无从下手。Vaishali Thakkar推荐从LSF/MM论坛入手去了解年度报告,但是这些技术往往都是最前沿的。倒是下面的路径相对合适:
- LinuxMM - linux-mm.org Wiki
- Understanding the Linux Virtual Memory Manager 关于Linux内存管理的经典之作,虽然有点老2.4,但仍然有可取之处。
- 一些内存管理Maintainer的博客:Rik van Riel's home page Mel Gorman
- Kernel coverage at LWN.net内核开发相关细节
- 最方便的内核帮助文档。
其他方法还包括通过IRC channel #mm on OFTC提问,阅读代码有疑问使用‘git blame’查找对应的git,然后通过阅读注释来理解背景。
最后还可以通过修改代码或者参数来做实验,验证自己的想法。
另一位Chen Gang同样提到了Understanding the Linux Virtual Memory Manager这本书。另由于MMU是架构相关的,要想理解内存管理,不阅读MMU规格书是不可能的,对于ARM架构在官网提供了下载。同样提到了阅读代码的重要性,虽然不是立即体现出来效果,但是久而久之会起效的。另外还可以通过修改MM相关参数,来做实验;和阅读MM相关 commits。
补充一个Mel Gorman用于测试内核MM的工具集mmtests。
最后,正如Chen Gang所说“MM is a tough topic”,前面的路注定不平坦。戒骄戒躁,一步一个脚印吧!
如何展开Linux Memory Management学习?相关推荐
- 内存管理:Linux Memory Management:MMU、段、分页、PAE、Cache、TLB
目录 Linux Memory Management Memory Address Need for Virtual Addressing Address Translation Address Tr ...
- linux 进程 转存储,Linux memory management——(进程虚存空间的管理)(转)
Linux memory management--(进程虚存空间的管理)(转)[@more@]Linux memory management--(进程虚存空间的管理) 1.内核空间和用户空间 进程运行 ...
- Linux内存管理Linux Memory Management Notes
Linux 内存基础 地址类型 linux内核中有许多种不同的地址类型 用户虚拟地址 用户空间看到的常规地址,通过页表可以将虚拟地址和物理地址映射起来 物理地址 用在cpu和内存之间的地址叫做物理地址 ...
- Memory Management Concepts overview(内存管理基本概念)
目录 Concepts overview Virtual Memory Primer Huge Pages Zones Nodes Page cache Anonymous Memory Reclai ...
- 【学习札记NO.00004】Linux Kernel Pwn学习笔记 I:一切开始之前
[学习札记NO.00004]Linux Kernel Pwn学习笔记 I:一切开始之前 [GITHUB BLOG ADDR](https://arttnba3.cn/2021/02/21/NOTE-0 ...
- Linux第二周学习笔记(7)
Linux第二周学习笔记(7) 2.13 文档查看cat_more_less_head_tail (1). cat命令 cat命令:用于查看一个文件的内容并将其显示在屏幕上 cat-A命令:显示所有的 ...
- linux设备驱动程序调试方法,Linux设备驱动程序学习(2)-调试技术
Linux设备驱动程序学习(2)-调试技术 Linux设备驱动程序学习(2)-调试技术 今天进入<Linux设备驱动程序(第3版)>第四章调试技术的学习. 一.内核中的调试支持 在前面已经 ...
- 异构内存管理 Heterogeneous Memory Management (HMM)
https://www.kernel.org/doc/html/latest/vm/hmm.html 目录 异构内存管理 (HMM) 使用特定于设备的内存分配器的问题 I/O 总线.设备内存特性 共享 ...
- linux基础命令学习笔记(二)
linux基础命令学习笔记(二) 1.kill :终止进程 kill pid (唯一标示一个进程) kill -9 强制终止 kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...
最新文章
- Chrome Full black Screen [Solved]
- curl不通 k8s_如何利用curl命令访问Kubernetes API server
- Linux中cat、more、less、tail、head命令的使用示例
- 即插即用的轻量注意力机制ECA--Net
- 【JZOJ4861】【NOIP2016提高A组集训第7场11.4】推冰块
- 牛客网--蛇形矩阵(Java)
- spark 2.2 读取 Hadoop3.0 数据异常 org.apache.hadoop.hdfs.web.HftpFileSystem cannot access its superinterfa
- rpm安装mysql5.5_CentOS下以RPM方式安装MySQL5.5
- java中set怎么建int型_使用Array.setInt来填充Java中的数组
- git生成SSH密钥提示ssh文件不存在-已解决
- 安装问题的审计(产生漏洞,抓包)
- [Spring-cloud-eureka]使用 gradle, spring boot,Spring cloud Eureka 搭建服务注册中心
- kafka监控之kafka-run-class.sh
- thread.sleep会释放锁吗_面试 LockSupport.park()会释放锁资源吗?
- 串口和TCP调试助手
- 触摸屏调出虚拟键盘_win7系统中打开虚拟键盘的两种方法(屏幕键盘)
- 读书的作用--引用《儒道至圣》小说章节
- cad一直正在加载_CAD总是打开要加载好久,卡到不行。
- java捕鱼增值版游戏下载_捕鱼游戏 java
- c语言指针笔试面试题,c语言指针面试常见问题
热门文章
- java 代码检验表不存在_诊断 Java 代码: Liar View 错误模式
- 3842开关电源完整原理图_8大常见开关电源电路分析,让你项目设计更轻松!
- 怎么设置计算机管理员权限,Windows7管理员权限怎么设置?
- 人工智能的数学基础(二):函数
- 安卓 页面跳转_挑战安卓和iOS!华为:鸿蒙覆盖1亿台设备,明年出鸿蒙手机
- java 处理时间的类_java 日期时间处理类
- boost电路输出电流公式_boost电路解析
- html语言1002html语言,HTML基础和标签介绍
- linux屏幕分辨率文件,Ubuntu 16.04 LTS设置屏幕分辨率显示Unknown display 解决
- centos 6.5配置apache php mysql_centos6.7下搭配apache php mysql环境