国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Android核心分析 之九-------Zygote Service
Zygote Service
在本章我們會(huì)接觸到這兩個(gè)單詞:
Zygote [生物] 受精卵, 接合子, 接合體
Spawn:產(chǎn)卵
通過(guò)這兩個(gè)單詞,我們就可以大體知道Zygote是干什么的了,就是叫老母雞下蛋。通過(guò)“Zygote”產(chǎn)出不同的子“Zygote”。從大的架構(gòu)上講,Zygote是一個(gè)簡(jiǎn)單的典型C/S結(jié)構(gòu)。其他進(jìn)程作為一個(gè)客服端向Zygote發(fā)出”孵化”請(qǐng)求,Zygote接收到命令就“孵化”出一個(gè)Activity進(jìn)程來(lái)。

Zygote系統(tǒng)代碼組成及其調(diào)用結(jié)構(gòu):
Zygote.java
  提供訪問(wèn)Dalvik “zygote”的接口。主要是包裝Linux系統(tǒng)的Fork,以建立一個(gè)新的VM實(shí)例進(jìn)程。
ZygoteConnection.java
  Zygote的套接口連接管理及其參數(shù)解析。其他Actvitiy建立進(jìn)程請(qǐng)求是通過(guò)套接口發(fā)送命令參數(shù)給Zygote。
ZygoteInit.java
  Zygote的main函數(shù)入口。
 
Zygote系統(tǒng)代碼層次調(diào)用
 
 

main()
 startSystemServer()…
 runSelectLoopMode()
  Accept socket connection
   Conntecion.RunOnce()
   Read argument
    folkAndSpecialize
 

 
folkAndSpecialize使用Native函數(shù)Dalvik_dalvik_system_Zygote_forkAndSpecialize
 
 
//native 的獲取
 dalvik\vm\native
 
//dalvik_system_Zygote.c
  const DalvikNativeMethod dvm_dalvik_system_Zygote[] = {
    { "fork",            "()I",
        Dalvik_dalvik_system_Zygote_fork },
    { "forkAndSpecialize",            "(II[II[[I)I",
        Dalvik_dalvik_system_Zygote_forkAndSpecialize },
    { "forkSystemServer",            "(II[II[[I)I",
        Dalvik_dalvik_system_Zygote_forkSystemServer },
    { NULL, NULL, NULL },
};
 

 
在這里我們就有了Zygote服務(wù)的全貌理解,也在Code中印證了?!緫?yīng)yk_hu0621修正】{由于Android中沒(méi)有具體應(yīng)用程序的入口,都是通過(guò)啟動(dòng)Actvity來(lái)啟動(dòng)相關(guān)的Android應(yīng)用,而這個(gè) Android應(yīng)用則對(duì)應(yīng)著Linux進(jìn)程,Activity便Host在這個(gè)應(yīng)用程序上。}
 
{原文:Activity在本質(zhì)上是個(gè)什么東西,就是一個(gè)Linux進(jìn)程}
 
從分析中我們可以看到,Android使用了Linux的fork機(jī)制。在Linux中Fork是很高效的。
 
一個(gè)Android的應(yīng)用實(shí)際上一個(gè)Linux進(jìn)程,所謂進(jìn)程具備下面幾個(gè)要素,
 

 
 a.要有一段程序供該進(jìn)程運(yùn)行,程序是可以被多個(gè)進(jìn)程共享的。
 b..進(jìn)程專(zhuān)用的系統(tǒng)堆??臻g。
 c.進(jìn)程控制塊,在linux中具體實(shí)現(xiàn)是task_struct
 d.有獨(dú)立的存儲(chǔ)空間。
 
fork 創(chuàng)造的子進(jìn)程復(fù)制了父親進(jìn)程的資源,包括內(nèi)存的內(nèi)容task_struct內(nèi)容,在復(fù)制過(guò)程中,子進(jìn)程復(fù)制了父進(jìn)程的task_struct,系統(tǒng)堆??臻g和頁(yè)面表,而當(dāng)子進(jìn)程改變了父進(jìn)程的變量時(shí)候,會(huì)通過(guò)copy_on_write的手段為所涉及的頁(yè)面建立一個(gè)新的副本。所以只有子進(jìn)程有改變變量時(shí),子進(jìn)程才新建了一個(gè)頁(yè)面復(fù)制原來(lái)頁(yè)面的內(nèi)容,基本資源的復(fù)制是必須的,整體看上去就像是父進(jìn)程的獨(dú)立存儲(chǔ)空間也復(fù)制了一遍。
 
 再看看下面Google在講解Dalvik虛擬機(jī)的圖片,我們就大體有了Android系統(tǒng)中Actvitiy的實(shí)際映射狀態(tài)有了基本的認(rèn)識(shí)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Android 之 zygote 與進(jìn)程創(chuàng)建
Dalvik虛擬機(jī)進(jìn)程和線程的創(chuàng)建過(guò)程分析
Android開(kāi)發(fā)資料
Android安全與逆向之Dalvik虛擬機(jī)架構(gòu)和如何執(zhí)行程序以及JIT(即時(shí)編譯)
圖解Android應(yīng)用程序構(gòu)建原理
Android之system_server與zygote之作用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服