進(jìn)程空間劃分
一個進(jìn)程分為 用戶空間 / 內(nèi)核空間。進(jìn)程間用戶空間數(shù)據(jù)不可共享,內(nèi)核空間數(shù)據(jù)可以共享。
Android 進(jìn)程間是相互獨立隔離的,保證安全,進(jìn)程間交互是通過系統(tǒng)調(diào)用進(jìn)行的
畫圖。
那跨進(jìn)程通信的基本原理是?
發(fā)送進(jìn)程通過系統(tǒng)調(diào)用,將需要發(fā)送的數(shù)據(jù)copy到linux進(jìn)程的內(nèi)核空間中的緩存區(qū)中(copy_from_user,copy一次)
內(nèi)核服務(wù)進(jìn)程喚醒接收線程,通過系統(tǒng)調(diào)用將數(shù)據(jù)發(fā)送到接收進(jìn)程的用戶空間中,(copy_to_user,又copy一次)
缺點:效率低,copy兩次;接受數(shù)據(jù)的緩存要由接收方提供,但是接收方不知道到底多大滿足要求,盡可能大。
浪費內(nèi)存空間,還有就是通過調(diào)取api獲取消息頭信息體大小,浪費時間。
進(jìn)程的概念主要有什么?
進(jìn)程的概念主要有兩點:第一,進(jìn)程是一個實體。每一個進(jìn)程都有它自己的地址空間,一般情況下,包括文本區(qū)域(text region)、數(shù)據(jù)區(qū)域(data region)和堆棧(stack region)。文本區(qū)域存儲處理器執(zhí)行的代碼;數(shù)據(jù)區(qū)域存儲變量和進(jìn)程執(zhí)行期間使用的動態(tài)分配的內(nèi)存;堆棧區(qū)域存儲著活動過程調(diào)用的指令和本地變量。第二,進(jìn)程是一個“執(zhí)行中的程序”。程序是一個沒有生命的實體,只有處理器賦予程序生命時(操作系統(tǒng)執(zhí)行之),它才能成為一個活動的實體,我們稱其為進(jìn)程。
關(guān)鍵詞: 進(jìn)程空間劃分 需要注意 進(jìn)程的概念 主要有什么