第一篇: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。
第二篇:学习总结
学习总结
赵元莲
“没有学不会的学生,只有不会教的老师。”听到这句话我很痛心,也对当前的教学方法进行了反思,感觉到当前的教学方法已经滞后了,已经不适应当代学生的需要。正愁找不到解决的方法时,有幸参加教育部组织的“国培计划——农村中小学教师远程培训项目”活动的地理学科的学习,深感机会难得,尽自己最大的努力,抽出时间认真地聆听各位专家精彩的讲评。通过这段时间的学习,对我既有观念上的洗礼,也有理论上的提高;既有知识上的积淀,也有教学技能的提高。
一、要让学生学得会,就要创设恰当的教学情景。深入细致地钻研教材内容、分析教学目标、教点,这是探索各种教法、学法,设计更合理的教学流程的前提。只有钻研透教材;把静态的教学目标转化为动态的教学目标;理清楚重点、难点,才能选择恰当的教法、学法,才能恰当的教学情境。
二、地理是一门跨地域较广的学科,这一特点很多知识比较抽象,学生学起来比较困难。用多媒体把相关的地图、图片呈现出来,再配合地理填充图册的使用,就可以使抽象知识形象化。另外,基于地理学科的这一特点,还可以把大范围的知识缩小化,例如:学习比例尺、图例、注记后,让学生画学校的平面图,学校的范围稍大一些,学生测量时不太方便,就不认真的完成,那么就缩小范围,让学生画教室的平面图或者在课桌上放一、二样东西后画桌面的平面图。
三、新教材内容与旧教材内容相比较,设置了很多的活动,这就要求老师和学生要动起来。而且是全方位的动包括眼、口、手、脑、身。这个动不仅要出现在课堂上,还要出现在课前准备和课后的拓展中。尤其是在现实生活能完成的活动,一定要指导学生认真完成。
四、俗话说“读万卷书,不如行千里路。”我们要改变整天坐在教室里学习书本知识,要带领学生走入大自然中,进行实地考查。
通过这次培训,有了一个很好的开端,在今后的工作中,我要不断地学习,学以致用,把学到的知识方法运用到课堂实践中,并作到多学多思多改,不断提高自己的课堂教学的理论和实践水平。力争做一名学生喜欢的地理老师。
第三篇:学习总结
学习马俊欣情况简要总结
马俊欣是郏县人民检察院的一名普通检察官,1987年临近大学毕业时,意外受伤导致颈椎骨折,造成左侧身体瘫痪。25年来,他面对身体的伤痛,克服平常人难以想象的困难,坚守工作岗位,以锲而不舍的精神追求,兢兢业业、恪尽职守,履行了一名共产党员、一名检察官应尽的职责。其事迹通过本报和其他媒体报道后,在社会上产生很大反响。
通过学习总结出:郏县人民检察院检察官马俊欣是个善于思考、善于总结、善于创新的人。他在检察院多个部门工作过,各阶段都有创新之举
2007年,在他的建议下,郏县人民检察院在我市检察系统率先成立案件管理中心。在评查案件中,他总结出检委会委员评查点评卷宗的做法,创新成立了业务咨询小组。任办公室主任时,他总结推行了“周小结、月讲评”制度。
这些创新之举对规范执法行为、维护公平和正义起到了积极的推动作用,得到了业内和社会的认可。其中,不少举措被郏县行政机关和全市检察机关借鉴和推广。
创新,简言之就是走别人没有走过的路,其难度不言而喻。
马俊欣身有残疾,能完成本职工作已属不易,何况还要创新,这需要何等的精神和何等的动力。
这动力来源于要“做一个有用的人”的强烈愿望,他要加倍努力,回报社会;这动力来源于勤奋学习,他喜欢看书,在知识的海洋里开阔了视野;这动力来源于实践,他善于发现工作中存在的问题,然后想方设法找到解决问题、堵塞漏洞的办法,以便更有效地推进工作。向马俊欣学习,就是要学习他这种爱岗敬业、刻苦钻研的精神,就是要学习他这种干一行、爱一行、专一行的品质,就是要学习他立足本职、勇于创新的干劲,在平凡的岗位上作出更大的成绩。
在学习中,刑事审判庭的干警对马俊欣的精神给予了很高的评价,并结合本职工作查找了自己的不足,表示通过学习马俊欣的先进事迹,要进一步坚定理想信念,胸怀党的事业,心系百姓冷暖,以纯洁的思想、优良的作风、严明的纪律,做到公平执法,廉洁从检,执法为民,为我市社会稳定和经济建设履行好审判职能。
第四篇:2013学习总结
在校期间,本人一直勤奋学习,刻苦钻研,通过系统地学习掌握较为扎实的基础知识。由于有良好的学习作风和明确的学习目标,曾获得“优秀团员”、“三好学生”等荣誉,得到了老师及同学们的肯定,树立了良好的学习榜样。
在课余时间,本人积极参加体育锻炼,增强身体素质,也热爱劳动,积极参加校开展的各项文体活动,参加社会实践,继承和发扬了艰苦奋斗的精神,也参加了校文学社和书法协会,丰富了课余生活,使自己在各方面都得到了相应的提高。
“宝剑锋从磨砺出,梅花香自苦寒来”,本人坚信通过不断地学习和努力,使自己成为一个有理想、有道德、有文化、有纪律的学生,以优异的成绩迎接挑战,为社会主义建设贡献我毕生的力量。
高中毕业生自我鉴定样板
(一)时光如梭,转眼即逝,当毕业在即,回首三年学习生活,历历在目:
三年来,学习上我严格要求自己,注意摸索适合自己情况的学习方法,积极思维,分析、解决问题能力强,学习成绩优良。
我遵纪守法,尊敬师长,热心助人,与同学相处融洽。我有较强的集体荣誉感,努
力为班为校做好事。作为一名团员,我思想进步,遵守社会公德,积极投身实践,关心国家大事。在团组织的领导下,力求更好地锻炼自己,提高自己的思想觉悟。
性格活泼开朗的我积极参加各种有益活动。高一年担任语文科代表,协助老师做好各项工作。参加市演讲比赛获三等奖。主持校知识竞赛,任小广播员。高二以来任班级文娱委员,组织同学参加各种活动,如:课间歌咏,班级联欢会,集体舞赛等。在校文艺汇演中任领唱,参加朗诵、小提琴表演。在校辩论赛在表现较出色,获“最佳辩手”称号。我爱好运动,积极参加体育锻炼,力求德、智、体全面发展,校运会上,在800米、200米及4×100米接力赛中均获较好名次。
三年的高中生活,使我增长了知识,也培养了我各方面的能力,为日后我成为社会主义现代化建设的接班人打下了坚实的基础。但是,通过三年的学习,我也发现了自己的不足,也就是吃苦精神不够,具体就体现在学习上“钻劲”不够、“挤劲”不够。当然,在我发现自己的不足后,我会尽力完善自我,培养吃苦精神,从而保证日后的学习成绩能有较大幅度的提高。
作为跨世纪的一代,我们即将告别中学时代的酸甜苦辣,迈入高校去寻找另一片更加广阔的天空。在这最后的中学生活里,我将努力完善自我,提高学习成绩,为几年来的中学生活划上完美的句号,也以此为人生篇章中光辉的一页。
高中毕业生自我鉴定样板
(二)时光流逝,丰富多彩的三年高中生活即将结束,这三年是我人生中最重要的一段里程,它将永远铭记在我的脑海里。
我衷心拥护中国共产党的领导,热爱蒸蒸日上、迈着改革步伐前进的社会主义祖国,用建设有中国特色的社会主义理论武装自己,积极参加党章学习小组,逐步提高自己的政治思想觉悟,并向党组织递交了入党申请书。作为班长,我能以身作则,严于律己,在同学中树立了好榜样,并能团结好班委,处理好班级的一切事务,是老师的得力助手。高二年我们班被评为市优秀班级,这是全班同学共同努力的结果,我为能生活在这样一个班级而自豪。三年来,我在组织能力、语言表达能力有了长足的进步。97年被评为市优秀学生干部,高三年被评为校三好生。
学习上,我有较强的自学能力,勤于钻研,肯思考,合理安排好学习时间,理解能力强,思维敏捷,对问题有独到的见解。学习中摸索出一套符合自己的学习方法,脚踏实地,循序渐进,精益求精,学习效率高。三年来学习成绩优异,半期考、期考等重大考试均居年段第一。在学科竞赛中也多次获奖,高一年荣获第四届全国中学生数学竞赛市三等奖;高二年获全国中学生化学竞赛厦门赛区表扬奖,高三年获第xx届全国中学生物理竞赛省二等奖。
积极参加体育锻炼,体育体锻达标擅打篮球。
通过高中三年生活的锤炼。在德智体方面,我取得了长足的进步。从一个懵懂的中学生逐步成长为品学兼优的“四有”新人,但我有清醒地认识到自己的不足之处,体锻虽然达标,但还须加强体育锻炼,提高成绩,在今后的学习中,我将不断总结经验,继往开来,更好地报效祖国。
高中毕业生自我鉴定样板
(三)高中三年生活即将随着我的成长而慢慢逝去,回顾这丰富多彩的三年学习生活,我已在老师的辛勤培育下成长为一名品学兼优的合格中学生了,这些日子将永远铭记在我心中。
我热爱我们的党,热爱社会主义祖国,思想觉悟高,积极参加学校组织的各项活动以及党章学习小组,努力要求进步。在校,我模范遵守《中学生守则》和《中学生日常行为规范》。尊敬师长,组织纪律性强,连续担任班学习委员等职务。工作认真负责,团结同学,发挥友爱互助的精神,多次被评为校三好生、优秀学生干部,高二年还被评为市三好生。
天资聪颖,学习认真自觉,理解和自学能力强,善于质疑、析疑、解疑。积极探索,总结出一套适合自己的学习方法。思维敏捷,懂得举一反三,学以致用,不断巩固已掌握的知识。高中三年以来学习成绩优异,名列年段前茅。积极参加各种兴趣小组,丰富自己的知识。在全国中学生生物奥林匹克竞赛中或市一等奖、省二等奖。
我积极参加体育锻炼,体锻达标,还曾经代表班级参加校运会,并在接力项目为班争光。
虽然高中三年来,我在各方面都有显著进步,但我也清楚地认识到自己的不足之处:钻研精神还不够。在今后的学习中,我相信我一定能克服这个缺点,以自己的所学所长更好地报效祖国。
学习上我自觉、认真,学习方法较灵活,能科学安排好时间。有竞争意识,分析问题、解决问题能力较强。我课前做好预习,课堂上积极思维,大胆发表意见,配合好老师,能较高质量完成作业,课后及时对知识进行归纳、梳理,使我的知识系统化。学习成绩保持在年段前茅,在会考中取得8科优。在“海尔杯”作文比赛中获奖,曾参加英语奥林匹克竞赛。曾被评为“校优秀团员”,“市三好生”。
我热爱体育活动,认真上好体育课,积极参加体锻,体育成绩优秀。我加入校篮球队,曾代表学校在市女篮比赛中获三等奖。我热爱各项文体活动,兴趣广泛,经常利用课余时间画画,阅读各类进步书籍。
但我还存在缺点,如对不良行为不敢大胆批评。我们是跨世纪的人才,任重道远。今后我将朝“四有”方向继续努力。
第五篇:学习总结
学习总结
这次整顿学习对每一位员工都提出了新的要求和挑战,我们要认真对待,及时主动更新观念,转变角色,树立一切为了长者的基本理念。这些都是我们应该做到的,可是我们以前做的比较粗略,通过此次学习,我清楚的知道了如何把本职工作干的更好。
1.思想认识方面
我们要以更广阔的视野来看待我们从事的工作,我们从事着天下最伟大、最朝阳的事业,肩负着代天下儿女尽孝,替孤独父母解愁,为党和政府分忧的光荣使命,要有高度的责任心,超常的细心,用心、耐心、关心、爱心、孝心,不断的提高认识,总结自己,提高自身素质,为和佑成为第一养老品牌增砖添瓦。
2.工作作风方面
积极主动的与同事团结合作,通过倾听、分享、交流、互助与反思,获得信息与启示。优化自已的工作方法,提高自己的工作效率。以身作则,要求别人做到的,自己首先要做到,做好,并注重细节,以严谨的态度和积极的热情投入到工作中,认真履行自己的岗位职责。
这次学习是一次极有意义的培训,带给我最深的体会就是管理不仅是一门复杂的的学问,也是一门高超的艺术,需要不断的去研究、去反思、去提高。一根火柴再亮,也只有豆大的光,倘若点燃一堆火柴,则会熊熊燃烧。我将和同事一起加油,努力、奉献、进取。