大多数人在 30 岁左右,会遇到一个人生大坎。站在 30 岁的十字路口,回首过往,青春的肆意与懵懂仿佛还在昨日;展望未来,却只见迷雾重重,压力如山。
事业上,曾经的雄心壮志在现实的礁石上屡屡碰壁。看着同龄人升职加薪,自己却仍在原地徘徊,对未来的职业发展充满迷茫与焦虑。当初怀揣的梦想渐渐被消磨,不知是该坚守初心,还是随波逐流,重新规划人生方向。
家庭里,父母日渐年迈,健康问题频出,需要更多的关心与照顾。而组建了家庭的人,家庭责任如同一副沉重的担子,压得人喘不过气来。经济上的压力也接踵而至,房贷、车贷、育儿费用等,每一项都如紧箍咒般束缚着生活。 人际关系中,曾经纯粹的友情在忙碌的生活中渐行渐远。儿时的玩伴已难得相聚,同学间的联系也日益稀疏。新结识的朋友又似乎总隔着一层看不见的膜,难以交心。
在社交场合中,时常感到孤独与格格不入,渴望真诚的情感交流,却又总是事与愿违。 然而,30 岁的坎,也是成长的契机。它如同一把烈火,能淬炼出更加坚韧的灵魂;又似一阵狂风,吹走生活的轻浮与浅薄。在困境中,有人选择沉沦,让岁月在叹息中蹉跎;但也有人勇敢奋起,以无畏的勇气和坚定的信念去破局。他们重新审视自己的 ...
Linux内存管理
未读
前言:还是习惯性的以前言开篇,“深入骨髓”的程序猿思想,干啥事都想从main 开始~~
本系列分析的源码都遵循如下的约定:
芯片架构:ARM64
内存架构:UMA
内核版本:如无特别说明,本系列源码基于Kernel 5.15
CONFIG_ARM64_VA_BITS=39
CONFIG_ARM64_PAGE_SHIFT=12
CONFIG_PGTABLE_LEVELS=3
CONFIG_ARM64_PA_BITS=48
CONFIG_SPARSEMEM=y
…
本系列的源码opengrok:iliuqi的linux-5.15
1. 内存管理的一些预备知识
[linux内存管理] 第001篇 内存与内存管理机制
[linux内存管理] 第002篇 页表查询过程简述
[linux内存管理] 第003篇 内存分布
[linux内存管理] 第004篇 内存架构和内存模型
[linux内存管理] 第012篇 zone简介
2. 物理内存初始化流程这个阶段会详细从源码剖析,这部分主要为转载到的优秀的博文(部分博文内容会根据kernel- ...
Android稳定性
未读
0. 前言还是习惯性的以前言开篇,“深入骨髓”的程序猿思想,干啥事都想从main 开始~~
1. 方法篇
[Android稳定性] 第001篇 [方法篇] 高通Android平台稳定性分析介绍
[Android稳定性] 第017篇 [方法篇] 高通watchdog分析流程
[Android稳定性] 第020篇 [方法篇] crash实战:手把手教你使用crash分析内核dump
[Android稳定性] 第024篇 [方法篇] RCU Stall问题如何进行分析?
[Android稳定性] 第026篇 [方法篇] 在windows平台安装Linux ramdump parser工具
2. 原理篇
[Android稳定性] 第002篇 [原理篇] subsystem ramdump的原理介绍
[Android稳定性] 第003篇 [原理篇] mtdoops的原理介绍
[Android稳定性] 第004篇 [原理篇] minidump的原理介绍
[Android稳定性] 第008篇 [原理篇] 动态设置kernel cmdline
[Android稳定性] 第011篇 [原理篇] m ...
一、问题背景在我司工厂老化测试中,发现了多台机器死机的情况,经过一些分析判断被我评估为是DDR的问题,本篇文章就记录一下这几个案例,以及我判定为DDR问题的依据,供稳定性人员提供参考。
二、案例2.1 案例11234567891011121314151617181920212223242526272829303132333435363738394041[ 137.648537][ T0] Unable to handle kernel execute from non-executable memory at virtual address ffffffc00c92c7a8[ 137.649182][ T2652] Internal error: Oops - Undefined instruction: 0000000002000000 [#1] PREEMPT SMP[ 137.671119][ T0] Unable to handle kernel NULL pointer dereference at virtual address 000000000000 ...
7c971adf77762131b6b45d26c07ff4ea44929669ff3a9892c851356e759afa90ce84be70681ab443e5dbc6c6e6b9c47d082688d3752bfd6baef7de343a1a62a01960170b805f7acbfa1fb9114452c7fa016626d4c6a6d774cd85a8e26ebfd8cd784785cc4cfdf2fcbaf777fcb82ffbea3ea9c61a05253b3d51ab6c3837ae8c45e1e5e9d41d9eeae5ce95372dff63d57757154100fc529583129d039bd5529842057e13abdc56c9cae7ce91b5d67b46da003c7d0f7db3c1f20aabf99a7fbe6a45229cb1bd179fad2e17680bf6546f08f58a3cd9d62cb2ca35ec87917b30ef1a88f43191dc204007a42edaf7aab674fb6c27f48962418105a31 ...
7c971adf77762131b6b45d26c07ff4ea44929669ff3a9892c851356e759afa90ce84be70681ab443e5dbc6c6e6b9c47d082688d3752bfd6baef7de343a1a62a01960170b805f7acbfa1fb9114452c7fa016626d4c6a6d774cd85a8e26ebfd8cd784785cc4cfdf2fcbaf777fcb82ffbea3ea9c61a05253b3d51ab6c3837ae8c45e1e5e9d41d9eeae5ce95372dff63d57709b07c82325c1a3b44f8606b76e162e1cd75af6a6fc87199f178a502b2fe0d083a349468a198a101c863fb68b945a0998d8815e376dc4d7a5d3b5cb14f2fd591a98a086c86ad0c355ca3fb3d4f7935436eba810f9eb77e5fe10b7391d00997e1ad7c98cb408571be6 ...
一、三者概念的梳理1.1 进程上下文(Process Context)当内核代码是在为一个具体进程执行某项任务(比如响应系统调用)时,就是在“进程上下文”。
是普通用户或内核线程运行的上下文。
可以被调度、休眠、阻塞。
拥有完整的进程信息(task_struct)。
可以执行阻塞操作,比如 sleep()、mutex_lock()、schedule()。
✔️ 能被调度、能睡眠、可切换 CPU、参与 CFS 调度
1.2 中断上下文在 Linux 内核中,中断上下文(interrupt context) 是指内核在响应硬件中断或软中断(如 tasklet、softirq)时运行的上下文。这种上下文不是在代表某个用户进程执行代码,而是在处理外部或内部事件时抢占当前 CPU 的执行流运行的代码。
1.2.1 ✅ 中断上下文的特点
特征
描述
❌不能睡眠
绝不能调用可能导致阻塞的函数,比如schedule()、mutex_lock()
❌没有用户上下文
不是为任何用户进程服务,current指针虽然存在,但不能用于调度或睡眠
✅响应快速
中断处理函数要尽可能短,避 ...
Linux Kernel
未读
🔍【深入内核】Linux 内核栈详解:你所需要知道的一切
内核调试经常遇到栈溢出、Oops、watchdog 死锁等问题?内核栈搞不清楚会非常致命。这篇文章将用清晰的结构,带你彻底搞懂 Linux 的 内核栈 —— 什么是内核栈、为什么重要、常见误区、如何避免踩坑。
🧠 一、什么是内核栈?内核栈(Kernel Stack)是 Linux 为每个线程在 运行内核代码时专用的一块栈空间。当用户进程通过系统调用、中断或异常「进入内核」后,Linux 不再使用用户栈,而是切换到它自己的内核栈:
12用户态 → 系统调用 / 中断 → 内核态 ↘ 使用内核栈
内核栈用于保存:
函数调用链(call stack)
局部变量
寄存器上下文
中断处理信息
🧵 二、每个线程都有一块内核栈
每个 task_struct 对应一块独立的内核栈。
不管线程是否在用户态运行,内核栈始终分配好。
当进入内核态(syscall / 异常 / 中断)时,就会切换到该线程的内核栈。
📏 三、内核栈有多大?在 ARM64 架构下,默认是 16KB, ...
7c971adf77762131b6b45d26c07ff4ea44929669ff3a9892c851356e759afa90ce84be70681ab443e5dbc6c6e6b9c47d082688d3752bfd6baef7de343a1a62a01960170b805f7acbfa1fb9114452c7fa016626d4c6a6d774cd85a8e26ebfd8cd784785cc4cfdf2fcbaf777fcb82ffbea3ea9c61a05253b3d51ab6c3837ae8c45e1e5e9d41d9eeae5ce95372dff63d577df58e49edc8a7b8d7febad50292a5168c8bf2cb1a63cda72490b73ce9fa43ddaa99800f2f38681938e91a68ad4c5ab4e385f230b997234abe670a3b0c5ce9f0122ae53b493073b9aabd5d13e1d7cc620cc1a5634cc1631e921719366b5b6f254ba48918509015feba ...
7c971adf77762131b6b45d26c07ff4ea44929669ff3a9892c851356e759afa90ce84be70681ab443e5dbc6c6e6b9c47d082688d3752bfd6baef7de343a1a62a01960170b805f7acbfa1fb9114452c7fa016626d4c6a6d774cd85a8e26ebfd8cd784785cc4cfdf2fcbaf777fcb82ffbea3ea9c61a05253b3d51ab6c3837ae8c45e1e5e9d41d9eeae5ce95372dff63d57755276126f0c5ebe1068ed65c0d8bfff4c487326e76687778d14b19af2d98250a93f9b6b4c6714d8a794b1e9c7a898a382e23e790e1634d299c0eda1ec0d2cfec223c14ad568fca597b52d941e4587ffbd422723d8c7a376ef750c5f963875e6b767af0426f4d207af ...