内核工匠

内核工匠秉承开源精神,分享Linux内核相关黑科技、技术文章、技术资讯和精选教程,文章首发在微信公众号“内核工匠”(Linux-Tech),欢迎大家关注,共同交流探讨
私信 关注
内核工匠
码龄10年

内核工匠秉承开源精神,分享Linux内核相关黑科技、技术文章、技术资讯和精选教程,文章首发在微信公众号“内核工匠”(Linux-Tech),欢迎大家关注,共同交流探讨

  • 40,010
    被访问量
  • 58
    原创文章
  • 124,306
    作者排名
  • 170
    粉丝数量
  • 于 2011-04-22 加入CSDN
获得成就
  • 获得59次点赞
  • 内容获得35次评论
  • 获得340次收藏
荣誉勋章
兴趣领域
  • #后端
    #Linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

TEE原理及应用举例

一、TEE介绍随着Face ID、指纹识别、5G、AI等技术的发展,移动互联网已经悄然根植于现代生活中,伴随着日常生活的移动化,移动终端中存储的各种敏感信息日益增多,移动终端自身的安全性面...
原创
10阅读
0评论
0点赞
发布博客于 昨天

我们需要你!

转载
16阅读
0评论
0点赞
发布博客于 8 天前

cpufreq schedutil原理剖析

本文会基于Android Pixel4(android linux kernel 4.14+ARMv8(AArch64)),重点分析schedutil这个cpufreq的governor,...
原创
244阅读
3评论
0点赞
发布博客于 24 天前

安卓指纹启动流程

本文主要基于Android10.0系统开源代码介绍指纹识别模块的整体架构和启动流程。一.指纹识别整体框架结合上图,Android系统的指纹识别软件上主要分成4层:应用层:应用开发者调用AO...
原创
565阅读
5评论
7点赞
发布博客于 29 天前

GKI改造原则、机制和方法

Google在android11-5.4分支上开始要求所有下游厂商使用Generic Kernel Image(GKI),需要将SoC和device相关的代码从核心内核剥离到可加载模块中...
原创
265阅读
0评论
2点赞
发布博客于 2 月前

Tombstone原理分析

本文主要围绕三个问题对tombstone进行分析和介绍,debuggerd是如何监控进程并生成tombstone的?tombstone文件中的信息都是什么,是怎么获取的?tombston...
原创
242阅读
2评论
0点赞
发布博客于 2 月前

浅析丢帧检测机制上篇

一、背景在android平台上,对于用户而言,卡顿的层面较为广义,比如应用出现ANR,启动时间变成长,游戏的帧率不稳定,视频加载慢、滑动丢帧感较明显等等都一并认为是卡顿现象,主要原因是由...
原创
65阅读
0评论
0点赞
发布博客于 2 月前

android平台eBPF初探

一、eBPF是什么eBPF是extended BPF的缩写,而BPF是Berkeley Packet Filter的缩写。对linux网络比较熟悉的伙伴对BPF应该比较了解,它通过特定的...
原创
276阅读
1评论
0点赞
发布博客于 2 月前

负载均衡情景分析

我们描述CFS任务负载均衡的系列文章一共三篇,第一篇是框架部分,第二篇描述了task placement和active upmigration两个典型的负载均衡场景。本文是第三篇,主要通...
原创
213阅读
2评论
0点赞
发布博客于 2 月前

Linux Kernel Utilization Clamping简介

随着linux内核调度技术的不断演进,目前存在多个调度类(stop、deadline、rt、cfs、idle)以满足不同性质和要求的任务(task)的调度需求。对于用户空间来说,完全公平...
原创
392阅读
5评论
1点赞
发布博客于 2 月前

Linux内核File cache机制(上篇)

一、什么是File cache?1. File cache概述Linux File cache机制,每次动笔想写到该知识点的时候,我心里总会犹豫迟疑,众所周知内存管理是Linux系统的...
原创
281阅读
5评论
1点赞
发布博客于 2 月前

Reno5 系列登场,搭载最新 ColorOS 11

