android 进程和线程的区别,以及系统的进程的基本知识

2019-12-30  本文已影响0人  进击的小大叔

进程

是系统资源物理空间分配的独立单元

线程

是cpu调度的基本单元

进程与线程区别

定义方面:进程是程序在某个数据集合上的一次运行活动;线程是进程中的一个执行路径。(进程可以创建多个线程)

角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是CPU调度的单位。

资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
开销方面。进程切换的开销较大。线程相对较小。(前面也提到过,引入线程也出于了开销的考虑。)

进程间通信

为了解决进程见通信的问题,android采用binder机制实现IPC(Inter-Process Communication)

binder机制如图:

binder.png

client通过binder驱动,在sm中找到server的注册,通过与注册类(可能就是代理类)的通信,实现和server的通信。

举例:
android四大组件的底层通信机制都是基于Binder的。
client端和server是根据消息的发送和接收方不同,随时在改变。
一下是我的猜测,可能不准确。
以activity跳转为例:

首先activity1要告诉ams我要进行跳转了,跳转的目的地是activity2。

android系统在启动的时候,本地的系统服务(SystemServer)都会注册到ServerManager上。 我们常见的ActivityManagerServer、PackageManagerServer都属于SystemServer
上一篇 下一篇

猜你喜欢

热点阅读