Dalvik虚拟机进程结构分析.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Dalvik虚拟机进程结构分析

Dalvik虚拟机进程模型分析 周毅敏,陈榕 (同济大学基础软件工程中心 上海 200092) zhou.yimin@ 摘 要:Android[1]手机操作系统是Google于2008年推出的智能手机操作系统,它的所有应用都是基于Java语言的,它的类Java虚拟机Dalvik提供了所有应用的运行时环境。Dalvik是一个面向Linux作为嵌入式操作系统[2]设计的虚拟机,尤其是它的面向进程的设计,充分利用了Linux进程管理的特点。本文首先介绍了Dalvik所依赖的基础,即Linux操作系统内核中进程管理的一些特性和传统Java程序对进程的控制;进而论述了Dalvik的进程模型的特点,从API和本地代码两个层面具体阐述了进程运行、创建和之间通信的部分细节;本文旨在为Dalvik的研究和应用提供参考。 关键字:Dalvik;虚拟机;结合子;fork;写时复制 文献标示码:TP311.52 中图分类号:A The Analysis about Process in Dalvik 1,Zhou Yimin 2,Chen Rong (System Software Engineering Centre of Tongji University, Shanghai 200092, China) Abstract:Android mobile operating system is an OS released at 2008 by Google. All the applications are written by Java language. Its semi-Java virtual machine Dalvik provides the whole environment. However, Dalvik is based on the Linux operating system kernel especially its design of the process management which take advantage of the features of Linux process. This article firstly introduces the process in the kernel of Linux operating system and the process in the traditional java program and then illustrates the features of Dalvik process and also depicts some details of processes’ running and creation and communications between them through the two layers API and native codes. The aim of this article is to provide a reference for Dalvik’s research and application. Keywords:Dalvik;Virtual machine;Zygote;fork;Copy-on-write 0 引言 Android是集操作系统、中间件和关键应用为一体的运行于移动设备上的软件包。Dalvik虚拟机是Google自主开发的代号为Dalvik的虚拟机技术是开公司的授权问题,针对移动手机在保证API方面兼容的同时进行大幅优化,占用资源更、运行效率更高Linux的进程结构体(进程控制块,PCB)可谓包罗万象,文件系统、虚拟内存、页面管理、信号应有尽有,使进程资源的控制变得更直接更容易。与有些操作系统创建进程的方式不同的是,Linux使用fork语义而不是creat_proc,这是因为复制进程的效率高于创建进程的效率。即使对应用程序而言fork不如creat_proc易用,但是通过提供一个将复制与创建结合在一起的库函数就可提高易用性。此外,Linux进程间通信使用管道、信号、报文、共享内存[8][9][10]等多种途径。 1.2 Java编程环境中的进程 在传统Java编程环境中,以Sun Java手机平台Phoneme()为例,当虚拟机启动一个Java应用后,程序逻辑在操作系统中运行于单进程状态。虽然对应用开发者而言,存在可以使用的多线程模型,但是对操作系统而言这些线程并不可见,它们完全是虚拟机模拟出来的,操作系统所见到的只是单线程的进程[7]。虽然,API中也提供了创建操作系统意义上的进程的类,即java.lang.Process和java.lang.ProcessBuil

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档