自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Linux KASAN使用与实现原理

类型影子内存标记检测类型buddy初始化:0释放:0xffslubTBDTBDglobal初始化:0xf9stackTBDTBD。

2024-04-23 16:32:54 1140 7

原创 Android malloc_debug实现原理及使用

2)设置 __libc_globals 对象中的 libc_globals.default_dispatch_table 和 current_dispatch_table 指向 malloc_dispatch_table,以后在 malloc 库函数里都会通过 GetDispatchTable(),这个函数就是返回的 current_dispatch_table 指针;MAX_FRAMES 表示被抓取的 frames 的数量,如果设为0, 表示在分配空间被释放时,不会抓取任何调用栈。

2024-04-23 10:55:46 1131 5

原创 常用的git命令

解决冲突后,使用 ​git add ​ 将冲突文件标记为已解决,然后使用 ​git rebase --continue​ 继续应用剩余的提交。git reset --hard HEAD^ ---撤销本地代码仓库提交的文件,且删除该文件的修改记录,且删除commit提交记录。git reset --mixed HEAD^ ---撤销本地代码仓库提交的文件恢复到本地工作区中,且删除commit提交记录。git restore --staged ---撤销暂缓区提交的件到工作区。

2024-03-13 15:04:42 520 2

原创 Linux freezer机制

系统进入suspended或进程被加入到cgroup冻结或解冻分组,用户进程和部分内核线程被冻结后,会剥夺执行cpu资源,解冻或唤醒后恢复正常。

2024-02-22 16:56:10 488 6

原创 Kernel panic流程及处理

kernel panic主要包括die和panic两部分流程。

2024-02-20 16:42:41 541 2

原创 Linux CFS调度器

CFS调度器目标是实现各进程完全公平调度。就绪队列维护一颗红黑树,并采用虚拟运行时间来实现时间片的分配。动态计算每个进程的虚拟运行时间,从而实现公平性和高效性。

2024-02-19 15:32:51 857 1

原创 快稳省领域分析工具总结

ftrace、perf tool、simpleperf、systrace、perfetto、traceview、ebpf、cma tool、MAT、iotop\iostat\atop\top\strace\vmstat、QT tool、systemtap、Dtrace等。

2024-02-19 15:20:59 293 1

原创 Linux Thermal框架

Linux的Thermal机制是基于Zone为单位的热管理机制,核心包括三个部分:获取区域温度的设备thermal_zone_device、区域降温的设备thermal_cooling_device、温控策略thermal_governor。thermal_governor从thermal_zone_device获取区域温度,然后根据当前温度,决定调用哪个降温设备来为该区域降温。

2024-01-22 15:39:04 922 1

原创 MTE - 堆内存检测原理

MTE 堆内存检测的硬件(指令)基础和 MTE 栈内存检测是一样的~不同的是 MTE 栈内存检测的用户空间实现是编译器(llvm)完成的~而 MTE 堆内存检测的用户空间实现则是由内存分配器(scudo,llvm 的运行时库)完成的(of course,如果不使用scudo而使用其他的内存分配器,应用程序也可以通过调用 MTE 指令或者封装的 MTE 相关 api 来实现堆内存检测,只是会比较麻烦,一般不会这么做 ~~~)

2024-01-18 14:07:04 848 1

原创 MTE - 栈内存检测原理

MTE 属于 ARMv8.5 指令集的拓展功能~ 即 memory tag extension~要使能MTE功能,需要有支持 MTE 的硬件,kernel,以及编译器和libc(定制malloc等堆内存分配方法)~其中,支持MTE的硬件和kernel是必要条件~支持MTE的编译器是实现 stack 检测的必要条件~支持MTE的libc是实现 heap 检测的必要条件~

2024-01-18 13:45:54 1183 4

原创 Linux cpu dvfs机制

主要作用是动态调整CPU的电压和频率,以在性能和功耗之间实现平衡。当CPU负载较轻时,可以通过降低电压和频率来降低功耗,延长电池续航时间;当CPU负载较重时,可以通过提高电压和频率来提高性能,确保系统的响应速度。

2024-01-16 19:00:47 1224 6

原创 Android WatchDog机制

Android系统中,有硬件WatchDog用于定时检测关键硬件是否正常工作,类似地,在framework层有一个软件WatchDog用于定期检测关键系统服务是否发生死锁事件、Handler线程消息处理是否超时。

2024-01-10 15:50:26 524

原创 Android Native crash触发原理及处理

当程序执行以下操作,会触发native crash:1)程序自己调用 abort() 函数触发,用于表示出现严重的错误或异常情况,需要终止程序执行2)内存对齐错误或非法地址访问3)零除错误(除数为零),浮点溢出或下溢出等4)使用了非法的机器指令或指令参数不当而导致5)进程试图访问不允许访问的内存地址,例如访问已释放的内存,或者栈溢出等6)常见于协处理器栈错误或FPU错误7)进程试图执行未定义或不支持的系统调用8)程序的特定位置设置断点时会触发SIGTRAP信号。

2024-01-10 15:43:33 1228 3

原创 Linux cpu Idle机制

cpu idleu作用:在cpu空闲状态下进入低功耗模式,从而达到节省功耗的目的。idle低功耗模式主要的省电策略:1)wfi 2)关闭cpu时钟 3)关闭设备等实现原理:linux内核初始化时,会为每个cpu创建一个idle线程,当该cpu处于空闲状态,即cpu上没有可调度的线程或可执行的task,此时调度器会选择idle线程执行,进入idle低功耗状态。而idle状态又分为不同的层级,越深的层及省电越优,但系统恢复越慢,因此需要结合用户需求,选择进入哪个层级的idle状态。

2024-01-02 19:33:50 2665 8

原创 PowerManagerService服务

PMS作用:1)向上提供给应用程序接口,例如音频场景中保持系统唤醒、消息通知中唤醒手机屏幕场景;2)向下决策HAL层以及Kernel层来控制设备待机状态,控制显示屏、背光灯、距离传感器、光线传感器等硬件设备的状态;

2023-12-23 17:49:32 2263 1

原创 Android&Linux系统suspend/resume机制

Linux内核提供了多种休眠(休眠)方式:freeze(idle)、standyby、STR(suspend to ram)和STD(suspend to disk),这些休眠方式通过文件节点/sys/power/state提供给用户操作,在用户空间通过向/sys/power/state文件节点分别写入freeze、standy、mem、disk,系统就会进入相应的状态。另一方面,在用户需要系统工作的时候,系统能够快速恢复电源、时钟、芯片内部ip及外部设备的工作,从而不影响用户的使用体验。

2023-11-24 11:07:31 1884 1

原创 Android Thermal机制【app至driver】

Android 引入了热系统,用于将热子系统硬件设备的接口抽象化,硬件接口包括设备表面、电池、GPU、CPU 和 USB 端口的温度传感器和热敏电阻。借助该框架,设备制造商和应用开发者可以主动获取这些系统硬件设备的温度数据,或者通过注册的回调函数(位于 PowerManager 类中)接收高温通知,进而在设备开始过热时调整系统及应用执行策略,降低系统负载。例如,当系统温度较高时,可以通过一些温控策略来降低设备温度,如cpu降频、关闭子设备等。

2023-11-15 17:08:25 1071 9

原创 Android Wakelock管理【app至kernel】

wakelock流程[图片]

2023-11-09 15:26:03 956 7

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除