dex文件格式介绍 前言dex(Dalvik Executable)是Android平台源代码文件(java,kotlin)经过编译、重构、重排、压缩、混淆后的字节码文件,是对传统的class 文件再处理。dex 更适合于资源有限的嵌入式设备使用,和class 文件比,dex 明显的优势主要表现在下面两个方面1)体积更小,dex 在class的基础上,将多个class 文件特征进行统一处...
调度器分支之RTG 一、引言网上关于RTG内容很少,本文以作者个人的理解为主,难免存在偏差与瑕疵,欢迎指正。本文以codeaurora的https://source.codeaurora.cn/quic/la/kernel/msm-4.14/代码及msm-5.4进行分析。在详细介绍rtg之前,需要了解一下rtg的背景。Rtg叫着related thread group.顾名思义“相关线程组”...
BatteryHistorian Android手机耗电分析神器 Battery-Historian是谷歌推出的一款专门分析Bugreport的工具,是谷歌2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具,是一款对于分析手机状态,历史运行情况很好的可视化分析工具。当设备在使用电池的时候,它可以使开发者们看到系统级和应用级事件图表,在图表时间轴上可以缩放和平移,...
kswapd介绍 一、概述众所周知,内存是⼿机的有限资源,而如何在有限的资源基础上,实现更优的性能、更好的用户体验,是每个系统开发⼯程师夜以继⽇攻克的⽬标。Linux系统为了提⾼系统性能,让每个APP有更快的反应速度,会尽量使⽤系统中的内存,例如缓存⼤量的pagecache,驻留更多的anon pages,以便进程可以直接访问,⽽⽆需实时触发缺⻚或IO来加载数据。但是,由于内存是有限的,⽽...
黑屏定屏那些事 - 系统机制,分析套路和实战(系统篇) 本文发表于内核工匠公众号,旨在给内核开发的小伙伴分享:Android系统层面用户UI交互的设计,从而理解手机黑屏定屏时背后的故事。Android系统对黑屏定屏类问题的维测思路,有那些先进的思想,有那些改进的空间。如果读者恰好有一定的Android系统框架知识,可以直奔每一章节的“重难点以及思考”部分。在写作的过程中也发现,互联网上系统性梳理Android黑屏定屏问题的技术...
Schedutil governor情景分析 前言内核工匠在之前的几篇文章中已经详细介绍了CPU的调频子系统的软件框架,本文把重点放在了schedutil governor(后文称之sugov)的代码逻辑。通过详细的代码级别的分析,希...
Devfreq Bus Dcvs 一、引言计算机的世界里,CPU任务分为CPU bound和IO bound。而实际场景下往往是两者混合型任务。针对性能的优化,普遍关注点都在CPU上(不论是CPU的频点和CPU的选核), ...
mlock锁原理剖析 一般用户空间关联的物理页面是按需通过缺页异常的方式分配和调页,当系统物理内存不足时页面回收算法会回收一些最近很少使用的页面,但是有时候我们需要锁住一些物理页面防止其被回收(如时间有严格要求...
一个新进程的内核之旅 一、背景我们常在Linux平台bash环境下执行一条cmd,如看下当前文件有哪些"ls -l"。这条cmd会fork一个新的进程,然后完成ls可执行程序的加载和执行。对于用户而言,看上去仿...
EventHub代码原理详解 一、EventHub简述Android系统基于Linux系统,由多个子系统组合而成,各子系统分工合作,在各自功能域中扮演关键角色。其中一个比较重要的子系统是Input子系统,正如其名地,挂...
Android linux eBPF网络相关原理分析 一、eBPF相关概述随着android的版本不断升级,android 9之后,内核版本均为4.X以及更高的5.X,linux的eBPF设计在android系统中应用也越来越多。对于BPF以...
2D人脸识别之Camera篇 一、概述本文主要介绍2D人脸识别中的Camera图像采集部分,目前市面上Android阵营中大部分机型都使用的是2D人脸识别;图像采集主要是获取目标的RGB图像,2D人脸图像获取相对简单,...
JVM 垃圾回收算法与ART CC回收器实现概述 前言在作者的上一篇文章《Android R常见GC类型与问题案例》中,对Demo应用的Heap堆结构与Space类型及相对应内存分配算法做了简要的探究,同时对Android R机器运行中常...
FreeRTOS内存机制 一、FreeRTOS内存分配方式FreeRTOS的内存分配一般为静态分配方式以及动态分配方式。在FreeRTOS 的V9.0.0 版本之前,任务、软件定时器,信号量、互斥锁等系统资源所需的...
Android 设备树的匹配流程 本文将从设备树的编译与分区、运行这2个部分来介绍设备树的匹配流程。一、编译与分区1.名词介绍DTS(DeviceTree Source)就是我们经常修改的*.dts和*.dtsi文件。D...
Scudo内存分配器介绍 一、背景早期Android中使用jemalloc作为默认的Native内存分配器,但是从R开始,Scudo替代jemalloc成为了non-svelte configuration模式下默...
Linux SPI 驱动 一、SPI协议SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的一种高速的...
CFS任务放置代码详解 一、前言我们描述CFS任务负载均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了taskplacement的逻辑过程,第三篇是负载均衡的情景分析,包括tick balance、nohz...
block io生命历程 作为存储业务的一个重要组成部分,block IO是非易失存储的唯一路径,它的生命历程每个阶段都直接关乎我们手机的性能、功耗、甚至寿命。本文试图通过block IO的产生、调度、下发、返回的...
触摸屏原理介绍 一、触摸屏概述触摸屏作为一种新的输入设备,它是目前最简单、方便、自然的一种人机交互方式。触摸屏又称为“触控屏”、“触控面板”,是一种可接收触头等输入讯号的感应式液晶显示装置;当接触了屏幕上...