作者:gzshun. 原創(chuàng)作品,,轉(zhuǎn)載請(qǐng)標(biāo)明出處!
本系列文章,,將會(huì)詳細(xì)講解Android系統(tǒng)的磁盤管理部分,可以通過(guò)這個(gè)突破口,,熟悉整個(gè)Android的系統(tǒng)架構(gòu)與實(shí)現(xiàn)原理,。 Android磁盤管理總共涉及到四大部分源碼: 1.Linux kernel: Android建立在Linux內(nèi)核的基礎(chǔ)上,最底層的部分是由Linux kernel來(lái)負(fù)責(zé)的,,用于檢測(cè)熱插拔事件,; 2.Vold:Android沒(méi)有使用Linux平臺(tái)下的udev來(lái)處理,于是Google寫了一個(gè)類似udev功能的vold,,充當(dāng)了kernel與framework之間的橋梁,; 3.Framework:Android的核心框架,(僅僅磁盤管理這部分)負(fù)責(zé)操作vold,,給vold下發(fā)操作命令,; 4.UI:Androidd的系統(tǒng)應(yīng)用,,與Framework進(jìn)行交互,用于掛載/卸載SD卡,。 Android掛載SD卡,,流程如下: 1.用戶在“設(shè)置”頁(yè)面的“SD卡和手機(jī)內(nèi)存”中,點(diǎn)擊“掛載”,; 2.UI從Framework獲取操作磁盤的函數(shù)(向Framework注冊(cè),,才能使用的函數(shù)),然后調(diào)用掛載的處理函數(shù),; 3.該處理函數(shù)通過(guò)廣播機(jī)制發(fā)送掛載命令“volume mount sdcard”,,vold接受命令并掛載SD卡后,用廣播通知Framework,; 4.Framework收到掛載SD卡的回復(fù),,通知UI的處理結(jié)果; 5.界面顯示掛載成功/掛載失敗,。 從這里可以看出,,Android的磁盤管理涉及到整個(gè)系統(tǒng)框架,這是Android系統(tǒng)很重要的一個(gè)子系統(tǒng),,通過(guò)磁盤管理的子系統(tǒng)來(lái)熟悉Android系統(tǒng)架構(gòu),,能夠了解到Android的多方面知識(shí)。從SD卡的掛載流程可以看出,,Android系統(tǒng)大量地使用IPC,,從而做到了模塊獨(dú)立的效果。從磁盤管理的那四大部分來(lái)看,,四個(gè)部分之間的相互聯(lián)系均是使用socket進(jìn)行通信,,沒(méi)有使用到傳統(tǒng)的API調(diào)用,整個(gè)系統(tǒng)就顯得非常的獨(dú)立,。 源碼的位置: Vold:system/vold Framework: frameworks/base/services/java/com/android/server UI: android-2.2r2/packages/apps/Settings/src/com/android/settings/deviceinfo/ 下篇文章開(kāi)始分析源碼,,從下往上走。,。 |
|
來(lái)自: free_light > 《Android源碼》