Devik进程、Linux进程和线程

        Devik虚拟机是运行在Linux操作系统上的,Linux操作系统并没有纯粹的进程概念,只要两个进程共享一个地址空间,那么就可以认为他们是同一个进程的两个线程。Linux提供了两个fork和clone调用,其中,前者是用来创建进程的,而后者是用来创建线程的。

        一般来说虚拟机的进程和线程都是和本地操作系统的进程和线程一一对应的,这样的好处是可以使本地操作系统来调度进程和线程。

每一个安卓应用程序都有一个Devik虚拟机实例。这样做的好处是安卓应用程序之间的进程不会受到影响,也就是说,一个安卓应用程序的进程意外终止,不会影响其他应用程序的进行。

每一个安卓应用程序都是由一个称为Zygote的进程fork出来的,Zygote进程是由init进程启动的,也就是在系统启动的时候启动。Zygote进程在启动的时候会启动虚拟机实例,并且这个虚拟机实例将所有的Java核心库都加载起来。每当Zygote进程需要创建一个安卓应用程序进程的时候,他就通过复制自身来实现,也就是通过fork系统调用来实现。这些被fork出来的安卓应用程序进程,一方面是复制了Zygote进程的虚拟机实例,另一方面是与Zygote进程共享了同一套JAVA核心库这样不紧安卓应用程序创建的很快,而且所以的应用程序共用一套JAVA核心库节省了内存空间。

你可能感兴趣的:(安卓)