Gityuan

Keep on going never give up

[置顶]Android系统架构开篇

基于Android 6.0或更高版本的源码,专注于分享Android系统原理、架构分析的原创文章,这是Android系列文章的开篇。

NotificationManagerService原理分析

基于Android 7.0源码分析通知机制,相关源码如下: frameworks/base/services/core/java/com/android/server/notification/ - NotificationManagerService.java - ManagedServices.java frameworks/base/core/java/andr...

介绍gdb调试工具

本文介绍Native异常的调试工具gdb的环境准备与常见命令 1. 找到gdbserver 当有Android系统源码,可在/prebuilts目录下查找,一般位于如下: 工具 所在源码路径 32位gdb服务端 prebuilts/misc/android-arm/gdbserver/gdb...

介绍addr2line调试命令

用addr2line可以将函数地址解析为函数名,在抓取调堆栈时Java层的堆栈本身就是显示函数名与行数,这个不需要转换,但对于native和kernel层的则是函数地址,需要借助addr2line来进行转换。 接下来分析介绍一下这个地址转换方法 一、Native地址转换 首先获取symbols表,要找到对应的版本的symbols,以及对应版本的addr2line,这样才能确保完全匹配。 然...

/proc/stat解析

本文解析进程节点含义 一. 概述 1.1 CPU时间 cpu指标 含义 user 用户态时间 nice 用户态时间(低优先级,nice>0) system 内核态时间 ...

Linux进程pid分配法

一. 概述 Android系统创建进程,最终的实现还是调用linux fork方法,对于linux系统每个进程都有唯一的 进程ID(值大于0),也有pid上限,默认为32768。 pid可重复利用,当进程被杀后会回收该pid,以供后续的进程pid分配。 上一篇文章Linux进程管理 详细地介绍了进程fork过程,在copy_process()过程,执行完父进行文件、内存等信息的拷贝,紧接...

Linux进程管理(二)--fork

基于Kernel 4.4源码 kernel/include/linux/sched.h kernel/include/linux/kthread.h kernel/arch/arm/include/asm/thread_info.h kernel/kernel/fork.c kernel/kernel/exit.c kernel/kernel/sched/core.c 一. ...

Linux进程管理(一)

一. 概述 Linux是类Unix系统,借鉴了Unix的设计并实现相关接口,但并非Unix。Linux是由Linus Torvalds于1991年创造的开源免费系统,采用GNU GPL协议保护,下面列举Linux的一些主要特点: Linux系统中万物皆为文件,这种抽象方便操作数据或设备,只需一套统一的系统接口open, read, write, close即可完成对文件的操作 ...

Android SDK与API Level对应关系

Android SDK与API Level Google发布的Android系统习惯以甜点命令,并且首字母以字母顺序表依次排序,对应表如下: 平台版本 API级别 版本代号 发布时间 Android 9.0 28 Pie(馅饼) 2018.8 ...