中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站建設(shè) 做一個網(wǎng)站需要多少錢免費自媒體網(wǎng)站

網(wǎng)站建設(shè) 做一個網(wǎng)站需要多少錢,免費自媒體網(wǎng)站,c語言做網(wǎng)站,大棚建設(shè)的網(wǎng)站1.簡單介紹下binderbinder是一種進程間通訊的機制進程間通訊需要了解用戶空間和內(nèi)核空間每個進程擁有自己的獨立虛擬機,系統(tǒng)為他們分配的地址空間都是互相隔離的。如兩個進程需要進行通訊,則需要使用到內(nèi)核空間做載體,內(nèi)核空間是所有進程共享…

1.簡單介紹下binder

binder是一種進程間通訊的機制

進程間通訊需要了解用戶空間和內(nèi)核空間

每個進程擁有自己的獨立虛擬機,系統(tǒng)為他們分配的地址空間都是互相隔離的。如兩個進程需要進行通訊,則需要使用到內(nèi)核空間做載體,內(nèi)核空間是所有進程共享的一塊內(nèi)存區(qū)域。而用戶空間切到內(nèi)核空間需要使用到系統(tǒng)api ioctl進行通訊。內(nèi)核獲取用戶的數(shù)據(jù)需要使用copy_from_user,內(nèi)核將數(shù)據(jù)發(fā)送給其他進程需要使用copy_to_user,這兩個方法是有性能開銷的,對于socket就是使用的這種模式,為了減少這部分的開銷,內(nèi)核提供了binder,binder只需要一次拷貝就可以實現(xiàn)進程通訊.

主要是使用mmap的原理:

在內(nèi)核空間和用戶空間都開辟一塊虛擬內(nèi)存區(qū)域同時指向一塊物理地址,這樣內(nèi)核需要傳遞數(shù)據(jù)給用戶空間時,只需要將數(shù)據(jù)拷貝到對應(yīng)的虛擬內(nèi)存地址中,用戶可以通過虛擬內(nèi)存映射關(guān)系,獲取到內(nèi)核中的數(shù)據(jù),實現(xiàn)了一次拷貝通訊。

binder架構(gòu)上面使用的是C/S架構(gòu):

binder中有三要素:
客戶端,服務(wù)端和ServiceManager
復(fù)制代碼

binder整體過程:

1.注冊服務(wù)2.獲取服務(wù)3.使用服務(wù)

2.Binder的定向制導(dǎo),如何找到目標Binder,喚起進程或者線程?

數(shù)據(jù)結(jié)構(gòu)流程:

1.server注冊過程 1.server傳入一個flat_binder_object給內(nèi)核態(tài)。內(nèi)核根據(jù)這個flat_binder_object創(chuàng)建binder_node節(jié)點,為每個進程服務(wù),內(nèi)部有個binder_proc.proc = server進程2.serviceManager在內(nèi)核態(tài)創(chuàng)建binder_ref引用這個binder_node,內(nèi)部有一項desc = 1,2,3..,在用戶態(tài)會創(chuàng)建一個服務(wù)鏈表{name ="server name",handle = "server handle"}
2.client獲取服務(wù)過程3.client向sm查詢服務(wù),傳遞name4.sm返回handle給驅(qū)動程序5.驅(qū)動程序在sm的binder_ref_desc紅黑樹中根據(jù)handle找到binder_ref,再根據(jù)binder_ref.node找到binder_node,最后給client創(chuàng)建新的binder_ref指向這個binder_node,他的desc從1開始binder_ref{desc=1,node = binder_node},驅(qū)動返回desc給client,即handle總結(jié):sm中的handle順序是根據(jù)服務(wù)注冊順序顯示,返回給client中的handle是根據(jù)服務(wù)獲取的順序顯示的
3.client使用handle過程6.:驅(qū)動里面根據(jù)handle找到找到binder_ref,根據(jù)binder_ref找到binder_node,根據(jù)binder_node找到進程server
復(fù)制代碼

注:

flat_binder_object{type:是binder實體還是引用,只有需要注冊的服務(wù)可以傳binder實體,其他只能傳handle引用flag(聯(lián)合體)binder(實體:處理函數(shù))/handle(引用:服務(wù)的引用):cookie
}
復(fù)制代碼

數(shù)據(jù)傳輸過程(進程切換):

數(shù)據(jù)如何復(fù)制:

3.Binder中的紅黑樹,為什么會有兩棵binder_ref紅黑樹

  • refs_by_desc主要是通過desc來查找對應(yīng)的binder_ref

  • refs_by_node主要是通過node來查找對應(yīng)的binder_ref

查找方式不一樣

4.Binder一次拷貝原理

傳統(tǒng)的數(shù)據(jù)拷貝方式如socket:

用戶空間---->內(nèi)核空間:`copy_from_user `
內(nèi)核空間---->用戶空間:`copy_to_user`復(fù)制代碼

而binder使用mmap機制

    在內(nèi)核空間和用戶空間中間使用物理地址開辟了一個映射關(guān)系
內(nèi)核空間調(diào)用copy_from_user會直接將數(shù)據(jù)拷貝到內(nèi)核空間并反饋到映射后的物理地址上,
由于用戶空間和物理地址也有個映射關(guān)系,用戶空間可以直接通過映射的虛擬地址指針訪問到寫入物理地址的數(shù)據(jù)。
這就是binder一次拷貝的原理復(fù)制代碼

5.Binder傳輸數(shù)據(jù)的大小限制?

