五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

軟件測試 | Dalvik虛擬機(jī)是如何執(zhí)行程序的

2023-06-28 17:39 作者:愛測軟件測試  | 我要投稿

Android系統(tǒng)的架構(gòu)采用分層思想,這樣的好處是擁有減少各層之間的依賴性、便于獨(dú)立分發(fā)、容易收斂問題和錯誤等優(yōu)點(diǎn)。Android系統(tǒng)由Linux內(nèi)核、函數(shù)庫、Android運(yùn)行時、應(yīng)用程序框架以及應(yīng)用程序組成。如圖3-4的Android系統(tǒng)架構(gòu)所示,Dalvik虛擬機(jī)屬于Android運(yùn)行時環(huán)境,它與一些核心庫共同承擔(dān)Android應(yīng)用程序的運(yùn)行工作。

Android系統(tǒng)啟動加載完內(nèi)核后,第一個執(zhí)行的是init進(jìn)程,init進(jìn)程首先要做的是設(shè)備的初始化工作,然后讀取inic.rc文件并啟動系統(tǒng)中的重要外部程序Zygote.Zygote進(jìn)程是Android所有進(jìn)程的孵化器進(jìn)程,它啟動后會首先初始化Dalvik虛擬機(jī),然后啟動system_server并進(jìn)入Zygote模式,通過socket等候命令。當(dāng)執(zhí)行一個Android應(yīng)用程序時,system_server進(jìn)程通過socket方式發(fā)送命令給Zygote,Zygote收到命令后通過fork自身創(chuàng)建一個Dalvik虛擬機(jī)的實例來執(zhí)行應(yīng)用程序的入口函數(shù),這樣一個程序就啟動完成了。整個流程如圖3-5所示。

Zygote提供了三種創(chuàng)建進(jìn)程的方法:

fork(),創(chuàng)建一個Zygote進(jìn)程;

forkAndSpecialize(),創(chuàng)建一個非Zygote進(jìn)程;

forkSystemServer(),創(chuàng)建一個系統(tǒng)服務(wù)進(jìn)程。

其中,Zygote進(jìn)程可以再fork()出其他進(jìn)程,非Zygote進(jìn)程則不能fork其他進(jìn)程,而系統(tǒng)服務(wù)進(jìn)程在終止后它的子進(jìn)程也必須終止。

當(dāng)進(jìn)程fork成功后,執(zhí)行的工作就交給了Dalvik虛擬機(jī)。Dalvik虛擬機(jī)首先通過loadClassFromDex()函數(shù)完成類的裝載工作,每個類被成功解析后都會擁有一個ClassObject類型的數(shù)據(jù)結(jié)構(gòu)存儲在運(yùn)行時環(huán)境中,虛擬機(jī)使用gDvm.loadedClass全局哈希表來存儲與查詢所有裝在進(jìn)來的類,隨后,字節(jié)碼驗證器使用dvmVerifyCodeFlow()函數(shù)對裝入的代碼進(jìn)行校驗,接著虛擬機(jī)調(diào)用FindClass()函數(shù)查找并裝載main方法類,隨后調(diào)用dvmInterpret()函數(shù)初始化解釋器并執(zhí)行字節(jié)碼流。整個過程如圖3-6所示。


軟件測試 | Dalvik虛擬機(jī)是如何執(zhí)行程序的的評論 (共 條)

分享到微博請遵守國家法律
武胜县| 禹州市| 大埔县| 浑源县| 广元市| 五华县| 星座| 筠连县| 新邵县| 乐安县| 孝义市| 吐鲁番市| 堆龙德庆县| 南召县| 双鸭山市| 宜兴市| 宁德市| 胶南市| 湖州市| 黑龙江省| 杭锦旗| 邻水| 灵台县| 沁阳市| 郑州市| 昌平区| 大悟县| 嘉峪关市| 邵武市| 长沙市| 彰化市| 临沭县| 萨迦县| 芜湖县| 鲜城| 建德市| 固原市| 南汇区| 台东市| 浦东新区| 凤城市|