福利活动:点击阅读原文,在 ColorOS 微信聊天窗口回复 1210,抽送 1 部 OPPO Reno5 手机哦~转载说明:本文转载自ColorOS公众号长按关注内核工匠微信Linux...
转载
73阅读
0评论
0点赞
发布博客于 2 月前

CRASH安装和调试

一、Crash?当linux系统内核发生崩溃的时候,可以通过KEXEC+KDUMP等方式收集内核崩溃之前的内存,生成一个转储elf文件vmcore或者其他dump形式。内核开发者通过分析...
原创
222阅读
1评论
0点赞
发布博客于 3 月前

Linux Swap 介绍

由于内存和磁盘的读写性能差异较大,Linux会在内存充裕时将空闲内存用于缓存磁盘数据,以提高I/O性能。相对的在内存紧张时Linux会将这些缓存回收,将脏页回写到磁盘中。而在进程的地址空...
原创
1193阅读
2评论
12点赞
发布博客于 3 月前

如何利用ftrace精确跟踪特定进程调度信息

网上已经有很多阐述ftrace原理和使用方法的文章,本文不会面面俱到的介绍所有涉及的原理和方法,只会聚焦在阐述ftrace的event tracing机制,以及如何利用该机制(包括其他一...
原创
510阅读
3评论
5点赞
发布博客于 3 月前

Linux内核内存检测工具KASAN

KASAN 是 Kernel Address Sanitizer 的缩写,它是一个动态检测内存错误的工具,主要功能是检查内存越界访问和使用已释放的内存等问题。KASAN 集成在 Linu...
原创
179阅读
0评论
0点赞
发布博客于 3 月前

CHRE架构浅谈

CHRE(Context Hub Runtime Environment)是基于事件驱动的系统,因此CHRE围绕事件循环构建,该循环执行nanoapp代码以及CHRE系统回调。根据CHR...
原创
243阅读
0评论
0点赞
发布博客于 4 月前

FUSE文件系统

Fuse(filesystem in userspace),是一个用户空间的文件系统。通过fuse内核模块的支持,开发者只需要根据fuse提供的接口实现具体的文件操作就可以实现一个文件系...
原创
757阅读
0评论
1点赞
发布博客于 4 月前

盘点只读压缩文件系统

为什么需要只读压缩文件系统?在存储容量有限的嵌入式设备上,一般对于系统分区在使用过程中没有数据写入需求,同时希望可以节省存储空间——只读压缩文件系统应运而生。另外,只读压缩文件系统也可用...
原创
75阅读
0评论
0点赞
发布博客于 4 月前

通过泰尔抗老化五级认证,ColorOS 11助力手机持久流畅

9 月 24 日,OPPO 正式发布了基于安卓 11 的ColorOS11 操作系统。而就在这款操作系统发布的次日,也就是 9 月 25 日,ColorOS 官方宣布,收到了中国泰尔...
转载
123阅读
0评论
0点赞
发布博客于 4 月前

Type-C PD充电简介

一、Type-C简介自1998年以来,USB发布至今,USB已经走过20个年头有余了。在这20年间,USB-IF组织发布N种接口状态,包括A口、B口、MINI-A、MINI-B、Micr...
原创
1009阅读
0评论
0点赞
发布博客于 4 月前

基于SIMD的算法加速技术简介

在手机应用越来越多,机身越来越轻薄的今天。CPU卡顿问题、手机发热问题和待机续航问题越来越多。限频、降帧,这些常用的手段会降低用户的体验,并不是根本的解决之策。我们迫切需要一个低功耗高性...
原创
362阅读
0评论
0点赞
发布博客于 5 月前

Suspend流程介绍

随着智能手机的普及,大家对手机续航也越来越重视,而手机处于休眠状态又是手机最省电的一种模式,因此本文简单介绍下android下suspend的流程。一、用户空间发起suspend流程我们...
原创
851阅读
1评论
3点赞
发布博客于 5 月前

Linux Scsi子系统框架介绍

scsi是一套古老的协议,至今它还在一些硬件中存在和使用,例如基于sata协议的ssd硬盘,ufs器件等。因为scsi命令已经标准化,因此scsi子系统也成为了linux kernel众...
原创
636阅读
1评论
2点赞
发布博客于 5 月前

Android Input 子系统初探

Android系统基于Linux内核实现,内核作为整个操作系统的核心,对下,它负责整个硬件的驱动、实现对硬件器件的控制管理;对上,它提供各种系统所需的核心功能。Android系统支持的输...
原创
79阅读
0评论
0点赞
发布博客于 5 月前

PELT 算法浅析

Linux是一个通用操作系统的内核,她的目标是星辰大海,上到网络服务器,下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务,因为设计约束太多了:它必须是...
原创
407阅读
0评论
0点赞
发布博客于 6 月前

深入理解 Linux 位置无关代码 PIC

本文主要描述了Linux系统上关于位置无关代码PIC,位置无关可执行程序PIE及地址空间布局随机化ASLR三个主要特性的原理及联系。第一部分首先介绍了应用程序地址空间的基础知识作为铺垫;...
原创
293阅读
0评论
0点赞
发布博客于 6 月前

解读国产UI流畅不卡顿原因,ColorOS有妙招

智能手机作为当下最具代表性的科技产物,虽然更新换代十分快速,但很多用户还是坚持着一年一换甚至是几年一换的习惯,这时候就十分考验手机素质,其中就有搭载了 ColorOS 系统的手机,许多用...
转载
175阅读
0评论
0点赞
发布博客于 6 月前

Linux kernel 同步机制(下篇)

在上一部分,我们讨论了最基本常见的几类同步机制,这一部分我们将讨论相对复杂的几种同步机制,尤其是读写信号量和RCU,在操作系统内核中有相当广泛的应用。读写信号量(rw_semaphore...
原创
131阅读
0评论
0点赞
发布博客于 6 月前

ColorOS7的软硬深度底层优化

近年 ColorOS 操作系统可以说是进行了更新换代,从初代到如今的第七代 ColorOS,OPPO ColorOS 每次更新都带来了全新的体验和变化,尤其是手机系统的流畅度,有了超级的...
转载
136阅读
0评论
0点赞
发布博客于 6 月前

Linux kernel同步机制(上篇)

在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问,尤其是在多处理器系统上,更需要一些同步机制来同...
原创
179阅读
0评论
0点赞
发布博客于 6 月前

Android 热缓解框架解析

随着手机功能的不断丰富,算法复杂性、系统核心频率和集成水平不断提高,而设备的形制和尺寸不断缩小,手机热缓解的重要性日益凸显。为了在手机开始过热时进行有效的热缓解,Android 引入了热...
原创
708阅读
0评论
2点赞
发布博客于 7 月前

Android内存异常机制(用户空间)_NE

常见的Android稳定性异常,有内核异常和Android层异常。内核异常也就是常说的“kernel panic”,简称KE异常;Android层异常又分为java层crash和Nati...
原创
369阅读
1评论
1点赞
发布博客于 7 月前

Android内存异常机制(用户空间)_JE

常见的Android稳定性异常,有内核异常和Android层异常。内核异常也就是常说的“kernel panic”,简称KE异常;Android层异常又分为java层crash和Nati...
原创
154阅读
0评论
0点赞
发布博客于 7 月前

USB技术浅析

《带你遨游USB世界》中,我们已经初步介绍了USB的整体架构,本文将从以下几个方面继续介绍USB的内容。USB3.0有什么新特性?TYPEC介绍otg识别流程一、USB3.0USB是史上...
原创
304阅读
0评论
0点赞
发布博客于 7 月前

Kernel Crypto框架

随着数字时代的发展,每天都有海量的数据产生,并且用户也越来越重视个人隐私数据的安全,从某种意义上讲,用户个人数据的价值正逐步高于设备本身。实现数据安全保护的基础是【密钥 + 加密算法】;...
原创
1130阅读
2评论
1点赞
发布博客于 7 月前

Linux 物理内存外碎片化浅析

本文出现的内核代码来自Linux4.19,如果有兴趣,读者可以配合代码阅读本文。一、Linux物理内存外碎片化概述什么是Linux物理内存碎片化?Linux物理内存碎片化包括两种:1.物...
原创
328阅读
0评论
0点赞
发布博客于 8 月前

安卓系统应用启动流程分析

随着移动开发的兴起,安卓系统的重要性愈加突显。本文简要介绍安卓系统上应用启动流程,对于应用开发、系统定制以及性能优化人员来说,熟悉应用启动流程会使得在今后的工作中更加得心应手,做到知其然...
原创
188阅读
0评论
0点赞
发布博客于 8 月前

Menu Governor

在现代操作系统中,往往很多时候并不需要去执行cpu密集型的任务,而每当这个时候,如果去持续的执行循环去等待新的任务发过来,那需要消耗巨大的能量。所以设计人员设计出一种空闲状态以此CPU进...
原创
207阅读
0评论
0点赞
发布博客于 8 月前

进程内存管理初探

随着cpu技术发展,现在大部分移动设备、PC、服务器都已经使用上64bit的CPU,但是关于Linux内核的虚拟内存管理,还停留在历史的用户态与内核态虚拟内存3:1的观念中,导致在解决一...
原创
267阅读
0评论
1点赞
发布博客于 8 月前

DeviceMapper架构及在android上的应用

在手机上敲一下mount命令,看到很多挂载成dm设备,它们到底是什么?背后的原理又是怎样的?以OPPO Reno3为例:首先请看下:Linux Storage Stack Diagram...
原创
253阅读
0评论
0点赞
发布博客于 9 月前

CFS任务的负载均衡

负载均衡的系列文章共分为三篇,第一篇为框架篇,描述负载均衡的相关原理、场景和框架。本篇作为该系列文章第二篇,主要通过对任务放置场景(task placement)的均衡分布进行分析,以便...
原创
603阅读
0评论
0点赞
发布博客于 9 月前

sdcardfs 浅析

sdcardfs是三星基于wrapfs框架开发的虚拟文件系统,并凭借其出色的IO性能,在Android O上替代FUSE(File system in Userspace),成功上位。不...
原创
250阅读
0评论
0点赞
发布博客于 9 月前

Systrace 的原理、流程及定制

一、原理和基本流程Systrace是android性能调试优化的常用工具,它可以收集进程的活动信息,如界面布局、UI渲染、binder通信等;也可以收集内核信息,如cpu调度、IO活动、...
原创
492阅读
0评论
0点赞
发布博客于 9 月前

Multi-queue 架构分析

Linux上传统的块设备层(Block Layer)和IO调度器(如cfq)主要是针对HDD(hard disk drivers)设计的。我们知道,HDD设备的随机IO性能很差,吞吐量大...
原创
1230阅读
0评论
1点赞
发布博客于 10 月前

ARMv8 异常处理简介

内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:“Unable to...
原创
1277阅读
0评论
2点赞
发布博客于 10 月前

从 radix tree 到 xarray

今天我们来讨论一下内核中从radix tree到xarray结构的演变。radix tree现在普遍应用于page cache中,用于搜索页高速缓存。但是在Linux内核4.20版本之后...
原创
683阅读
0评论
0点赞
发布博客于 10 月前

Linux devfreq framework 剖析

当今的复杂SoC由多个子模块协同工作组成。在执行各种用例的操作系统中,并非SoC中的所有模块都需要始终保持最高性能。为方便起见,将SoC中的子模块分组为域,从而允许某些域以较低的电压和频...
原创
543阅读
0评论
0点赞
发布博客于 10 月前

新型 IO 调度器 BFQ 简介

Linux io调度器有很多种,大多数调度器都经受住了各种市场环境的长时间验证,稳定性、性能得到各种用户的认可,但新的调度器依然展露头角,在4.12内核中出现了一个新的bfq调度器,这...
原创
1324阅读
0评论
4点赞
发布博客于 11 月前

CFS任务的负载均衡(框架篇)

我们描述负载均衡的系列文章一共三篇,第一篇是框架部分,即本文,主要描述了负载均衡相关的原理、场景和框架。后面的两篇是对均衡代码的情景分析,通过对load balance、task pl...
原创
396阅读
0评论
0点赞
发布博客于 1 年前

Android ART dex2oat 浅析

一、什么是dex2oatDex2oat (dalvik excutable file to optimized art file),是一个对 dex 文件进行编译优化的程序,在我们的...
原创
1856阅读
0评论
0点赞
发布博客于 1 年前

linux IO Block layer 解析

早期的 Block 框架是单队列(single-queue)架构,适用于“硬件单队列”的存储设备(比如机械磁盘),随着存储器件技术的发展,支持“硬件多队列”的存储器件越来越常见(比如 ...
原创
811阅读
0评论
0点赞
发布博客于 1 年前

一张图读懂内存反碎片化

-----------分割线•以下为文字版-----------以最简单易懂的方式为大家介绍什么是内存反碎片化技术内存反碎片化引擎,是由 OPPO 自主研发、首个针对物理内存碎片化,虚...
原创
153阅读
0评论
1点赞
发布博客于 1 年前

UFS特性介绍

UFS发展史在手机飞速发展的近 10 年,巨大的市场需求催生出移动存储的快速发展,人们需要越来越来越多的空间和越来越快的存储速度。下图是一个俗称存储 8+256G 的手机模块连接示意图...
原创
2571阅读
0评论
7点赞
发布博客于 1 年前

eMMC简介

1 eMMC是什么eMMC是embedded MultiMediaCard的简称,即嵌入式多媒体卡, 是一种闪存卡的标准,它定义了基于嵌入式多媒体卡的存储系统的物理架构和访问接口及协议...
原创
1023阅读
0评论
1点赞
发布博客于 1 年前

浅谈新型非易失存储

非易失存储,Non-Volatile Memory (NVM),是相对DRAM(掉电后数据丢失)而言的,指可以持久化保存数据的存储介质。广义上来说,NAND Flash也是一种非易失存...
原创
508阅读
0评论
0点赞
发布博客于 1 年前

谈谈内存压缩那些事

1. 技术背景说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。尽管当前andro...
原创
883阅读
0评论
0点赞
发布博客于 1 年前

带你遨游USB世界

1、什么是USBUSB的全称是UniversalSerial Bus,通用串行总线。它的出现主要是为了简化个人计算机与外围设备的连接,增加易用性。USB支持热插拔,并且是即插即用的,...
原创
149阅读
0评论
1点赞
发布博客于 1 年前

F2FS技术拆解

F2FS(Flash Friendly FileSystem)是专门针对SSD、eMMC、UFS等闪存设备设计的文件系统。由三星工程师JaegeukKim于2012年10月发布...
原创
954阅读
0评论
0点赞
发布博客于 1 年前

Binder从入门到放弃(细节篇)

前言Binder从入门到放弃包括了上下篇,上篇是框架部分,下篇通过几个典型的binder通信过程来呈现其实现细节,即本文。一、启动service manager流程Service m...
原创
475阅读
0评论
0点赞
发布博客于 1 年前

dumpsys meminfo 的原理和应用

什么是dumpsysmeminfoAndroid中通过命令dumpsysmeminfo package_name|pid, 查看指定进程的内存使用情况.通过输出的信息,可以看出来应...
原创
1343阅读
0评论
1点赞
发布博客于 1 年前

纯干货,PSI 原理解析与应用

一、什么是 PSIPressure Stall Information 提供了一种评估系统资源压力的方法。系统有三个基础资源:CPU、Memory 和 IO,无论这些资源配置如何增加,...
原创
2486阅读
0评论
1点赞
发布博客于 1 年前

Binder从入门到放弃(框架篇)

前言Binder从入门到放弃包括了上下篇,上篇是框架部分,即本文。下篇通过几个典型的binder通信过程来呈现其实现细节,稍后发布,敬请期待。一、什么是Binder? Binder...
原创
403阅读
1评论
1点赞
发布博客于 2 年前