
Android系统分析
以实例对Android系统进行剖析
tim514
The best thing:still has hair
展开
-
Binder总结(二)—— 缺陷与改进
1.传统Linux IPC机制的缺点1.1性能角度管道、消息队列、Socket实现一次进程通信都需要2次内存拷贝,效率太低;共享内存虽然不需要拷贝内存,但管理复杂;Binder只需要一次内存拷贝,从性能角度来看,低于共享内存方式,优于其它方式。 IPC 数据拷贝次数 share mm 0 Binder 1 pipe MQ SOCKET 2 2.2安全性考虑a. 传统的IPC机制没有安全措施,接收方无法获得对方...转载 2021-11-29 21:39:02 · 502 阅读 · 0 评论 -
Binder总结(一)—— 源起
【前言】Android系统基于linux kernel实现,Linux已经提供了那么多IPC方式,为何要新起Binder?Linux IPC方式起底:1. 管道无名 —— 普通管道pipe: 通常有两种限制:一是单工,只能单向传输;二是只能在父子或者兄弟进程间使用。如果写入无名管道的数据超过其最大值,写操作将阻塞,如果管道中没有数据,读操作将阻塞,如果管道发现另一端断开,将自动退出。无名 —— 流管道s_pipe::去除了第一种限制,为半双工,只能在父子或兄弟进程间使用,可以双向传输。有转载 2021-11-29 20:11:44 · 390 阅读 · 0 评论 -
ADB后台运行程序
使用nohup:adb shell "nohup logcat -r 2000 -f /data/local/test.log &"adb shell "nohup getevent -ltr &"转载 2021-11-27 16:05:08 · 3843 阅读 · 0 评论 -
Android Native SP<>学习
Smart pointer:C++指针不具备构造和析构函数,引入智能指针是为了更好的回收内存资源。Smart Pointer实现方式(模板):1.模板auto_ptr: C++98提供,已废弃2.模板unique_ptr、shared_ptr: C++11提供 unique_tr:建立所有权(ownership)概念,对于特定的对象,只能有一个智能指针可拥有它,赋值操作转让所有权。 shared_ptr:跟踪引用特定对象的智能指针数,赋值时,计数将加1,而指针...转载 2021-11-25 20:03:50 · 336 阅读 · 0 评论 -
Android S启动过程init分析(二) —— Second Stage
上篇文章分析了android init 第一阶段的启动流程,第二阶段比第一阶段更加复杂,接下来会用流程图 + 讲解的方式来分析。4. Init/main.cpp做了什么谜之操作 —— SecondStageMain原创 2021-11-22 17:24:40 · 1583 阅读 · 0 评论 -
Android S启动过程init分析(一) —— First Stage
Init 是Android OS中第一个user space process(pid = 1),守护进程(在后台运行的特殊进程,用于执行启动的系统任务):比如zygote与property服务等,源码位于:system/core/init/ ,本文会分析它的完整启动流程。原创 2021-11-22 15:19:41 · 1299 阅读 · 0 评论 -
Android build.prop编译以及加载过程分析
1、什么是build prop?类似windows的环境变量,编译的添加property后,我们可以在android应用层以及native层直接读取获得该键值对(key/value),它非常友好,对于所有程序都是可见的,可以区分流程分支、添加不同功能、android各层直接交互、记录数据、绕开SElinux执行自定义添加的可执行程序等等。2、build prop来自于何方?build.prop的生成是make系统解析build/core/Makefile:--> build/tools原创 2021-11-20 17:40:27 · 4119 阅读 · 0 评论