Devik 进程,linux 进程,线程的区别

Posted YaoYong_BigData

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Devik 进程,linux 进程,线程的区别相关的知识,希望对你有一定的参考价值。

Dalvik 虚拟机运行在Linux 操作系统之上。Linux 操作系统并没有纯粹的线程概念,只要两个进程共享一个地址空间,那么就可以认为它们是同一个进程的两个线程。Linux 系统提供了两个fork 和clone 调用,其中,前者是用来创建进程的,而后者是用来创建线程的。
一般来说,虚拟机的进程和线程都是和目标机器本地操作系统的进程和线程一一对应的,这样的好处是可以使本地操作系统来调度进程和线程。
每个android 应用程序进程都有一个Dalvik 虚拟机实例。这样做得好处是Android 应用程序进程之间不会互相影响,也就是说,一个Android 应用程序进程的意外终止,不会影响到其他的应用程序进程的正常运行。
每个Android 应用程序进程都是由一种称为Zygote 的进程fork 出来的。Zygote进程是由init 进程启动起来的,也就是在系统启动的时候启动的。Zygnote 进程在启动的时候,会创建一个虚拟机实例,并且在这个虚拟机实例将所有的Java 核心库都加载起来。每当Zygote 进程需要创建一个Android 应用程序进程的时候,它就通过复制自身来实现,也就是通过fork 系统调用来实现。这些被fork 出来的Android 应用程序进程,一方面是复制了Zygote 进程中的虚拟机实例,另外一方面是与Zygote 进程共享了同一套Java 核心库。这样不仅Android 程序进程的创建很快,而且所有的应用程序都共享同一套Java 核心库而节省了内存空间。

以上是关于Devik 进程,linux 进程,线程的区别的主要内容,如果未能解决你的问题,请参考以下文章

31到Android面试题,收藏下?

Android 高级面试题及答案

Linux线程及同步

linux下 进程信号量和线程信号量的区别和联系是啥

Linux多进程与多线程之间的区别

聊聊Linux中线程和进程的联系与区别!