当前位置: 网学 > 编程文档 > Android > 正文

通过usb massstorage看android系统架构

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:本文主要为网学会员提供通过usb massstorage看android系统架构,希望对需要通过usb massstorage看android系统架构网友有所帮助,学习一下!


    1.USB1.USBMassStorage的架构图
    "urn:schemas-microsoft上图关系为:上图关系为:Client,MountServiceServer,进行进程间通信。2StorageManager为Client,MountService是Server,通过AIDL进行进程间通信。Service,启动。2MountService是一个AndroidService,由systemserver启动。Daemon(Vold)Service,后启动。2VolumeDaemon(Vold)是一个NativeService,有Init.c读取init.rc后启动。通信。2MountService和Vold之间通过Socket通信。socket,建立通信。2NativeDaemonConnector帮助MountService取得Vold的socket,建立通信。uevent.2Vold通过NetLink读取Kernel的uevent.2NetLinkManager帮助Vold建立与kernel间的通信本文算是开个张,好久没有写文章了,忙碌一个月,谢谢东西,总结一下。本文算是开个张,好久没有写文章了,忙碌一个月,谢谢东西,总结一下。对于上图,我准备分以下几个方面阐述:注:对于上图,我准备分以下几个方面阐述:层实现》1.《AIDL之JaveFramework层实现》层实现》2.《AIDL之NativeFramework层实现》层实现:机制》3.《AIDL之Kernel层实现:Binder机制》通信详解》4.《Vold通信详解》层分析》5.《VoldFramework层分析》
    2.IPC概述
    IPC是一系列面向多线程间数据交换的技术集合。这里所说的多线程间的数据交换,包括进程内线程间的数据交换和进程间的线程数据交换。如果进程运行在不同的PC上,需要网络建立连接完成进程间通信。(这种情况极其复杂)。IPC技术的方法被分为:消息发送、同步、内存共享和远程过程调用(RPC)这几方面功能。(WIKI)个人理解IPC:进程间通信,IPC:进程间通信,就是在不同进程之间传播或交换信息。进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区共享内存区。但是,系统空间却是“公共场共享内存区所”,所以内核显然可以提供这样的条件内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在内核显然可以提供这样的条件这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息普通文件交换信息,或者通过“注册表”或普通文件交换信息
     其它数据库中的某些表项和记录交换信息。广义上这也是进程间通信的手段,但是一般都不把这算作“进程间通信”。(百度百科)两种解释,WIKI侧重定义;百度百科侧重应用。进程的实体是线程,进程间的通信说到根本就是线程间的通信。这包括以下几个应用场合l同一计算机,进程内的多线程通信。(同步、互斥、锁
    等技术和概念)这点我们一般不做IPC,仅仅按多线程技术处理。l同一计算机,进程间的通信。l不同计算机,进程间的通信。RPC:远程过程调用。在计算机科学领域,RPC被认为是IPC的一种。RPC可以在PC内或者通过网络在PC间进行functioncall。程序员可以将一些核心的API集中到一个程序中,通过RPC,其他需要该核心API的程序可以直接调用,提高代码的共享程度。(WIKI)RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。(百度百科)3.Android中Service架构
    所谓Android中Service架构指的是AndroidService、NativeService是如何联系起来,以及如何与底层进行通信。在android中,各种××××Manager为AP提供支持,管理系统的运行。××××Manager充当一个Client,××××ManagerService充当Server为××××Manager提供支持。简单,经典的C/S架构。这里的各种××××ManagerService就是指AndroidService,都在JavaFramework空间,且都在systemserver进程中。NativeService通过socket或者直接JNI,Android
     Service提供支持。NativeService在NativeFramework(C/C++空间)中。以上有所元素全部在android用户空间中。至于NativeService与Kernel的通信主要有Functioncall、poll、select、NetLink等几种采用Service架构方式是比较标准的做法,即图上蓝色线的部份;红色线的部份为非Service架构式的做法。Service在Android框架里的角色是「存取底层硬件」,往上层的话,可以和应用程序沟通。因此,采用标准的Service做法,好处是在数据存取(datacommunication)的处理较为系统化。这方面,Android提供了标准的处理架构。图上的「corelibraries」即是Service程序代码的实现,也就是,Android应用程序透过JNI(Dalvik)来到Service这一层,再透过Service加载*.so文件;而非标准做法则是让应用程序直接透过JNI来加载*.so文件。红色的过程,因为不使
    用Service架构,因此「框架整合」的工作量比较小,甚致大部份的实现都不需要改动框架本身。这样的做法,就有点像是「跳过framework」的方式;相对的,此时应用程序开发者需要考虑的设计议题就比较多。未来的Android发展趋势,应会以第二种做法为主,ManagerAPI直接与NativeService即沟通,以达到更好的效能表现。4.AndroidAIDL简介通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service。在Android平台中,一个进程通常不能访问其他进程中的内存区域。所以,他们需要把对象拆分成操作系统能理解的简单形式,以便伪装成对象跨越边界访问。编写这种伪装代码相当的枯燥乏味,好在我们提供了AIDL工具可以来做这件事。AIDL(Android接口描述语言)是一个IDL语言,它可以生成一段代码,使在一个Android设备上运行的两个进程使用内部通信进程进行交互。如果你需要在一个进程中(例如:在一个Activity中)访问另一个进程中(例如:一个Service)某个对象的方法,你就可以使用AIDL来生成这样的代码来伪装传递各种参数。AIDLIPC的机制是基于接口的,和COM或Corba类似,但它是轻量级的。它使用代理类在客户端和实现层间传递值。
    
    

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号