大多数人在 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 ...
c5b1c9d87331a45001ba9b8dd4d3824d9126a1ea72c8ede0b63c9350ac773722dec08a7e9c041bafa7c1a2336be876e7870a6046dbbff719b61702d900e9bc4fb82bbc8687cab63052c5bae0a241826fdea439b92b22bfa7a592f971b6fe8e8f3b127f32eb7b4e8368423e19add16a3c2e475a50389dd3453ebfbf27761c083b78261913737375b449bfe2444d472859b325e5accb5f5d3e4742cd7ebd6672f9fbf285b3b30bcc4877850bbf7c86c0cc24a318476d0f329ef6e4801b39601a4504967d5b1d4a920c51f67b093556380ea3c8e401c68b6b06fb162588b7af32211234b466e6013784b3886671f2887ca99bca9d4179d7ba670 ...
c5b1c9d87331a45001ba9b8dd4d3824d9126a1ea72c8ede0b63c9350ac773722dec08a7e9c041bafa7c1a2336be876e7870a6046dbbff719b61702d900e9bc4fb82bbc8687cab63052c5bae0a241826fdea439b92b22bfa7a592f971b6fe8e8f3b127f32eb7b4e8368423e19add16a3cb3a2a844fb40481f08d57eda82329991de5207fefb773178eb1f50f98c58cefbf8df9b4f1619f96881b36395ff1d18e1b22bf440fe68d9c04c553ed71247d1f08f515af14ee2948f52d90d279921e6251e588c62cd7f533eb593eaf5ea8a31c7dcbdc0fcf1d8d51f9948f50f9e3a13c25a0bfac6b176fd9a34fbd6cb1bf118f1430e233beecd04a20 ...
4f0f05ce26d5a43eed29a6768e1af61af18f157e1479bf682c8c8d8252017768bcfc7c26c69bd00eac995ca94850216cec747c5e656170a9bf066850c7db4405236d4ae9bac8855e1cd0abee9e4a6b9d99c8fc916e7a46c57a995414161438cb1c00b0c9f5558c5127e54e21707d029dfdc49d6d376ff5fca18259867e9806207949e3b1a023da45e1a7df36df261dc098b9c27487b0d6b0d65f4785f0e7389cf32bcb2ec03c80a47250f992828d09fc9f12a495375b82a2b9d9c8737942e9118e60cace17374dadc3e37dbb4327b2a66d8c1d2143fa8b7162ee61cc00fb70a4ee7f282ab07ebcf188fb363058b620d41346359fd2e37304e ...
一、安装python工具前往网站(https://www.python.org/downloads/)下载python安装包,python >= 3.6.8即可
安装python工具到一个目录,比如:C:\Python36
进入到C:\Python36\Scripts目录中,使用pip指令安装库12pip install psutilpip install pyelftools
二、获取linux ramdump parser工具2.1 Opensourcevendor/qcom/opensource/tools
12git clone e https://git.codelinaro.org/clo/la/platform/vendor/qcom-opensource/tools.gitgit checkout -b opensource-tools.lnx.1.0 remotes/origin/opensource-tools.lnx.1.0
2.2 proprietaryvendor/qcom-proprietary ...
Linux内存管理
未读
0. 前言简单来说,在使用zoned page frame allocator分配页面时,会将可用的free pages与zone的watermark进行比较,以便确定是否分配内存。同时watermark也用来决定kswapd内核线程的睡眠与唤醒,以便对内存进行检索和压缩处理。
回忆一下之前提到过的struct zone结构体:
1234567891011121314151617181920212223struct zone { /* Read-mostly fields */ /* zone watermarks, access with *_wmark_pages(zone) macros */ unsigned long watermark[NR_WMARK]; unsigned long nr_reserved_highatomic; ....}enum zone_watermarks { WMARK_MIN, WMARK_LOW, WMARK_HIGH, NR_WMARK};#define min_wmark_pages(z ...
4f0f05ce26d5a43eed29a6768e1af61af18f157e1479bf682c8c8d8252017768bcfc7c26c69bd00eac995ca94850216cec747c5e656170a9bf066850c7db4405236d4ae9bac8855e1cd0abee9e4a6b9dd087273d48d0fc9ad60232825fc2e3cd2bcd248382b9aae573e2cd9500a22a0b7b5d410978770f57612849499c32a857f20939f8843b1d05656bef753b632aa25a93bf440633263745dc6b7dd747bc24574385b0f64c974469e4af84e91bd1406c1e91e1bb52d4dc854b2d11fb1cd62d32ad108ce40957a35ebb886480cc8ad4dad291e15d86e0a8a79c26eab7c0f534e11759e9ba965699e3eef81b903f38bf67d4f4b17720ab502 ...
Linux内存管理
未读
0. 前言在上一篇文章中我们分析了__alloc_pages中的get_page_from_freelist,也就是快速分配部分。这个函数会根据分配掩码和分配order进行快速分配,若快速分配过程并不能分配到合适的内存时,则会进入慢速分配的过程。
本文紧接前文继续分析__alloc_pages函数,继续剖析buddy内存分配的另一个过程:慢速分配
1. __alloc_pages_slowpath当快速路径分配内存失败时,内核会调用这个函数来尝试各种方法(如回收内存、整理内存碎片、甚至启动 OOM 杀手)来成功分配内存
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411 ...