自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android system_server进程

Android system_server进程由zygote进程fork创建,是framework层的核心进程,主要由ASM、PMS等系统服务组成,给app提供Binder调用、与native & hal进程通信。

2024-11-20 11:27:52 1338 3

原创 Android 性能之 Game Mode

本文的目的是介绍 AOSP Game Mode 功能。Game Mode 功能的核心是系统服务 GameManagerService,在本文中用 GMS 指代 GameManagerService。在 API 26 之后,应用开发者可以通过将应用的 category 属性设置为 "game",使系统(即 GMS)能够将该应用识别为 "游戏"。GMS 定义了 4 种 game mode,即 1|2|3|4|standard|performance|battery|custom;

2024-10-21 21:37:26 1439

原创 kswap内存回收机制

kswapd是Linux内核中的一个内核线程(kernel thread),它的主要作用是负责内存回收。具体来说,当系统中的空闲内存低于一定的阈值(watermark)时,kswapd线程被唤醒并开始工作。swapd执⾏内存回收,主要包括两部分内存回收,进程的内存回收和内核内存的回收。进程的内存回收主要回收进程分配的page,例如进程分配的匿名⻚,映射的⽂件⻚、buffer cache等内存;

2024-09-29 19:47:57 1423 2

原创 Linux malloc内存分配实现原理

由于申请的内存没有归还系统,在内存工作繁忙时,频繁的内存分配和释放会造成内存碎片。brk()方式之所以会产生内存碎片,是由于brk通过移动堆顶的位置来分配内存,并且使用完不会立即归还系统,重复使用,如果高地址的内存不释放,低地址的内存是得不到释放的。2)malloc的实参是sizeof(int),用于指明一个整形数据需要的大小,如果我们写成p = (int *)malloc(1), 只是申请了一个字节的空间,如果向里面存放了一个整数的话,将会占用额外的3个字节,可能会改变原有内存空间中的数据。

2024-09-04 17:32:12 2354 5

原创 Linux kernel OOM机制详解

OOM机制(Out of Memory Killer)是Linux内核中的一种内存管理机制,用于在系统物理内存耗尽时选择并杀死一个或多个进程,以释放内存并防止系统崩溃。当系统无法满足新的物理内存分配请求,并且所有其他内存回收机制(如内存规整、页帧回收等)都失败时,OOM Killer会被触发。

2024-08-09 16:31:12 2076

原创 Android lmkd机制详解

Android lmkd采用epoll方式监听linux内核psi内存压力等级的触发事件,并根据psi内存压力等级及进程优先级(oom_adj)来选择目标进程并查杀,缓解系统内存的压力。

2024-07-24 16:06:11 3046 2

原创 Android 性能之刷新率设置和管理

对于 Android 平台来说,屏幕的刷新率会影响应用绘制的调度周期。一般情况下平台调度绘制的周期与屏幕刷新的周期同步,这是通过 vsync 机制来实现的。

2024-07-22 17:17:55 6042 5

原创 Android GWP-Asan机制详解

基本用途:GWP-ASan是一种原生内存分配器功能,在内存分配时额外记录一些信息,用于检测DOUBLE_FREE、USE_AFTER_FREE、INVALID_FREE、BUFFER_OVERFLOW、BUFFER_UNDERFLOW五种内存错误问题。

2024-07-19 19:54:32 2445 3

原创 hung 之 Android llkd

linux kernel的 hungtaskd(由 CONFIG_DETECT_HUNG_TASK使能)功能可以检测 hung tassk,即长时间处于 D状态的进程。lldk是 hungtaskd功能的用户空间平替(加强)。

2024-07-18 16:14:58 1009 1

原创 hung 之 watchdog 框架

本文的 watchdog框架是指 linux内核为硬件看门狗实现的通用的喂狗机制。

2024-07-18 10:44:36 1150 1

原创 hung 之 softlockup & hardlockup 检测

softlockup 指的是这样一种场景:由于内核程序设计问题,导致CPU长时间关闭抢占。hardlockup 指的是这样一种场景:由于内核程序设计问题,导致CPU时钟中断长时间禁用。softlockup 或 hardlockup 发生时,CPU被当前运行的任务独占,而其他任务得不到调度。

2024-07-16 20:31:54 1329

原创 hung 之 hung task 检测

hung本意是 "挂起",hung task本意即 "任务被挂起,得不到执行"。但是如果我们对 linux kernel的任务调度机制有所了解的话,应该会知道 "任务被挂起,得不到执行"是很正常的事情。而在 linuxkernel中,hung task 是指长时间处于 D 状态(TASK_UNINTERRUPTIBLE,即 uninterruptible sleep)的进程。

2024-07-16 20:30:22 530

原创 Linux CoreDump机制详解

当用户程序运行过程中发生异常, 程序异常退出时, 由Linux内核把程序当前的内存状态信息(运行时的内存,寄存器状态,堆栈指针,各种函数调用堆栈信息等)存储在一个core文件中, 这个过程称作coredump.

2024-07-12 10:42:41 3961 3

原创 Linux kfence机制详解

kfence是Linux kernel中用于检测内存错误的工具,如检测out-of-bounds、mem-corruption、use-after-free、invaild-free等,利用该工具尽早发现项目中存在的内存错误问题,帮助研发人员快速定位分析这些问题。

2024-07-02 20:09:05 1451 4

原创 Android HWASAN机制详解

HWASAN是在ASAN的基础上做了拓展,因此在介绍HWASAN之前先了解下ASAN.

2024-07-02 19:49:17 2225 1

原创 Linux KASAN使用与实现原理

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

2024-04-23 16:32:54 2187 8

原创 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 2180 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 578 2

原创 Linux freezer机制

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

2024-02-22 16:56:10 1302 7

原创 Kernel panic流程及处理

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

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

原创 Linux CFS调度器

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

2024-02-19 15:32:51 1317 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 453 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 1780 1

原创 MTE - 堆内存检测原理

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

2024-01-18 14:07:04 1235 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 1951 4

原创 Linux cpu dvfs机制

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

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

原创 Android WatchDog机制

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

2024-01-10 15:50:26 1029

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

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

2024-01-10 15:43:33 2216 4

原创 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 5902 8

原创 Android PowerManagerService服务详解

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

2023-12-23 17:49:32 4104 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 4118 2

原创 Android Thermal机制【app至driver】

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

2023-11-15 17:08:25 2914 10

原创 Android Wakelock管理【app至kernel】

wakelock流程[图片]

2023-11-09 15:26:03 2881 8

空空如也

空空如也

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

TA关注的人

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