摘要: vmcore-dmesg.txt截图如下,崩溃栈里面有我们产品的驱动,现在要分析出是不是我们导致的。系统崩溃是因为触发了hung task检测条件,系统panic了。所谓hung task,就是进程的状态为D状态,即TASK_UNINTERRUPTIBLE状态,短时间的D状态是正常的,长时间就会有问 阅读全文
posted @ 2024-10-07 21:37 学习,积累,成长 阅读(84) 评论(0) 推荐(0) 编辑
摘要: free 命令是Linux系统上查看内存使用状况最常用的工具,然而很少有人能说清楚 “buffers” 与 “cached” 之间的区别: 我们先抛出结论,如果你对研究过程感兴趣可以继续阅读后面的段落: buffers 表示块设备(block device)所占用的缓存页,包括:直接读写块设备、以及 阅读全文
posted @ 2024-07-14 14:22 学习,积累,成长 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 本文转发自:http://linuxperf.com/?p=142 应该是迄今为止对/proc/meminfo描述最全面与完整的一篇文章。 前言 /proc/meminfo是了解Linux系统内存使用状况的主要接口,我们最常用的”free”、”vmstat”等命令就是通过它获取数据的 /proc/m 阅读全文
posted @ 2024-07-14 14:19 学习,积累,成长 阅读(84) 评论(0) 推荐(0) 编辑
摘要: 在Linux系统上查看内存使用状况最常用的命令是"free",其中buffers和cache通常被认为是可以回收的: $ free total used free shared buffers cached Mem: 32764716 1067548 31697168 158332 12 59309 阅读全文
posted @ 2024-07-14 14:12 学习,积累,成长 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 前言 Linux内核中是如何分配出页面的,如果我们站在CPU的角度去看这个问题,CPU能分配出来的页面是以物理页面为单位的。也就是我们计算机中常讲的分页机制。本文就看下Linux内核是如何管理,释放和分配这些物理页面的。 伙伴算法 伙伴系统的定义 大家都知道,Linux内核的页面分配器的基本算法是基 阅读全文
posted @ 2024-06-23 22:30 学习,积累,成长 阅读(317) 评论(2) 推荐(0) 编辑
摘要: ARM32位系统的内存布局图 32位操作系统的内存布局很经典,很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB,用户空间为1GB ~ 3GB,内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢? 一般处理器会把运行模式分为好几个,比如x86分为rang0 阅读全文
posted @ 2024-06-10 13:17 学习,积累,成长 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 页表的一些术语 现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(Page Upper Directory) 中间目录项,PMD(Page Middle Directory) 页表项,( 阅读全文
posted @ 2024-06-10 13:05 学习,积累,成长 阅读(388) 评论(0) 推荐(1) 编辑
摘要: 快速范围判断 经常要批量判断某些值在不在范围内,如果 int 检测是 [0, N) 的话: if (x >= 0 && x < N) ... 众所周知,现代 CPU 优化,减分支是重要手段,上述两次判断可以简写为: if (((unsigned int)x) < N) ... 减少判断次数。如果 i 阅读全文
posted @ 2024-06-10 12:58 学习,积累,成长 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 调试是每个程序员都逃不过的宿命! 程序调试是一件非常考验耐心的事情,因为调试过程中经常会需要反复的修改源码,重新编译、重新部署、重新运行,这个过程通常是非常枯燥和繁琐的。尤其对于大型项目,光是编译可能需要几十分钟,甚至几个小时,部署过程则可能更为复杂漫长! 那么,有没有一种更高效的调试手段,可以避免 阅读全文
posted @ 2024-06-10 12:57 学习,积累,成长 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 环境: 处理器架构:arm64 内核源码:linux-6.6.29 ubuntu版本:20.04.1 代码阅读工具:vim+ctags+cscope 本文主要介绍内核开发中常用的模块传参手段,通过模块参数传递可以通过用户态来获取内核的一些信息,也可以通过用户态写入一些值来控制内核相关行为。一般内核开 阅读全文
posted @ 2024-06-10 12:56 学习,积累,成长 阅读(82) 评论(0) 推荐(0) 编辑