一种android系统挂载多存储设备的方法及装置的制作方法

文档序号:6435521阅读:198来源:国知局
专利名称:一种android系统挂载多存储设备的方法及装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及ー种android系统挂载多存储设备的方法及装置。
背景技术
通常来说,一个存储设备,比如说硬盘,可以分成多个分区(volume)。在android系统中对于USB存储设备的管理,是利用存储类的守护进程(volume daemon, void)来实现的,void负责完成系统的存储设备的挂载任务自动完成的守护进程,它提供的主要功能是支持这些存储设备的ー个分区热插拔,假设一个存储设备有4个分区,传统的系统只能支持4个分区中ー个分区的插拔。并且当外设存储设备插拔命令和用户触发的执行命令同时发起时,传统的处理方法会抢夺系统资源,这样会导致整个系统的崩溃,使整个系统安全性降低。

发明内容
本发明实施例在于提供ー种android系统挂载多存储设备的方法和装置,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性。—种android系统挂载多存储设备的方法,包括
事件监听模块监听存储设备中每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块;
分区管理模块获取监听消息,判断所述监听消息是插入执行命令还是拔出执行命令,将相应执行命令发送给命令监听模块;
命令监听模块接收所述分区管理模块发出的所述相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送;
所述分区管理模块接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。—种android系统挂载多存储设备的装置,包括
事件监听模块,用于监听存储设备每个分区是否有插入和拔出,一旦监听到,发送监听消息;
分区管理模块,用于获取从所述事件监听模块发送的所述监听消息,判断所述监听消息是插入执行命令还是拔出执行命令,发送相应执行命令;
命令监听模块,用于接收所述分区管理模块发出的所述相应执行命令,还用于接收用户触发的执行命令,将收到的所有执行命令分别向所述分区管理模块发送;
所述分区管理模块,还用于接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。实施本发明实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例的android系统挂载多存储设备的方法流程示意 图2是本发明android系统挂载多存储设备的方法的另ー实施例的流程示意 图3是本发明实施例的android系统挂载多存储设备的装置的结构示意图;图4是本发明实施例的android系统挂载多存储设备的方法的线程图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一歩详细说明。请參阅图1示出的本发明实施例的ー种android系统挂载多存储设备的方法流程示意图,包括
步骤SlOl :事件监听模块监听是否有存储设备中每个分区的插入和拔出,一旦监听至IJ,发送监听消息给分区管理模块;
所述分区既可以为同一存储设备的不同分区,也可以为挂载在系统中的多个存储设备的不同分区。具体地,可以创建同操作系统的socket协议通信,用于监听设备分区的拔插事件;
步骤S102 :获取监听消息,判断该监听消息是插入执行命令还是拔出执行命令,将相应执行命令发送给命令监听模块;
步骤S103 :命令监听模块接收分区管理模块发出的相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送;
具体的,用户触发的执行命令包括挂载分区命令、格式化分区命令、卸载分区命令、设置主存储设备命令和查询分区命令。步骤S104 :分区管理模块接收命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。实施上述实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性。下面结合图2不出的本发明android系统挂载多存储设备的方法的另ー实施例的流程示意图,进一歩详细说明本发明实施例的android系统挂载多存储设备的方法,包括
步骤S201 :读取配置文件,获取当前系统物理USB总线同USB名称的对应关系;具体的,根据配置文件获取当前系统USB接ロ个数和USB接ロ信息,用户可以预先配置主存储设备端ロ。步骤S202 :事件监听模块监听是否有存储设备每个分区的插入和拔出,一旦监听至IJ,发送监听消息给分区管理模块; 具体地,可以创建同操作系统的socket协议通信,用于监听设备每个分区的拔插事件。步骤S203 :分区管理模块获取监听消息,判断该监听消息是插入执行命令还是拔出执行命令,如果是插入执行命令执行步骤S204,如果是拔出执行命令则执行步骤S205,如果既不是拔出执行命令也不是插入执行命令,则返回步骤202继续监听;
步骤S204 :发送插入执行命令;
步骤S205 :发送拔出执行命令;
步骤S206 :接收分区管理模块发出的相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送;
具体的,用户触发的执行命令包括挂载分区命令、格式化分区命令、卸载分区命令、设置主存储设备命令和查询分区命令。当同时接收到分区管理模块发出的插入或拔出执行命令和用户触发的执行命令时,命令监听模块将所有执行命令逐一的发给分区管理模块,这样分区管理模块不会同时收到插入或拔出执行命令和用户触发的执行命令,避免分区管理模块的资源抢夺。步骤S207 :分区管理模块接收命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。具体地,当接收的是格式化分区(format volume)命令时,对相应的volume进行格式化处理,该volume先卸载,根据格式化要求格式化,然后再挂载该volume ;当接收的是挂载分区(mount volume)命令时,对相应的volume进行挂载处理,如果该volume未被挂载,根据USB总线差异生成挂载点,将该volume挂载到系统中;当接收的是卸载分区(unmount volume)命令时,对相应的volume进行卸载处理,如果该volume已挂载则将该volume卸载;当接收的是设置主存储设备(set main storage)命令时,根据设置将现有主存储设备卸载为非主存储设备,并将新设置的总线上的设备挂载为主存储设备;当接收的是查询分区(list volume)命令时,查询该存储设备分区的信息;当接收的是存储设备拔出执行(remove volume)命令时,则进行设备拔出处理,将设备从系统中移除,清理现场;当接收的是存储设备插入执行(add volume)命令吋,获取存储设备文件系统类型,并根据USB总线差异生成挂载点,将设备挂载到系统中。其中,对主存储设备挂载的策略是,挂载该USB总线上的第一个分区(无分区的话,挂载该硬盘本身)。主存储设备总线切換策略是,只要系统中存在请求的总线,则无论该总线上是否有存储设备,都切換成功。切換时原总线上设备状态保持不变,只是将挂载点切换到非主存储设备的挂载点,新的总线上如果有存储设备的话,自动切換到主存储设备挂载点。主存储设备的label为sdXY,挂载点永远为/mnt/sdcard。非主存储设备的label为sdXY,挂载点为/mnt/disk/sdXY。在无分区情况下存储器label为sdX ,挂载点为/mnt/disk/sdX。实施上述实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性,而且增加动态配置某个USB ロ的设备为主存储设备的功能。下面结合图3示出的本发明实施例的android系统挂载多存储设备的装置的结构示意图,进一歩详细说明本发明实施例该装置的结构。事件监听模块301,用于监听存储设备每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块。分区管理模块302,用于获取监听消息,判断该监听消息是插入执行命令还是拔出执行命令,将相应执行命令发送给命令监听模块。命令监听模块303,用于接收分区管理模块发出的相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送。分区管理模块302,还用于接收命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。实施上述实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性。上述装置还可以包括获取模块,与事件监听模块301相连,用于读取配置文件,获取当前系统物理USB总线同USB名称的对应关系。其中,分区管理模块302根据所述执行命令,对分区做相应的操作具体包括
当接收的是格式化分区命令吋,对相应的分区进行格式化处理,所述分区先卸载,根据格式化要求格式化,然后再挂载所述分区;
当接收的是挂载分区命令吋,对相应的分区进行挂载处理,如果所述分区未被挂载,根据USB总线差异生成挂载点,将所述分区挂载到系统中;
当接收的是卸载分区命令吋,对相应的分区进行卸载处理,如果所述分区已挂载则将所述分区卸载;
当接收的是设置主存储设备命令时,根据设置将现有主存储设备卸载为非主存储设备,并将新设置的总线上的设备挂载为主存储设备;
当接收的是查询分区命令时,查询该存储设备分区的信息;
当接收的是存储设备拔出执行命令吋,则进行设备拔出处理,将所述存储设备的分区从系统中移除,清理现场;
当接收的是存储设备插入执行命令吋,获取存储设备文件系统类型,并根据USB总线差异生成挂载点,将所述存储设备的分区挂载到系统中。如图4示出的本发明实施例的android系统挂载多存储设备的方法的线程图,进一歩详细说明本发明实施例各个装置模块之间的信号流向。在本发明实施例中,图4中实心箭头代表调用步骤,线性箭头代表发送步骤。事件监听模块可以包括Netlink Listener模块和Netlink Handler模块;分区管理模块可以包括Volume Manager模块和Direct Volume模块;命令监听模块可以包括Mount Service 模块和 Command Listener 模块。步骤401 Netlink Listener模块监听到有存储设备分区的插拔情况,从NetlinkHandler模块调用onEvent函数,即通知Netlink Handler模块是否能处理存储设备的插入或拔出命令。步骤402 :Netlink Handler模块如果不能处理,向Volume Manager模块调用HandleBlockEvent函数,即通知VolumeManager模块是否能处理存储设备的插入或拔出命令。步骤403 Volume Manager模块如果不能处理,继续向Direct Volume模块调用HandleBlockEvent函数,即通知Direct Volume模块是否能处理存储设备的插入或拔出命令。步骤404 : Direct Volume模块可以处理该命令,判断是存储设备插入执行命令还是存储设备拔出执行命令。如果是存储设备插入执行命令,执行步骤406 ;如果是存储设备拔出执行命令,则执行步骤405。步骤405 :向 Mount Service 模块发送通知(send Broadcast),还向 CommandListener模块发送存储设备拔出执行命令(send remove command)。步骤406:向 Mount Service 模块发送通知(send Broadcast),收到通知后,MountService 模块向 Command Listener 模块发送挂载命令(send command)。步骤407 Command Listener 模块从 Volume Manager 模块调用 mount volume(挂载分区)函数。步骤408:Volume Manager 模块从 volume 调用 mount volume 函数,根据 USB 总线差异生成挂载点,将该volume挂载到系统中,实现对volume的挂载操作。在上述发明实施例中,还可以对每个volume增加是否可用状态(例如volume的状态是不可用时,代表该分区物理损坏),以便区分该volume是否可用。实施上述实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性,而且通过可用状态区分每个volume是否可用,这样方便了用户,提高了效率。需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。以上所揭露的仅为本发明实施例中的较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
权利要求
1.一种android系统挂载多存储设备的方法,其特征在于,包括 事件监听模块监听存储设备中每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块; 分区管理模块获取监听消息,判断所述监听消息是插入执行命令还是拔出执行命令,将相应执行命令发送给命令监听模块; 所述命令监听模块接收所述分区管理模块发出的所述相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送; 所述分区管理模块接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。
2.如权利要求1所述的方法,其特征在于,所述事件监听模块监听存储设备中每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块的步骤之前,还包括 读取配置文件,获取当前系统物理USB总线同USB名称的对应关系。
3.如权利要求1所述的方法,其特征在于,所述事件监听模块监听存储设备中每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块的步骤包括 创建同操作系统的socket协议通信,用于监听设备每个分区的拔插事件。
4.如权利要求1所述的方法,其特征在于,所述用户触发的执行命令包括 挂载分区命令、格式化分区命令、卸载分区命令、设置主存储设备命令和查询分区命令。
5.如权利要求1所述的方法,其特征在于,所述分区管理模块接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作包括 当接收的是格式化分区命令时,对相应的分区进行格式化处理,所述分区先卸载,根据格式化要求格式化,然后再挂载所述分区; 当接收的是挂载分区命令时,对相应的分区进行挂载处理,如果所述未被挂载,根据USB总线差异生成挂载点,将所述挂载到系统中; 当接收的是卸载分区命令时,对相应的分区进行卸载处理,如果所述分区已挂载则将所述分区卸载; 当接收的是设置主存储设备命令时,根据设置将现有主存储设备卸载为非主存储设备,并将新设置的总线上的设备挂载为主存储设备; 当接收的是查询分区命令时,查询该存储设备分区的信息; 当接收的是存储设备拔出执行命令时,则进行设备拔出处理,将所述存储设备的分区从系统中移除,清理现场; 当接收的是存储设备插入执行命令时,获取存储设备文件系统类型,并根据USB总线差异生成挂载点,将所述存储设备的分区挂载到系统中。
6.如权利要求5所述的方法,其特征在于,还包括 对主存储设备挂载的策略是,挂载该设备USB总线上的第一个分区,如果所述主存储设备无分区,挂载硬盘本身。
7.如权利要求5所述的方法,其特征在于,还包括 主存储设备总线切换策略是,只要系统中存在请求的总线,无论该请求的总线上是否有存储设备,都执行切换;切换时原总线上设备状态保持不变,将挂载点切换到非主存储设备的挂载点,新的总线上如果有存储设备,自动切换到主存储设备挂载点。
8.—种android系统挂载多存储设备的装置,其特征在于,包括 事件监听模块,用于监听存储设备每个分区是否有插入和拔出,一旦监听到,发送监听消息; 分区管理模块,用于获取从所述事件监听模块发送的所述监听消息,判断所述监听消息是插入执行命令还是拔出执行命令,发送相应执行命令; 命令监听模块,用于接收所述分区管理模块发出的所述相应执行命令,还用于接收用户触发的执行命令,将收到的所有执行命令分别向所述分区管理模块发送; 所述分区管理模块,还用于接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。
9.如权利要求8所述的装置,其特征在于,还包括 获取模块,与所述事件监听模块相连,用于读取配置文件,获取当前系统物理USB总线同USB名称的对应关系。
10.如权利要求8所述的方法,其特征在于,所述分区管理模块,还用于接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作包括 当接收的是格式化分区命令时,对相应的分区进行格式化处理,所述分区先卸载,根据格式化要求格式化,然后再挂载所述分区; 当接收的是挂载分区命令时,对相应的分区进行挂载处理,如果所述未被挂载,根据USB总线差异生成挂载点,将所述挂载到系统中; 当接收的是卸载分区命令时,对相应的分区进行卸载处理,如果所述分区已挂载则将所述分区卸载; 当接收的是设置主存储设备命令时,根据设置将现有主存储设备卸载为非主存储设备,并将新设置的总线上的设备挂载为主存储设备; 当接收的是查询分区命令时,查询该存储设备分区的信息; 当接收的是存储设备拔出执行命令时,则进行设备拔出处理,将所述存储设备的分区从系统中移除,清理现场; 当接收的是存储设备插入执行命令时,获取存储设备文件系统类型,并根据USB总线差异生成挂载点,将所述存储设备的分区挂载到系统中。
全文摘要
本发明实施例公开了android系统挂载多存储设备的方法,包括事件监听模块监听存储设备中每个分区是否有插入和拔出,一旦监听到,发送监听消息给分区管理模块;分区管理模块获取监听消息,判断所述监听消息是插入执行命令还是拔出执行命令,将相应执行命令发送给命令监听模块;接收所述分区管理模块发出的所述相应执行命令,还接收用户触发的执行命令,将收到的所有执行命令分别向分区管理模块发送;所述分区管理模块接收所述命令监听模块发送的执行命令,并根据所述执行命令,对分区做相应的操作。本发明实施例还公开了android系统挂载多存储设备的装置,实施本发明实施例,可以使android系统挂载多个分区,并且解决了抢夺资源的问题,提高系统的安全性。
文档编号G06F9/50GK103049327SQ201110310758
公开日2013年4月17日 申请日期2011年10月14日 优先权日2011年10月14日
发明者申少辉 申请人:深圳市同洲电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1