ibookmanager bookmanager = ibookmanager.stub.asinte***ce(service);
asinte***ce就是實現這個轉換的。當客戶端和服務端位於同乙個程序,那麼此方法返回就是服務端的stub物件本身,否則返回式系統封裝後的stub.proxy這個**物件。用形象的說法,在跨程序中,客戶端是和它裡面的**物件進行通訊,而這個**進行再和服務端通訊,就相當於客戶端和服務端進行了通訊,而這個通訊就彷彿是在客戶端這乙個程序中進行的。
客戶程序接收到資料後,發現資料是binder_type_hanel後,取出其中的handle值去再呼叫processstate類裡面乙個函式得到binder引用物件。簡單介紹下processstate類,每個程序只有乙個processstate,它做了兩件事,乙個開啟binder裝置,另外是呼叫mmap()在驅動中分配了一塊記憶體空間,用於binder驅動接收傳遞給程序的binder資料,這塊記憶體是核心和程序共享。普通ipc傳遞資料時,資料先從程序空間複製到核心,再從核心複製到另乙個程序空間中。而在binder機制中就不需要複製兩次了,因為每乙個使用者程序有一塊記憶體是和核心共享的,這樣,從某乙個使用者程序傳送的資料,核心直接從這個共享記憶體中取出資料然後複製到另外乙個程序和核心共享的記憶體中,這樣就資料傳遞就只複製了一次,提高了效率。
Binder學習 二 Binder機制解析
程序隔離 程序隔離是為保護作業系統中程序互不干擾而設計的一組不同硬體和軟體的技術。這個技術是為了避免程序a寫入程序b的情況發生。程序的隔離實現,使用了虛擬位址空間。虛擬位址 虛擬位址是對整個記憶體的抽像描述。它是相對於物理記憶體來講的,可以直接理解成 不真實的 假的 記憶體,例如,乙個0x08000...
學習筆記二
1 算符運算子 1 5為1 1 5為 1 即只看被除數的符號。b a 先賦值後運算 a b 先運算後賦值。2 字串資料與任何資料使用 都是相連線,最終都會變成字串,例如 ad 2 結果為 ad2 3 轉義字元 通過 來裝便後面字母或符號的含義 n換行 linux b 退格 r 按下回車鍵,windo...
學習筆記(二)
k 近鄰演算法中的python知識 1.建立乙個3x3的單位矩陣a,a.shape的結果為 3,3 2.建立乙個一維矩陣b,b.shape為矩陣的長度。3.建立乙個4x2的矩陣c,c.shape 1 為第一維的長度 2,c.shape 0 為第二維的長度 4 4.tile函式位於python模組 n...