對于內(nèi)核可以傳輸?shù)氖?M,但是應(yīng)用層限制在1M-8K范圍內(nèi),這就是在進程間傳輸過大的數(shù)據(jù)會導(dǎo)致崩潰的原因

6.系統(tǒng)服務(wù)與bindService等啟動的服務(wù)的區(qū)別

系統(tǒng)服務(wù)需要將服務(wù)注冊到ServiceManager,使用的時候需要通過服務(wù)名稱去ServiceManger中獲取服務(wù)的引用,

而bindService等啟動的服務(wù)是將服務(wù)注冊到AMS中的ServiceMap中,所有的服務(wù)的生命周期都由AMS控制。啟動服務(wù)的進程如果需要使用IPC通訊,都是和獲取AMS的代理類進行通訊,AMS也是在SystemServer啟動的時候一個注冊到ServiceManager的系統(tǒng)服務(wù)。

7.Binder多線程

binder線程池默認提供了15個線程進行處理進程間并發(fā)事件,如果服務(wù)端線程不夠用,則驅(qū)動會發(fā)出一個信號,應(yīng)用層收到這個信號調(diào)用Register_Thread,這樣驅(qū)動層就可以使用這個新建出來的子線程進行數(shù)據(jù)的處理

8.Android APP進程天生支持Binder通信的原理是什么?

Android APP進程都是由Zygote進程孵化出來的。常見場景

點擊桌面icon啟動APP,或者startActivity啟動一個新進程里面的Activity,最終都會由AMS去調(diào)用Process.start()方法去向Zygote進程發(fā)送請求,讓Zygote去fork一個新進程,Zygote收到請求后會調(diào)用Zygote.forkAndSpecialize()來fork出新進程,之后會通過RuntimeInit.nativeZygoteInit來初始化Andriod APP運行需要的一些環(huán)境,而binder線程就是在這個時候新建啟動的

virtual voidonZygoteInit()
{sp proc = ProcessState::self();//啟動新binder線程loopproc->startThreadPool();
}
復(fù)制代碼

9.同一個線程的請求必定是順序執(zhí)行,即使是異步請求(oneway)

一般而言,Client同步阻塞請求Service,直到Service提供完服務(wù)后才返回,不過,也有特殊的,比如請求用ONE_WAY方式,這種場景一般主要是用來通知,至于通知被誰消費,是否被消費壓根不會關(guān)心。拿ContentService服務(wù)為例子,它是一個全局的通知中心,負責轉(zhuǎn)發(fā)通知,而且,一般是群發(fā),由于在轉(zhuǎn)發(fā)的時候,ContentService被看做Client,如果這個時候采用普通的同步阻塞勢必會造成通知的延時發(fā)送送,所以這里的Client采用了oneway,異步。

http://www.risenshineclean.com/news/5127.html

相關(guān)文章:

  • ecshop做企業(yè)網(wǎng)站安徽新站優(yōu)化
  • 武漢高端網(wǎng)站定制設(shè)計打開百度網(wǎng)站
  • 模板建站推薦東方靠譜seo整站優(yōu)化一年價格多少
  • 甘肅蘭州做網(wǎng)站怎樣查詢百度收錄和排名情況
  • 17173論壇百度seo課程
  • 大型企業(yè)網(wǎng)站欣賞俄羅斯搜索引擎瀏覽器
  • 企業(yè)微信小程序如何開發(fā)青島seo推廣公司
  • wordpress微信說說seo外推
  • 代做網(wǎng)站推廣的公司時事新聞熱點摘抄
  • 360建筑網(wǎng)怎么注銷賬號seo自然排名關(guān)鍵詞來源的優(yōu)缺點
  • 免費做圖表的網(wǎng)站搜狗引擎搜索
  • 成品網(wǎng)站建設(shè)咨詢?nèi)詣泳珳室鬈浖?/a>
  • 來安縣城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)站seo專員招聘
  • 海南做公司網(wǎng)站萬網(wǎng)創(chuàng)始人
  • 全網(wǎng)營銷型網(wǎng)站建設(shè)公司百度競價渠道代理
  • 網(wǎng)站運行環(huán)境配置seo推廣灰色詞
  • 重慶網(wǎng)站建設(shè)seo公司抖音seo優(yōu)化
  • 個人網(wǎng)站建設(shè)基礎(chǔ)與實例重慶seo網(wǎng)絡(luò)優(yōu)化咨詢熱線
  • 旅游門戶網(wǎng)站有哪些seo域名綜合查詢
  • 18g網(wǎng)站空間圖片識別搜索引擎
  • 博客網(wǎng)站建設(shè)方案電腦課程培訓(xùn)零基礎(chǔ)
  • 男直接做的視頻網(wǎng)站軟文營銷的技巧有哪些?
  • asp網(wǎng)站源碼說明留號碼的廣告網(wǎng)站
  • 品牌寶網(wǎng)站認證中國網(wǎng)民博客 seo
  • 貴陽公司做網(wǎng)站各種網(wǎng)站
  • 深圳知名網(wǎng)站建設(shè)就在剛剛武漢宣布最新消息
  • 水果網(wǎng)站策劃方案百度seo優(yōu)化價格
  • 湘西吉首市建設(shè)局網(wǎng)站百度圖片查找
  • wordpress默認index百度seo怎么收費
  • 鄭州hi寶貝網(wǎng)站建設(shè)公司定制網(wǎng)站開發(fā)公司