看板 LinuxDev 關於我們 聯絡資訊
在Android上 每執行一個APP 系統就會生一個VM 出來給這隻APP用 one app per VM 一隻應用程式會有自己的一個VM 而管理VM的老爸就是 zygote zygote 利用linux fork() system call 來完成建立VM的需求 意即 當有應用程式要執行時 zygote都會利用fork來產生出所對應的新VM 您可以看fork的相關文件 只有父行程的.text section 是共用的 在fork的時候 .data stack and heap 會被複製一份出來到新的pabe table 詳細的介紹可參考 Advanced Programming in the UNIX Environment Note: .data 區間在大部分的情況下子行程並不會對此區間做寫入 因此fork 採用 copy-on-wirte 機制 在沒有寫入需求時 .data是共用的 等有寫入需求在配置記憶體 ※ 引述《JUSTLOVEAYU (海費爾)》之銘言: : 目前我知道android的架構如下: : app : ------ : dalvik (vm) : ------ : linux (kernel) : ------ : hardware : dalvik在執行的時候,linux會把它視為一個process : 然後為它分配4G的虛擬記憶體空間 : 現在問題來了,我想問的是當app在執行時 : 1.linux會為app再另行分配虛擬記憶體空間嗎? : 2.或者app所使用的記憶體空間為linux分配給dalvik的記憶體空間? : 3.還是說dalvik的內部會再另外建構一塊記憶體空間給app使用? : 請前輩們多多指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.109.163
james732:有沒有什麼書籍是比較著墨於這方面?市面上Android的書幾 07/01 09:04
james732:乎都在講AP,甚少提到比較底層的機制.... 07/01 09:04
JUSTLOVEAYU:謝謝你的指教:) 07/01 11:14
heidi0308:我也好想看看底層有關的東西~ 07/01 18:32
heidi0308:目前只能看看LINUX那邊的 07/01 18:32
Gway:講得很好 推一下 ^^ 07/04 20:29
powertodream:最近有看到一本 大陸人寫的android書本 偏底層 07/08 21:49
powertodream:不過android更版太快, 很多東西都已經不像是書上寫 07/08 21:50
powertodream:不過還是值得一讀, 天龍網頁可以找到, 07/08 21:51
powertodream:深入淺出 Android 系統原理及開發要點 07/08 21:52
james732:樓上那本我有了,還是感謝推薦。只是想知道有沒有其他XD 07/08 22:23