首页 > 试题广场 >

下面关于Android dvm的进程和Linux的进程,应用

[单选题]
下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是
  • DVM指dalvik的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立 的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念.
  • DVM指dalvik的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念.
  • DVM指dalvik的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念
  • DVM指dalvik的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念.
推荐
一句话:每一个DVM都是在Linux 中的一个进程! 选择D...

先来概念:
 我们来看看每个android进程如何产生的,
 下面来对Zygote进程孵化新进程的过程做进一步了解:
  1. Zygote进程调用fork()函数创建出Zygote' 子进程,
  2. 子进程Zygote' 共享父进程Zygote的代码区与连接信息。
    如下图所示,Fork()橙色箭头左边是Zygote进程,右边是创建出的Zygote‘子进程;然后Zygote’ 子进程将执行流程交给应用程序A,Android程序开始运行。
新生成的应用程序A会使用已有Zygote父进程的库与资源的连接信息,所以运行速度很快。

                   

       
   另外,对于上图,Zygote启动后,初始并运行DVM,而后将需要的类与资源加载到内存中。随后调用fork()创建出Zygote' 子进程,接着子进程动态加载并运行应用程序A。
   运行的应用程序A会使用Zygote已经初始化并启动运行的DVM代码,通过使用已加载至内存中的类与资源来加快运行速度。

   我们来看看Android进程模型

Linux通过调用start_kernel函数来启动内核,当内核启动模块启动完成后,将启动用户空间的第一个进程——Init进程,下图为Android系统的进程模型图:

从上图可以看出,Linux内核在启动过程中,创建一个名为Kthreadd的内核进程,PID=2,用于创建内核空间的其他进程;同时创建第一个用户空间Init进程,该进程PID = 1,用于启动一些本地进程,比如Zygote进程,而Zygote进程也是一个专门用于孵化Java进程的本地进程,上图清晰地描述了整个Android系统的进程模型


            

编辑于 2015-02-02 14:32:30 回复(10)
D

DVM dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 Linux  中的一个进程,所以说可以认为是同一个概念。 


发表于 2015-03-01 16:18:55 回复(0)
D!
发表于 2015-01-09 10:05:30 回复(0)
每一个dvm,一个Linux进程; 
发表于 2019-09-04 13:17:16 回复(0)

DVM指dalvik虚拟机,每一个android应用都运行在自己的进程中,每一个应用都是一个dalvik虚拟机实例,DVM是linux里的一个进程

发表于 2019-03-22 22:31:55 回复(0)

DVM

 

dalivk

 

的虚拟机。每一个

 

Android

 

应用程序都在它自己的进程中运行,都拥有一个独立的

 

Dalvik

 

虚拟机实例。而每一个

 

DVM

 

都是在

 

Linux 

 

中的一个进程,所以说可以认为是同一个概念。

发表于 2018-08-27 17:53:11 回复(0)
一句话:每一个DVM都是在Linux 中的一个进程! 选择D... 先来概念: 我们来看看每个android进程如何产生的, 下面来对Zygote进程孵化新进程的过程做进一步了解: Zygote进程调用fork()函数创建出Zygote' 子进程, 子进程Zygote' 共享父进程Zygote的代码区与连接信息。 如下图所示,Fork()橙色箭头左边是Zygote进程,右边是创建出的Zygote‘子进程;然后Zygote’ 子进程将执行流程交给应用程序A,Android程序开始运行。 新生成的应用程序A会使用已有Zygote父进程的库与资源的连接信息,所以运行速度很快。 另外,对于上图,Zygote启动后,初始并运行DVM,而后将需要的类与资源加载到内存中。随后调用fork()创建出Zygote' 子进程,接着子进程动态加载并运行应用程序A。 运行的应用程序A会使用Zygote已经初始化并启动运行的DVM代码,通过使用已加载至内存中的类与资源来加快运行速度。 我们来看看Android进程模型 Linux通过调用start_kernel函数来启动内核,当内核启动模块启动完成后,将启动用户空间的第一个进程——Init进程,下图为Android系统的进程模型图: 从上图可以看出,Linux内核在启动过程中,创建一个名为Kthreadd的内核进程,PID=2,用于创建内核空间的其他进程;同时创建第一个用户空间Init进程,该进程PID = 1,用于启动一些本地进程,比如Zygote进程,而Zygote进程也是一个专门用于孵化Java进程的本地进程,上图清晰地描述了整个Android系统的进程模型
发表于 2017-03-03 22:19:43 回复(0)
DDD
发表于 2016-08-02 09:20:34 回复(0)
假如两个应用程序的签名相同,是可以共享同一个进程的啊,不应该选A么
发表于 2016-07-12 23:22:53 回复(0)
这***安卓题也往这里搞啊 ?
发表于 2016-04-26 21:41:32 回复(1)
DVM   dalivk   的虚拟机。每一个   Android   应用程序都在它自己的进程中运行,都拥有一个独立的   Dalvik   虚拟机实例。而每一个   DVM   都是在   Linux    中的一个进程,所以说可以认为是同一个概念。
发表于 2016-03-15 17:21:12 回复(0)
D
发表于 2015-07-10 23:44:27 回复(0)
发表于 2015-01-23 12:16:54 回复(0)
D
发表于 2015-01-09 09:06:17 回复(0)
d
发表于 2014-12-29 22:34:22 回复(0)
肯定是一样的啊,必须的
发表于 2014-12-04 14:29:50 回复(0)