• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Dalvik虛擬機(jī)進(jìn)程模型研究

      2019-09-09 13:33:49孫丹
      數(shù)碼世界 2019年6期
      關(guān)鍵詞:線程進(jìn)程應(yīng)用程序

      孫丹

      摘要:不同于傳統(tǒng)Java程序,DaMk虛擬機(jī)能夠完成多個(gè)獨(dú)立進(jìn)程創(chuàng)建?;谶@種認(rèn)識(shí),本文在對(duì)Dalvik虛擬機(jī)展開分析的基礎(chǔ)上,對(duì)Dalvik虛擬機(jī)進(jìn)程模型進(jìn)行了探討,發(fā)現(xiàn)其能夠在吸收Linux和Java進(jìn)程控制特點(diǎn)基礎(chǔ)上,利用特有進(jìn)程實(shí)現(xiàn)API控制,因此在DaMk虛擬機(jī)應(yīng)用時(shí)還要把握這一特征,加強(qiáng)平臺(tái)進(jìn)程控制管理。

      關(guān)鍵詞:DaMk虛擬機(jī)進(jìn)程模型

      引言

      Android平臺(tái)目前是智能手機(jī)廣泛應(yīng)用的平臺(tái),其采用Dalvik虛擬機(jī)技術(shù)保證手機(jī)多個(gè)應(yīng)用程序在運(yùn)行過程中減少資源占用,并保持較高運(yùn)行效率Da Mk虛擬機(jī)之所以能夠?qū)崿F(xiàn)平臺(tái)程序兼容優(yōu)化,與其進(jìn)程創(chuàng)建特性有著直接關(guān)系。因此,還要加強(qiáng)Dalvik虛擬機(jī)進(jìn)程模型分析,以便掌握Dalvik虛擬機(jī)進(jìn)程創(chuàng)建優(yōu)缺點(diǎn),達(dá)到合理應(yīng)用虛擬技術(shù)的目標(biāo)。

      1 Dalvik虛擬機(jī)概述

      Dalvik虛擬機(jī)實(shí)際上就是Google公司為Android平臺(tái)設(shè)計(jì)的虛擬機(jī),是Android移動(dòng)設(shè)備平臺(tái)核心組成部分之一。采用Dalvik虛擬機(jī),能夠?yàn)檗D(zhuǎn)換為Dalvik Executable(簡稱,dex)格式的Java程序運(yùn)行提供支持。作為Dalvik專用壓縮格式,.dex能夠在處理速度及內(nèi)存有限的運(yùn)算系統(tǒng)中得到應(yīng)用,可以同時(shí)對(duì)多個(gè)虛擬機(jī)實(shí)例進(jìn)行運(yùn)用,并將每個(gè)應(yīng)用當(dāng)成是獨(dú)立Linux進(jìn)程。通過創(chuàng)建獨(dú)立進(jìn)程,能夠避免虛擬機(jī)崩潰時(shí)出現(xiàn)所有程序被關(guān)閉問題。但與此同時(shí),創(chuàng)建多個(gè)獨(dú)立進(jìn)程,可能導(dǎo)致系統(tǒng)運(yùn)行速度減慢,因此Dalvik虛擬機(jī)被看成是拖慢Android的根本原因。

      2 Dalvik虛擬機(jī)進(jìn)程模型分析

      2.1虛擬機(jī)進(jìn)程與線程

      所謂的Dalvik虛擬機(jī)進(jìn)程,從通俗意義上來講就是Android應(yīng)用程序進(jìn)程,實(shí)際Dalvik虛擬機(jī)在創(chuàng)建進(jìn)程時(shí),將對(duì)一個(gè)成員函數(shù)進(jìn)行調(diào)用。而一旦發(fā)現(xiàn)函數(shù)為JNI方法,其將直接跳轉(zhuǎn)到相應(yīng)地址執(zhí)行程序,即在本地操作系統(tǒng)上運(yùn)行程序,并非利用虛擬機(jī)解釋器執(zhí)行操作。因此采用JNI方法,可以實(shí)現(xiàn)Android應(yīng)用程序與本地操作系統(tǒng)直接通信。除了對(duì)Java代碼進(jìn)行執(zhí)行,Dalvik虛擬機(jī)能夠執(zhí)行Native代碼,即c/c++函數(shù)。在函數(shù)調(diào)用期間,虛擬機(jī)能夠利用本地操作系統(tǒng)直接進(jìn)行進(jìn)程或線程創(chuàng)建,得到相應(yīng)的Linux進(jìn)程和線程。利用Native代碼創(chuàng)建進(jìn)程,需要對(duì)虛擬機(jī)進(jìn)行加載.因此可以看成是虛擬機(jī)的一個(gè)進(jìn)程。如果創(chuàng)建出的線程能夠?qū)ava代碼進(jìn)行執(zhí)行,則能看成是虛擬機(jī)的一個(gè)線程。

      2.2進(jìn)程創(chuàng)建過程

      Dalvik虛擬機(jī)進(jìn)程能夠利用Activity Manager Service服務(wù)提供。分析進(jìn)程創(chuàng)建過程可以發(fā)現(xiàn),該服務(wù)能夠利用android.Os.Process類的靜態(tài)成員函數(shù)start進(jìn)行Zygote進(jìn)程創(chuàng)建,然后由該進(jìn)程通過dalvik.system.Zygote類的靜態(tài)成員函數(shù)forkAndSpecialize實(shí)現(xiàn)虛擬機(jī)線程創(chuàng)建。相較于進(jìn)程,線程占用資源少,能夠與其他線程共享資源。但線程管理相對(duì)麻煩,需要解決同步問題-個(gè)線程的崩潰可能引起其他線程崩潰從Java語言層面來講,可以利用java.lang.Thread類的成員函數(shù)start進(jìn)行虛擬機(jī)線程創(chuàng)建。在實(shí)際創(chuàng)建過程中,將完成本地操作系統(tǒng)進(jìn)程創(chuàng)建,得到Linux進(jìn)程。不同于之前創(chuàng)建的Linux進(jìn)程,該進(jìn)程無對(duì)應(yīng)虛擬機(jī)實(shí)例,因此不會(huì)自動(dòng)附加到虛擬機(jī)中,而是需要對(duì)Java代碼進(jìn)行執(zhí)行才能完成附加。

      2.3創(chuàng)建方法比較

      由Dalvik虛擬機(jī)進(jìn)程創(chuàng)建過程可知,其基本采用本地方法實(shí)現(xiàn)進(jìn)程創(chuàng)建。采用fork方法,得到的子進(jìn)程僅為半初始化狀態(tài),是zygote進(jìn)程。在父進(jìn)程完成addNeWHeap調(diào)用的情況下,將采用寫時(shí)復(fù)制方式實(shí)現(xiàn)進(jìn)程共享,完成初始化操作。采用forkAndSpecialize方法,將單獨(dú)完成子進(jìn)程的創(chuàng)建,需要對(duì)HeapWorker線程進(jìn)行啟動(dòng),完成對(duì)象終結(jié)函數(shù)的執(zhí)行,進(jìn)行對(duì)象清理和歸隊(duì)引用,從而完成線程調(diào)試。通過執(zhí)行addNewHeap,能夠進(jìn)行新堆創(chuàng)建,為特定任務(wù)運(yùn)行提供支持。采用forkSystemServer方法,基本與forkAndSpecialize擁有相同進(jìn)程創(chuàng)建過程,但在子進(jìn)程結(jié)束后將不會(huì)進(jìn)行父進(jìn)程的創(chuàng)建。在Linux進(jìn)程中,對(duì)forx進(jìn)行調(diào)用,得到的父子進(jìn)程堆棧不存在關(guān)聯(lián),但除dex文件以往的其他文件均能對(duì)虛擬機(jī)核心庫代碼進(jìn)行共享,因此不僅可以使Linux進(jìn)程的優(yōu)勢(shì)充分發(fā)揮,也能使系統(tǒng)內(nèi)存得到節(jié)省。從比較結(jié)果來看,Dalvik虛擬機(jī)在對(duì)傳統(tǒng)Java進(jìn)程控制API方式進(jìn)行保留的同時(shí),也對(duì)Linux操作系統(tǒng)特點(diǎn)進(jìn)行了汲取,能夠利用特有進(jìn)程實(shí)現(xiàn)API的控制,利用forx語義或控制信號(hào)實(shí)現(xiàn)進(jìn)程創(chuàng)建,因此在系統(tǒng)啟動(dòng)時(shí)就能完成系統(tǒng)服務(wù)進(jìn)程創(chuàng)建。

      3結(jié)論

      綜上所述,在開源的Android系統(tǒng)中,Dalvik虛擬機(jī)能夠通過加強(qiáng)Java應(yīng)用和吸取Linux特點(diǎn)利用特有進(jìn)程完成API控制,因此才能在大量智能移動(dòng)平臺(tái)上得到使用和移植。相信伴隨著虛擬技術(shù)的發(fā)展,Dalvik虛擬機(jī)也將突破運(yùn)行速度方面的局限性。

      參考文獻(xiàn)

      [1]尹學(xué)淵,陳興蜀,陶術(shù)松,等.一種無代理虛擬機(jī)進(jìn)程監(jiān)控方法[J],南京大學(xué)學(xué)報(bào)(自然科學(xué)),2019,55(02):221 230.

      [2]陳佳昕,虛擬機(jī)隱藏進(jìn)程檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]現(xiàn)代計(jì)算機(jī)(專業(yè)版),2019(O1):93-96.

      猜你喜歡
      線程進(jìn)程應(yīng)用程序
      債券市場對(duì)外開放的進(jìn)程與展望
      中國外匯(2019年20期)2019-11-25 09:54:58
      刪除Win10中自帶的應(yīng)用程序
      淺談linux多線程協(xié)作
      社會(huì)進(jìn)程中的新聞學(xué)探尋
      我國高等教育改革進(jìn)程與反思
      Linux僵死進(jìn)程的產(chǎn)生與避免
      Linux線程實(shí)現(xiàn)技術(shù)研究
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
      三星電子將開設(shè)應(yīng)用程序下載商店
      彭山县| 武宣县| 枞阳县| 潢川县| 汝南县| 西青区| 南投市| 西乌| 安新县| 法库县| 平潭县| 民权县| 浮山县| 磐石市| 北宁市| 晋州市| 西和县| 景泰县| 仁布县| 龙州县| 武平县| 阳泉市| 唐海县| 蓝田县| 犍为县| 罗源县| 涪陵区| 齐河县| 开封市| 徐汇区| 崇信县| 安国市| 南充市| 刚察县| 武平县| 襄樊市| 罗田县| 孟州市| 渝北区| 吕梁市| 咸宁市|