美文网首页
android 进程和线程的区别,以及系统的进程的基本知识

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

作者: 进击的小大叔 | 来源:发表于2019-12-30 21:47 被阅读0次

进程

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

  • 进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。
  • 进程是是正在运行程序的抽象。它代表运行的CPU,也称进程是对CPU的抽象。(虚拟技- - 术的支持,将一个CPU变幻为多个虚拟的CPU)
  • 系统资源(如内存、文件)以进程为单位分配。
  • 操作系统为每个进程分配了独立的地址空间
  • 操作系统通过“调度”把控制权交给进程。

线程

是cpu调度的基本单元

  • 在一个进程内也需要并行执行多个程序,实现不同的功能。
  • 进程切换的代价、开销比较大;
  • 在进程内创建、终止线程比创建、终止进程要快。同一进程内的线程间切换比进程-间的切换要快,尤其是用户级线程间的切换。线程之间相互通信无须通过内核(同一进程内的线程共享内存和文件)

进程与线程区别

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

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

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

进程间通信

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

binder机制如图:

binder.png

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

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

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

  • client:activity1;
  • sm:ServerManager
  • server:ActivityManagerService
  • 代理类:ActivityManagerProxy
  • ams接到消息后,会告诉activity1我知道了
  • client:ActivityManagerService
  • sm:ServerManager
  • server:activity1
  • 代理类:ApplicationThreadProxy
android系统在启动的时候,本地的系统服务(SystemServer)都会注册到ServerManager上。 我们常见的ActivityManagerServer、PackageManagerServer都属于SystemServer

相关文章

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

    进程 是系统资源物理空间分配的独立单元 进程是程序的一次执行过程。若程序执行两次甚至多次,则需要两个甚至多个进程。...

  • 美团C++开发面试2

    操作系统 1.进程线程区别 以及进程线程间通信 进程线程区别: 进程是程序的⼀次执行过程,是⼀个动态概念,是程序在...

  • Java中的线程快速了解

    线程 进程和线程有什么区别? 进程是指应用程序在运行时的状态,进程会占用系统的cpu以及内存资源。线程是指进程当中...

  • 面试题_ios(四)

    1.进程和线程的区别和联系 Progress和Thread,进程和线程是操作系统里的基本概念线程与进程的区别:线程...

  • 1.3 IPC(进程间通信)

    Q:Android中进程和线程的关系?区别? 进程是操作系统分配和管理资源的单位,线程是CPU调度和管理的单位,是...

  • 线程和进程概念

    线程和进程 进程 线程 线程和进程的区别

  • Android源码阅读笔记

    Android系统简介 Android进程和线程

  • 进程和线程的区别

    线程和进程的区别:进程和线程都是由系统程勋运行的基本单元,系统利用该基本单元实现系统对应用的并发性。 进程和线程的...

  • 跨进程通信和Binder机制

    Android中进程和线程的关系和区别 线程是CPU调度的最小单元,同时线程是一种有限的系统资源;而进程一般指一个...

  • JAVA并发编程(一)基础知识

    1.基础概念: 1.1. 进程、轻量级进程、内核线程、用户线程的关系和区别 在现代操作系统中,进程支持多线程。进程...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/pphvoctx.html