第一篇:android vold學習總結
vold學習總結
Vold(volume daemon):源碼路徑android/system/vold,部分引用代碼位于android/system/core/libsysutils/src,android/system/core/include/sysutils/下。
它用于管理和控制android平臺的外部設備,包括u盤、sd卡等的插入,拔出和格式化等。Vold為守護進程,由init進程啟動,Vold的框架如下圖所示:
Linux kernel與vold進程通過netlink機制進行跨進程通信,vold中的NetlinkManager接收來自linux kernel上報的uevent事件,然后將其轉換成一個NetlinkEvent類型,并調用VolumeManager類的相應方法進行處理,VolumeManager會將處理的結果發送給MountService,VolumeManager與MountService之間通過CommandListener機制進行通信,本質是通過socket進行跨進程通信,MountService運行在SystemServer進程中。
Uevent事件內容就是一個字符串,linux kernel在下列兩種情況下會上報uevent事件: 1.外設狀態發生變化觸發,當有U盤、sd卡等外設的插拔動作時,都會引起linux kernel上報uevent事件,如果vold在外設狀態發生變化之前已經建立了netlink連接,就能收到相應的uevent事件。
2.在/sys目錄下會有一個叫做uevent的文件,往該文件中寫入特定的數據,也會觸發kernel發送和該設備相關的uevent事件,這個由應用層觸發,例如vold啟動時,會往uevent文件中寫入數據,它就會觸發linux kernel發送uevent事件,這樣vold就能獲取設備的當前信息。
在etc/目錄下有個vold.fstab文件(實際上該文件是在system/etc目錄下,它在system/core/rootdir/init.rc中有配置:symlink /system/etc /etc,通過軟鏈接而鏈接到etc目錄下),該文件是android系統與硬件平臺交互的接口,用戶可以手動配置該文件,在 androidsystemcorerootdiretc下有個vold.fstab文件,它描述了vold.fstab文件配置掛載設備的模板,dev_mount
在sys目錄下有多個目錄:block(系統中的所有塊設備)、bus(系統中的所有總線設備)、devices(系統中的所有設備層次結構)、drivers(系統中的所有驅動)等。
dev_mount sdcard1 /mnt/sdcard auto /devices/platform/sdhci-tegra.2/mmc_host/mmc1/mmc1 當設備中出入sd卡后,在dev/block目錄下會多出幾個設備節點,表示sd卡驅動已經加載成功,一般會多出兩個設備節點mmcblk0和mmcblk0p1節點,其中mmcblk0表示第一個sd卡設備,mmcblk0p1表示第一個sd卡設備的第一個分區,真正掛載到系統中的是mmcblk0p1而非mmcblk0,如果手動使用mount掛載時,不能直接掛載設備,而是選擇掛載設備的分區,例如
mount-t vfat /dev/block/mmcblk0p1 sdcard 關鍵點:
1.Vold的main方法中會調用process_config()方法解析vold.fstab文件,根據文件內容去配置VolumeManager對象。
2.當linux kernel上報一個uevent事件時,NetlinkManager會處理該事件,實際是它是調用NetlinkHandler類處理的,NetlinkHandler類的繼承層次關系:NetlinkHandler繼承自NetlinkListener,而NetlinkListener又繼承自SocketListener。在NetlinkListener類的onDataAvailable()方法中,會將一個原始的uevent事件內容解析為NetlinkEvent類,并調用NetlinkHandler類的onEvent()方法。
3.從kernel上報uevent事件時,vold的處理簡單流程為:
SocketListener::runListener()->NetlinkListener::onDataAvailable()->NetlinkHandler::onEvent()->VolumeManager::handleBlockEvent()->DirectVolume::handleBlockEvent()->CommandListener::sendBroadcast()。4.vold與MountService進行通信的簡單處理流程為:
SocketListener::runListener()->FrameworkListener::onDataAvailable()->FrameworkListener::dispatchCommand()->***Cmd:: runCommand()。
在dispatchCommand()中會根據命令字符串內容不同調用相應的VoldCommand子類的runCommand()進行處理,進而調用VolumeManager的相應方法。經過VolumeManager處理的uevent類型主要有:block、switch、usb_composite、battery、power_supply,在DirectVolume的handleBlockEvent()方法中,會根據設備類型和執行的動作(add/remove/change)執行相應的函數:handleDiskAdded()、handlePartitionAdded()、handleDiskRemoved()、handlePartitionRemoved()等,在這些方法中,最終會調用mVm->getBroadcaster()->sendBroadcast()方法,實際調用了CommandListener類的sendBroadcast()方法,該方法利用socket通信將消息發送給MountService類。
5.當vold發送消息給MountService后,會觸發MountService類的onEvent()方法調用(由NativeDaemonConnector調用)。在onEvent()方法中,會發送相應廣播消息,并且會調用相應接口觸發通知。StorageManager可看做MountService在客戶端的代理類。應用程序可以通過調用StorageManager類的相應方法,例如注冊監聽器獲取外設的插拔通知。對于應用程序來說,有兩種方式獲取外設插拔通知,一是通過StorageManager類的registerListener()注冊監聽器,二是注冊廣播接收器接收相應的廣播消息。
6.MountService.java中會讀取storage_list.xml文件(位于framework/res/res/xml/),7.Android系統中使用UeventObserver類可以監控linux kernel上報的uevent事件,利用UeventObserver檢測外部設備插拔的設備有: BatteryService:檢測充電器的插拔。
PhoneWindowManager:檢測hdmi的插拔。
WiredAccessoryManager:檢測有線耳機的插拔。DockObserver:檢測底座的插拔。
UsbDeviceManager:Android系統作為從設備,連接到主設備pc的檢測。讀取Uevent事件代碼:hardwarelibhardware_legacyueventuevent.c.SocketListener: 處理套接字監聽器的基類,vold利用兩個socket分別與上層應用和linux kernel進行通信,與上層應用進行通信時,利用的是CommandListener,與linux kernel進行通信利用的是NetlinkHandler,通信機制用的是netlink socket機制。
SocketListener的構造函數中指定了兩個參數,分別表示socket名字和是否監聽套接字(根據定義變量mListen判斷)。SocketListener類主要有以下幾個方法:
startListener():啟動監聽器,該方法中會創建一個套接字,并啟動一個子線程處理socket通信,子線程中會進入一個死循環,然后利用select機制來監聽多個套接字,監聽套接字有三種:來自客戶端的連接請求,客戶端發送過來的數據,管道讀端。如果變量mListen為false,是不會監聽來自客戶端的連接請求的。管道讀端用于確定是否退出子線程操作。當有客戶端發送數據過來時,select()會返回,會調用onDataAvailable()進行處理。onDataAvailable是虛函數,由其子類實現。
stopListener():停止監聽器,通過往管道中寫數據來退出socket通信的子線程。
sendBroadcast():遍歷所有連接的客戶端SocketClient實例,并調用每個實例的sendMsg()方法將消息發送給客戶端。
FrameworkListener:繼承自SocketListener,指定監聽套接字變量mListen為true。onDataAvailable()中從socket buffer中獲取客戶端發送過來的數據,并調用dispatchCommand(),在dispatchCommand()中會解析數據,然后比較command的名字與哪個FrameworkCommand名字匹配,并調用匹配的FrameworkCommand子類的runCommand()方法。該類中還定義了一個registerCmd()方法用于注冊各種FrameworkCommand子類。
CommandListener:繼承自FrameworkListener,在構造函數中指定套接字名稱為vold。在CommandListener的頭文件中定義了很多種VoldCommand(它繼承自FrameworkCommand),這些VoldCommand子類主要有:DumpCmd、VolumeCmd、AsecCmd、ObbCmd、StorageCmd、XwarpCmd、CryptfsCmd、FstrimCmd。其中DumpCmd 類處理打印信息,VolumeCmd處理外部設備Volume的各種操作,例如掛載、卸載、格式化等,AsecCmd處理asec目錄相關,安裝在sdcard的應用程序相關文件會存放在目錄,ObbCmd處理obb文件相關操作(obb文件稱為不透明二進制文件,obb文件可能在磁盤上被加密,供應用程序使用,應用程序使用時進行解密,obb文件尺寸一般很大,一般放在sdcard中,不會打包進apk中,它可能被其它應用程序訪問和修改)。
在CommandListener的構造函數中調用registerCmd()注冊了上述8個VoldCommand實例。NetlinkListener:繼承自SocketListener,指定監聽套接字變量mListen為false,定義了兩個虛函數onDataAvailable()和onEvent()。該類主要實現了一個方法onDataAvailable():該方法中會創建一個NetlinkEvent對象,并調用該對象的decode()方法,將其解析為一個NetlinkEvent事件。
NetlinkHandler:繼承自NetlinkListener,該類中定義了三個方法,start():調用基類SocketListener的startListener(),啟動socket監聽器。stop():調用基類SocketListener的stopListener(),停止socket監聽器。
onEvent():處理NetlinkEvent事件,調用VolumeManager::handleBlockEvent(),目前只處理子系統為block的塊設備。Volume:處理卷標類。
DirectVolume:繼承自Volume,該類中的主要方法有handleBlockEvent(),根據上報的NetlinkEvent事件類型和動作類型,來調用不同的處理函數,例如handleDiskAdded()、handlePartitionAdded()、handleDiskRemoved()、handlePartitionRemoved()等。VolumeManager:Volume管理器。
MountService:運行在SystemServer進程中,在其構造函數中,會創建一個NativeDaemonConnector實例,并啟動一個子線程來執行這個實例,NativeDaemonConnector是一個Runnable對象,它用于建立與vold的socket連接。NativeDaemonConnector實例收到vold發送來的消息時,會觸發回調INativeDaemonConnectorCallbacks的onEvent()的執行,MountService實現了INativeDaemonConnectorCallbacks的onEvent(),例如有新的外部設備插入時,MountService會收到VoldResponseCode.VolumeDiskInserted消息,并執行doMountVolume()掛載該設備,doMountVolume()方法最終會調用NativeDaemonConnector類實例的execute()方法往/dev/socket/vold中寫入特定的命令消息給vold。
第二篇:學習總結
學習總結
趙元蓮
“沒有學不會的學生,只有不會教的老師?!甭牭竭@句話我很痛心,也對當前的教學方法進行了反思,感覺到當前的教學方法已經滯后了,已經不適應當代學生的需要。正愁找不到解決的方法時,有幸參加教育部組織的“國培計劃——農村中小學教師遠程培訓項目”活動的地理學科的學習,深感機會難得,盡自己最大的努力,抽出時間認真地聆聽各位專家精彩的講評。通過這段時間的學習,對我既有觀念上的洗禮,也有理論上的提高;既有知識上的積淀,也有教學技能的提高。
一、要讓學生學得會,就要創設恰當的教學情景。深入細致地鉆研教材內容、分析教學目標、教點,這是探索各種教法、學法,設計更合理的教學流程的前提。只有鉆研透教材;把靜態的教學目標轉化為動態的教學目標;理清楚重點、難點,才能選擇恰當的教法、學法,才能恰當的教學情境。
二、地理是一門跨地域較廣的學科,這一特點很多知識比較抽象,學生學起來比較困難。用多媒體把相關的地圖、圖片呈現出來,再配合地理填充圖冊的使用,就可以使抽象知識形象化。另外,基于地理學科的這一特點,還可以把大范圍的知識縮小化,例如:學習比例尺、圖例、注記后,讓學生畫學校的平面圖,學校的范圍稍大一些,學生測量時不太方便,就不認真的完成,那么就縮小范圍,讓學生畫教室的平面圖或者在課桌上放一、二樣東西后畫桌面的平面圖。
三、新教材內容與舊教材內容相比較,設置了很多的活動,這就要求老師和學生要動起來。而且是全方位的動包括眼、口、手、腦、身。這個動不僅要出現在課堂上,還要出現在課前準備和課后的拓展中。尤其是在現實生活能完成的活動,一定要指導學生認真完成。
四、俗話說“讀萬卷書,不如行千里路?!蔽覀円淖冋熳诮淌依飳W習書本知識,要帶領學生走入大自然中,進行實地考查。
通過這次培訓,有了一個很好的開端,在今后的工作中,我要不斷地學習,學以致用,把學到的知識方法運用到課堂實踐中,并作到多學多思多改,不斷提高自己的課堂教學的理論和實踐水平。力爭做一名學生喜歡的地理老師。
第三篇:學習總結
學習馬俊欣情況簡要總結
馬俊欣是郟縣人民檢察院的一名普通檢察官,1987年臨近大學畢業時,意外受傷導致頸椎骨折,造成左側身體癱瘓。25年來,他面對身體的傷痛,克服平常人難以想象的困難,堅守工作崗位,以鍥而不舍的精神追求,兢兢業業、恪盡職守,履行了一名共產黨員、一名檢察官應盡的職責。其事跡通過本報和其他媒體報道后,在社會上產生很大反響。
通過學習總結出:郟縣人民檢察院檢察官馬俊欣是個善于思考、善于總結、善于創新的人。他在檢察院多個部門工作過,各階段都有創新之舉
2007年,在他的建議下,郟縣人民檢察院在我市檢察系統率先成立案件管理中心。在評查案件中,他總結出檢委會委員評查點評卷宗的做法,創新成立了業務咨詢小組。任辦公室主任時,他總結推行了“周小結、月講評”制度。
這些創新之舉對規范執法行為、維護公平和正義起到了積極的推動作用,得到了業內和社會的認可。其中,不少舉措被郟縣行政機關和全市檢察機關借鑒和推廣。
創新,簡言之就是走別人沒有走過的路,其難度不言而喻。
馬俊欣身有殘疾,能完成本職工作已屬不易,何況還要創新,這需要何等的精神和何等的動力。
這動力來源于要“做一個有用的人”的強烈愿望,他要加倍努力,回報社會;這動力來源于勤奮學習,他喜歡看書,在知識的海洋里開闊了視野;這動力來源于實踐,他善于發現工作中存在的問題,然后想方設法找到解決問題、堵塞漏洞的辦法,以便更有效地推進工作。向馬俊欣學習,就是要學習他這種愛崗敬業、刻苦鉆研的精神,就是要學習他這種干一行、愛一行、專一行的品質,就是要學習他立足本職、勇于創新的干勁,在平凡的崗位上作出更大的成績。
在學習中,刑事審判庭的干警對馬俊欣的精神給予了很高的評價,并結合本職工作查找了自己的不足,表示通過學習馬俊欣的先進事跡,要進一步堅定理想信念,胸懷黨的事業,心系百姓冷暖,以純潔的思想、優良的作風、嚴明的紀律,做到公平執法,廉潔從檢,執法為民,為我市社會穩定和經濟建設履行好審判職能。
第四篇:2013學習總結
在校期間,本人一直勤奮學習,刻苦鉆研,通過系統地學習掌握較為扎實的基礎知識。由于有良好的學習作風和明確的學習目標,曾獲得“優秀團員”、“三好學生”等榮譽,得到了老師及同學們的肯定,樹立了良好的學習榜樣。
在課余時間,本人積極參加體育鍛煉,增強身體素質,也熱愛勞動,積極參加校開展的各項文體活動,參加社會實踐,繼承和發揚了艱苦奮斗的精神,也參加了校文學社和書法協會,豐富了課余生活,使自己在各方面都得到了相應的提高。
“寶劍鋒從磨礪出,梅花香自苦寒來”,本人堅信通過不斷地學習和努力,使自己成為一個有理想、有道德、有文化、有紀律的學生,以優異的成績迎接挑戰,為社會主義建設貢獻我畢生的力量。
高中畢業生自我鑒定樣板
(一)時光如梭,轉眼即逝,當畢業在即,回首三年學習生活,歷歷在目:
三年來,學習上我嚴格要求自己,注意摸索適合自己情況的學習方法,積極思維,分析、解決問題能力強,學習成績優良。
我遵紀守法,尊敬師長,熱心助人,與同學相處融洽。我有較強的集體榮譽感,努
力為班為校做好事。作為一名團員,我思想進步,遵守社會公德,積極投身實踐,關心國家大事。在團組織的領導下,力求更好地鍛煉自己,提高自己的思想覺悟。
性格活潑開朗的我積極參加各種有益活動。高一年擔任語文科代表,協助老師做好各項工作。參加市演講比賽獲三等獎。主持校知識競賽,任小廣播員。高二以來任班級文娛委員,組織同學參加各種活動,如:課間歌詠,班級聯歡會,集體舞賽等。在校文藝匯演中任領唱,參加朗誦、小提琴表演。在校辯論賽在表現較出色,獲“最佳辯手”稱號。我愛好運動,積極參加體育鍛煉,力求德、智、體全面發展,校運會上,在800米、200米及4×100米接力賽中均獲較好名次。
三年的高中生活,使我增長了知識,也培養了我各方面的能力,為日后我成為社會主義現代化建設的接班人打下了堅實的基礎。但是,通過三年的學習,我也發現了自己的不足,也就是吃苦精神不夠,具體就體現在學習上“鉆勁”不夠、“擠勁”不夠。當然,在我發現自己的不足后,我會盡力完善自我,培養吃苦精神,從而保證日后的學習成績能有較大幅度的提高。
作為跨世紀的一代,我們即將告別中學時代的酸甜苦辣,邁入高校去尋找另一片更加廣闊的天空。在這最后的中學生活里,我將努力完善自我,提高學習成績,為幾年來的中學生活劃上完美的句號,也以此為人生篇章中光輝的一頁。
高中畢業生自我鑒定樣板
(二)時光流逝,豐富多彩的三年高中生活即將結束,這三年是我人生中最重要的一段里程,它將永遠銘記在我的腦海里。
我衷心擁護中國共產黨的領導,熱愛蒸蒸日上、邁著改革步伐前進的社會主義祖國,用建設有中國特色的社會主義理論武裝自己,積極參加黨章學習小組,逐步提高自己的政治思想覺悟,并向黨組織遞交了入黨申請書。作為班長,我能以身作則,嚴于律己,在同學中樹立了好榜樣,并能團結好班委,處理好班級的一切事務,是老師的得力助手。高二年我們班被評為市優秀班級,這是全班同學共同努力的結果,我為能生活在這樣一個班級而自豪。三年來,我在組織能力、語言表達能力有了長足的進步。97年被評為市優秀學生干部,高三年被評為校三好生。
學習上,我有較強的自學能力,勤于鉆研,肯思考,合理安排好學習時間,理解能力強,思維敏捷,對問題有獨到的見解。學習中摸索出一套符合自己的學習方法,腳踏實地,循序漸進,精益求精,學習效率高。三年來學習成績優異,半期考、期考等重大考試均居年段第一。在學科競賽中也多次獲獎,高一年榮獲第四屆全國中學生數學競賽市三等獎;高二年獲全國中學生化學競賽廈門賽區表揚獎,高三年獲第xx屆全國中學生物理競賽省二等獎。
積極參加體育鍛煉,體育體鍛達標擅打籃球。
通過高中三年生活的錘煉。在德智體方面,我取得了長足的進步。從一個懵懂的中學生逐步成長為品學兼優的“四有”新人,但我有清醒地認識到自己的不足之處,體鍛雖然達標,但還須加強體育鍛煉,提高成績,在今后的學習中,我將不斷總結經驗,繼往開來,更好地報效祖國。
高中畢業生自我鑒定樣板
(三)高中三年生活即將隨著我的成長而慢慢逝去,回顧這豐富多彩的三年學習生活,我已在老師的辛勤培育下成長為一名品學兼優的合格中學生了,這些日子將永遠銘記在我心中。
我熱愛我們的黨,熱愛社會主義祖國,思想覺悟高,積極參加學校組織的各項活動以及黨章學習小組,努力要求進步。在校,我模范遵守《中學生守則》和《中學生日常行為規范》。尊敬師長,組織紀律性強,連續擔任班學習委員等職務。工作認真負責,團結同學,發揮友愛互助的精神,多次被評為校三好生、優秀學生干部,高二年還被評為市三好生。
天資聰穎,學習認真自覺,理解和自學能力強,善于質疑、析疑、解疑。積極探索,總結出一套適合自己的學習方法。思維敏捷,懂得舉一反三,學以致用,不斷鞏固已掌握的知識。高中三年以來學習成績優異,名列年段前茅。積極參加各種興趣小組,豐富自己的知識。在全國中學生生物奧林匹克競賽中或市一等獎、省二等獎。
我積極參加體育鍛煉,體鍛達標,還曾經代表班級參加校運會,并在接力項目為班爭光。
雖然高中三年來,我在各方面都有顯著進步,但我也清楚地認識到自己的不足之處:鉆研精神還不夠。在今后的學習中,我相信我一定能克服這個缺點,以自己的所學所長更好地報效祖國。
學習上我自覺、認真,學習方法較靈活,能科學安排好時間。有競爭意識,分析問題、解決問題能力較強。我課前做好預習,課堂上積極思維,大膽發表意見,配合好老師,能較高質量完成作業,課后及時對知識進行歸納、梳理,使我的知識系統化。學習成績保持在年段前茅,在會考中取得8科優。在“海爾杯”作文比賽中獲獎,曾參加英語奧林匹克競賽。曾被評為“校優秀團員”,“市三好生”。
我熱愛體育活動,認真上好體育課,積極參加體鍛,體育成績優秀。我加入?;@球隊,曾代表學校在市女籃比賽中獲三等獎。我熱愛各項文體活動,興趣廣泛,經常利用課余時間畫畫,閱讀各類進步書籍。
但我還存在缺點,如對不良行為不敢大膽批評。我們是跨世紀的人才,任重道遠。今后我將朝“四有”方向繼續努力。
第五篇:學習總結
學習總結
這次整頓學習對每一位員工都提出了新的要求和挑戰,我們要認真對待,及時主動更新觀念,轉變角色,樹立一切為了長者的基本理念。這些都是我們應該做到的,可是我們以前做的比較粗略,通過此次學習,我清楚的知道了如何把本職工作干的更好。
1.思想認識方面
我們要以更廣闊的視野來看待我們從事的工作,我們從事著天下最偉大、最朝陽的事業,肩負著代天下兒女盡孝,替孤獨父母解愁,為黨和政府分憂的光榮使命,要有高度的責任心,超常的細心,用心、耐心、關心、愛心、孝心,不斷的提高認識,總結自己,提高自身素質,為和佑成為第一養老品牌增磚添瓦。
2.工作作風方面
積極主動的與同事團結合作,通過傾聽、分享、交流、互助與反思,獲得信息與啟示。優化自已的工作方法,提高自己的工作效率。以身作則,要求別人做到的,自己首先要做到,做好,并注重細節,以嚴謹的態度和積極的熱情投入到工作中,認真履行自己的崗位職責。
這次學習是一次極有意義的培訓,帶給我最深的體會就是管理不僅是一門復雜的的學問,也是一門高超的藝術,需要不斷的去研究、去反思、去提高。一根火柴再亮,也只有豆大的光,倘若點燃一堆火柴,則會熊熊燃燒。我將和同事一起加油,努力、奉獻、進取。