JackPeng

Keep on going never give up

Linux信号(signal)机制

信号(signal)是一种软中断,信号机制是进程间通信的一种方式,采用异步通信方式 一、信号类型 Linux系统共定义了64种信号,分为两大类:可靠信号与不可靠信号,前32种信号为不可靠信号,后32种为可靠信号。 1.1 概念 不可靠信号: 也称为非实时信号,不支持排队,信号可能会丢失, 比如发送多次相同的信号, 进程只能收到一次. 信号值取值区间为1~31;...

进程篇—进程整理

整理Android手机,核心进程和线程情况 一、概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题。 1.1 父进程 在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下: kthreadd进程: 是所有内核进程的父进程 init进程 : 是所有用户进程的...

进程状态的切换

进程状态转换,同样可用于线程的状态转移 一、进程状态 进程的生命周期内,有5种状态,分别为new, runnable, running, blocked, dead共5种状态,进程所处的状态,会随着系统负载以及运行环境的变化而不断发生改变(由一个状态切换到另一个状态)。 创建状态(new):进程正在被创建,仅仅在堆上分配内存,尚未进入就绪状态; ...

select/poll/epoll对比分析

select/poll/epoll都是IO多路复用机制,可以同时监控多个描述符,当某个描述符就绪(读或写就绪),则立刻通知相应程序进行读或写操作。本质上select/poll/epoll都是同步I/O,即读写是阻塞的。 一、select 原型: int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds...

Android强弱引用

1.概述 Android源码中,大量存在sp/wp。RefBase是Android的native层(C++)上所有对象的祖师爷,位同Java世界的Object。在Android Native体系架构中,利用RefBase的sp(strong pointer)和wp(weak pointer)通过一套强弱引用计数实现对对象生命周期的管理。 2. RefBase RefBase有一个成员变量m...

Binder系列10—总结

1. Binder概述 从IPC角度来说:Binder是Android中的一种跨进程通信方式,该通信方式在linux中没有,是Android独有; 从Android Driver层:Binder还可以理解为一种虚拟的物理设备,它的设备驱动是/dev/binder; 从Android Native层:Binder是创建Service Manager以及BpBinder/BBin...

Binder系列9—如何使用AIDL

自定义binder架构的 client/ server组件 一、AIDL 1.1 Server端 RemoteService.java 本例是为了演示进程间的通信机制,故需要将Service与Activity处于不同的进程,需要在AndroidManifest.xml中,把service配置成android:process=":remote",进程也可以命名成其他的。 pu...

Binder系列8—如何使用Binder

自定义binder架构的 client/ server组件 一、自定义Native层Binder服务 源码结构: ClientDemo.cpp: 客户端程序 ServerDemo.cpp:服务端程序 IMyService.h:自定义的MyService服务的头文件 IMyService.cpp:自定义的MyService服务 Android.mk:源码bu...

Binder系列7—framework层分析

主要分析Binder在java framework层的框架,相关源码: /framework/base/core/java/android/os/IInterface.java /framework/base/core/java/android/os/IServiceManager.java /framework/base/core/java/android/os/ServiceM...

Binder系列6—获取服务(getService)

基于Android 6.0的源码剖析, 本文Client如何向Server获取服务的过程。 /framework/av/media/libmedia/IMediaDeathNotifier.cpp /framework/native/libs/binder/IServiceManager.cpp 一、 获取服务 在Native层的服务注册,我们选择以media为例来展开讲解,先...