技术领域
[0001] 本
发明涉及信息安全领域,尤其涉及一种鉴权处理装置和方法。
背景技术
[0002] 在多核芯片应用中,普遍存在多个核
软件或者线程去操作同一
硬件或软件的场景,这里的硬件包括但不限于随机存取
存储器(Random Access Memory,RAM)、寄存器、输入输出(Input/Output,IO)通道,软件一般指核间共享数据。而芯片一般设计要求对同一硬件单元或共享数据的读写操作必须是串行的,否则就会出现读出或写入脏数据的错误。假设存在一个硬件通道寄存器配置共享区域M1,芯片要求对M1的写操作必须串行,若有两个线程A1和B1都需要操作共享区域M1(先写再读),假设A先获得调度执行,那么必须按照A先对M进行写入、读出,在A对M操作结束后,B对M进行操作的顺序进行。
[0003] 在通用DSP软件,软硬件互斥一般通过
信号量机制解决,信号量保证同一时间只有一个线程对该互斥资源进行操作,信号量可由软件或者硬件来实现。假设共享区域M2通过信号量S进行保护,无论是线程A2还是线程B2进行操作,都要先获取M2的使用权S,即进行S-pend,系统根据调度决定把S给A2或是B2,假设为A2获取到S的线程,即可完成对M2的写读操作,没有获取到S的线程B2需要等待;操作完成之后A2需要释放M2的使用权S,即进行S-post,B2等到S,再进行对M2的操作,这样S的使用保证了A2和B2对M2操作的串行。为解决共享资源互斥问题而引入软件或硬件信号量,但是信号量本身也是一个共享资源。
[0004] 假设A2或B2正在操作M2的时候发生异常,即信号量S一直得不到释放,那么其它的线程就再也没有机会
访问M2了。
[0005] 在多核应用系统,核异常的概率比较高,假设A2和B2位于两个核上,核A2操作M2的时候异常挂死,那么像核B2这样的应用就永远获取不到S。
发明内容
[0006] 本发明
实施例提供了一种鉴权处理装置和方法,实现了多线程、多核或多模操作的串行时,对共享资源的访问不会发生冲突,以及异常情况下对共享资源的访问权限进行回收。
[0007] 第一方面,本发明实施例提供了一种鉴权处理装置,所述装置包括:接收单元、查询单元和发送单元;
[0008] 所述接收单元用于接收第一功能单元发送的访问共享资源的
请求消息,所述请求消息中携带有第一功能单元的信息,并将所述请求消息发送给查询单元;
[0009] 所述查询单元用于根据接收到的所述接收单元发送的请求信息查询所述共享资源的操作状态;
[0010] 所述发送单元用于在所述共享资源为空闲时,向所述第一功能单元发送授权消息,用以所述第一功能单元访问所述共享资源;
[0011] 所述接收单元还用于接收所述第一功能单元的权限释放请求消息,根据所述权限释放请求消息将所述共享资源置为空闲。
[0012] 结合第一方面,在第一方面的第一种可能的实现方式中,所述接收单元具体用于接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0013] 结合第一方面,在第一方面的第二种可能的实现方式中,所述查询单元具体用于根据所述第一功能单元的信息生成调度次
序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。
[0014] 结合第一方面,在第一方面的第三种可能的实现方式中,所述装置还包括:判断单元,当所述第一功能单元访问所述共享资源的访问时间超过
阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0015] 结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述判断单元具体用于,将所述第一功能单元访问共享资源的软件标志置为无效来终止第一功能单元对所述共享资源的访问。
[0016] 第二方面,本发明提供了一种鉴权处理装置,所述装置包括:
[0018] 处理器;
[0019] 存储器;
[0020] 物理存储在所述存储器中的应用程序,所述应用程序包括可用于使所述处理器和所述系统执行以下过程的指令:
[0021] 接收第一功能单元发送的访问共享资源的请求消息;所述请求消息中携带有第一功能单元的信息;
[0022] 查询所述共享资源的操作状态,在所述共享资源为空闲时,向所述第一功能单元发送授权消息,用以所述第一功能单元访问所述共享资源;
[0023] 接收所述第一功能单元的权限释放请求消息,根据所述权限释放请求消息将所述共享资源置为空闲。
[0024] 结合第二方面,在第二方面的第一种可能的实现方式中,所述应用程序可用于使所述处理器和所述系统执行接收第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有第一功能单元的信息,并将所述请求消息发送给查询单元的指令为:
[0025] 接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0026] 结合第二方面,在第二方面的第二种可能的实现方式中,所述应用程序可用于使所述处理器和所述系统执行根据接收到的所述接收单元发送的请求信息查询所述共享资源的操作状态的指令为:
[0027] 根据所述第一功能单元的信息生成调度次序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。
[0028] 结合第二方面,在第二方面的第三种可能的实现方式中,所述应用程序还包括可用于使所述处理器和所述系统执行以下过程的指令:
[0029] 当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0030] 结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述应用程序可用于使所述处理器和所述系统执行当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲的指令为:
[0031] 将所述第一功能单元访问共享资源的软件标志置为无效来终止第一功能单元对所述共享资源的访问。
[0032] 第三方面,本发明实施例提供了一种鉴权处理方法,所述方法包括:
[0033] 接收第一功能单元发送的访问共享资源的请求消息;所述请求消息中携带有第一功能单元的信息;
[0034] 查询所述共享资源的操作状态,在所述共享资源为空闲时,向所述第一功能单元发送授权消息,用以所述第一功能单元访问所述共享资源;
[0035] 接收所述第一功能单元的权限释放请求消息,根据所述权限释放请求消息将所述共享资源置为空闲。
[0036] 结合第三方面,在第三方面的第一种可能的实现方式中,所述接收第一功能单元发送的访问共享资源的请求消息具体包括:接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0037] 结合第三方面,在第三方面的第二种可能的实现方式中,所述查询所述共享资源的操作状态,在所述共享资源为空闲时,向所述第一功能单元发送授权消息具体包括:根据所述第一功能单元的信息生成调度次序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。
[0038] 结合第三方面,在第三方面的第三种可能的实现方式中,所述方法还包括:当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0039] 结合第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,所述终止所述第一功能单元对所述共享资源的访问具体包括:将第一功能单元访问共享资源的软件标志置为无效。
[0040] 本发明实施例提供的装置和方法的有益效果为:使用鉴权消息机制实现多线程或多核的串行操作,保证了对共享资源的访问不会冲突;共享资源不因为其它线程或核的操作异常而不可用,支持单核复位和恢复,提高了系统鲁棒性。
附图说明
[0041] 图1为本发明实施例提供的鉴权处理装置的第一示意图;
[0042] 图2为本发明实施例提供的鉴权处理装置的第二示意图;
[0043] 图3为本发明实施例提供的鉴权处理方法
流程图;
[0044] 图4为本发明实施例提供的第一鉴权处理应用交互图;
[0045] 图5为本发明实施例提供的第二鉴权处理应用交互图。
具体实施方式
[0046] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0047] 图1为本发明实施例提供的鉴权处理装置一示意图。如图1所示,本实施例包括:接收单元101、查询单元102、发送单元103和判断单元104。
[0048] 接收单元101,用于接收第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有第一功能单元的信息,并将所述请求消息发送给查询单元;
[0049] 本实施例中,第二功能单元可以是多线程中的主线程,或多核系统中的主核,或多模系统中的主制式。对应的,第一功能单元可以是多线程中的从线程,或多核系统中的其它核,或多模系统中的其它制式。
[0050] 进一步地,所述接收单元具体用于接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0051] 查询单元102,用于根据接收到的所述接收单元发送的请求信息查询所述共享资源的操作状态。
[0052] 进一步地,所述查询单元具体用于根据所述第一功能单元的信息生成调度次序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。
[0053] 发送单元103,用于在所述共享资源为空闲时,向所述第一功能单元发送授权消息,用以所述第一功能单元访问所述共享资源。
[0054] 接收单元101还用于接收所述第一功能单元的权限释放请求消息,根据所述权限释放请求消息将所述共享资源置为空闲。
[0055] 进一步地,本发明实施例还包括:判断单元104,用于当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0056] 进一步地,所述判断单元具体用于,将所述第一功能单元访问共享资源的软件标志置为无效来终止第一功能单元对所述共享资源的访问。
[0057] 图2为本发明实施例提供的鉴权处理装置二示意图。如图2所示,本实施例包括网络接口21、处理器22和存储器23。
系统总线24用于连接网络接口21、处理器22和存储器23。
[0058] 网络接口21用于与
物联网终端、物联网接入网关、承载网、物联网服务网关和应用
服务器通信。
[0059] 存储器23可以是永久存储器,例如
硬盘驱动器和闪存,存储器23中具有软件模
块和设备驱动程序。
软件模块能够执行本发明上述方法的各种功能模块;设备驱动程序可以是网络和接口驱动程序。
[0060] 在启动时,这些
软件组件被加载到存储器23中,然后被处理器22访问并执行如下指令:
[0061] 接收第一功能单元发送的访问共享资源的请求消息;所述请求消息中携带有第一功能单元的信息;
[0062] 查询所述共享资源的操作状态,在所述共享资源为空闲时,向所述第一功能单元发送授权消息,用以所述第一功能单元访问所述共享资源;
[0063] 接收所述第一功能单元的权限释放请求消息,根据所述权限释放请求消息将所述共享资源置为空闲。
[0064] 上述指令过程就是应用在鉴权处理装置进行鉴权处理的过程,通过鉴权处理装置访问共享资源的请求信息,对请求信息进行处理,从而提高了对共享资源的访问效率。
[0065] 进一步地,所述处理器访问存储器23的软件组件后,执行以下过程的指令:
[0066] 接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0067] 进一步地,所述处理器访问存储器23的软件组件后,执行以下过程的指令:
[0068] 根据所述第一功能单元的信息生成调度次序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。
[0069] 进一步地,所述处理器访问存储器23的软件组件后,执行以下过程的指令:
[0070] 当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0071] 进一步地,所述处理器访问存储器23的软件组件后,执行以下过程的指令:
[0072] 将所述第一功能单元访问共享资源的软件标志置为无效来终止第一功能单元对所述共享资源的访问。
[0073] 上述指令过程实现了对共享资源的访问不会冲突,在异常情况下,强制收回访问权限。
[0074] 图3为本发明实施例提供的鉴权处理方法流程图。本实施例主体是第二功能单元,其中详细描述了第二功能单元对第一功能单元进行权限属性的设置过程。如图3所示,该实施例包括以下步骤:
[0075] 步骤301,第二功能单元接收第一功能单元发送的访问共享资源的请求消息;所述请求消息中携带有第一功能单元的信息。
[0076] 本实施例中,第二功能单元可以配置为多线程中的主线程,或多核系统中的主核,或多模系统中的主制式。对应的,第一功能单元可以配置为多线程中的从线程,或多核系统中的其它核,或多模系统中的其它制式。
[0077] 进一步地,接收第一功能单元发送的访问共享资源的请求消息具体包括:接收多个第一功能单元发送的访问共享资源的请求消息,所述请求消息中携带有各自第一功能单元的信息。
[0078] 步骤302,第二功能单元查询共享资源的操作状态,在共享资源为空闲时,向第一功能单元发送授权消息,用以第一功能单元访问共享资源。
[0079] 第二功能单元查询共享资源是否处于被操作状态,如果共享资源无操作即空闲,则第二功能单元回复第一功能单元可以进行操作,如果共享资源正处于操作中,第二功能单元则等待上次处理结束。本实施例通过增加第一功能单元对第二功能单元的授权流程,解决了多线程、多核或多模之间的资源操作冲突,避免硬件寄存器被多个功能单元同时改写或解
锁导致总线或系统异常,同时也避免了软件共享资源被多个功能单元误写或误读。
[0080] 进一步地,所述查询所述共享资源的操作状态,在所述共享资源为空闲时,向所述第一功能单元发送授权消息具体包括:根据所述第一功能单元的信息生成调度次序列表,在所述共享资源为空闲时,向所述调度次序列表中首位的第一功能单元发送授权消息。此时,处于调度次序表非首位的第一功能单元可以进行加载、卸载或升级等其它操作,其并不影响其它第一功能单元的运行和使用。
[0081] 步骤303,第二功能单元接收第一功能单元的权限释放请求消息,根据权限释放请求消息将所述共享资源置为空闲。
[0082] 发起
申请的第一功能单元获取授权后,对共享资源进行操作,操作完毕,第二功能单元接收第一功能单元发起的权限释放请求消息。
[0083] 进一步地,所述方法还包括:当所述第一功能单元访问所述共享资源的访问时间超过阈值时间时,终止所述第一功能单元对所述共享资源的访问,将所述共享资源的状态设置为空闲。
[0084] 进一步地,终止所述第一功能单元对所述共享资源的访问具体包括:将第一功能单元访问共享资源的软件标志置为无效。
[0085] 具体地,在第一功能单元访问共享资源时,第一功能单元的软件标志置为有效,此时,第二功能单元对已授权的操作进行计时监控,超过一定时限时,第一功能单元的软件标志变为无效,第二功能单元强制收回操作权限,将共享资源的状态设置为空闲,并授权给其他等待授权的第一功能单元。该过程提高了单板可用率,原来可能任意挂死导致某类资源不可用的
风险降低为只有第二功能单元挂死,共享资源才不可用,支持单核复位和恢复,提供了系统鲁棒性。对于多模系统,如果有一个制式故障,不影响另外制式运行以及同类资源的使用,而且在一个制式运行时可以加载、卸载或升级另外一个制式。在多核系统中支持单核复位,支持核粒度的规格及资源动态调整。
[0086] 图4为本发明实施例提供的第一鉴权处理应用交互图。如图4所示,第一功能单元是线程A和线程B,第二功能单元是主功能单元BB_MAIN,共享资源是M。鉴权处理系统中的应用交互过程如下:
[0087] 步骤401,多个第一功能单元向第二功能单元发起操作申请。线程A和线程B向BB_MAIN发起操作申请。
[0088] 步骤402,第二功能单元检查共享资源的操作状态。BB_MAIN接收并处理步骤401的请求消息,按照线程A和线程B发起操作申请的时间,生成调度次序时间表,同时检查M操作状态。
[0089] 步骤403,在共享资源空闲时,第二功能单元对多个第一功能单元按照调度次序进行授权。在M无其它操作即空闲时,BB_MAIN按照调度次序对线程A和线程B进行授权,此处假设线程A的调度时间早于线程B,线程A先得到授权消息,线程A对共享资源进行访问。此时,线程B可以进行其它的操作,比如线程B的升级、加载等。
[0090] 步骤404,第一功能单元对共享资源进行访问。线程对M的操作封装在步骤404中。
[0091] 步骤405,第一功能单元操作完毕之后发送权限空闲消息给第二功能单元。线程A对共享资源访问结束后发送权限空闲消息给BB_MAIN。正常情况下,BB_MAIN接收到线程A发送的授权释放消息,回收权限,再将操作权限授给需要的线程B,B接收到授权消息再执行步骤404的操作。
[0092] 本实施例还包括步骤406,第二功能单元强制收回授权权限。
[0093] 需要说明的是,异常情况包括但不限于线程A操作共享资源时异常和权限释放消息丢失。BB_MAIN对线程A操作M时进行计时监控,在超过时间阈值时,强制收回线程A对M的操作权限,继续进行下次的权限分发处理。
[0094] 与之前的信号量机制相比,很多芯片核间或线程间消息都是由
硬件实现的,所以效率上不会比直接用硬件信号量损失多少;同时,一般信号量pend都是采用死等方式,线程B在等待S时无法进行其它任务处理,而改采用消息机制后,线程B在等待消息授权时也可以进行其它任务处理,可增大系统并行度。通过增加第一功能单元对第二功能单元的授权流程,解决了多线程、多核或多模之间的资源操作冲突避免了硬件寄存器被多个第一功能单元同时改写或解锁导致总线或系统异常以及软件共享资源被多个第一功能单元误写或误读;而且提高了单板可用率,原来可能任意挂死导致某类资源不可用的风险降低为只有第二功能单元挂死,共享资源才不可用,提供了系统鲁棒性;再有,对于多模系统,在一个制式运行时,可以加载、卸载或升级另一个制式,当有一个制式故障,不影响另外制式运行和同类资源的使用。
[0095] 图5为本发明实施例提供的第二鉴权处理应用交互图。如图5所示,以以太网ETH通道的多模资源管理为例,说明鉴权处理系统中的应用交互过程。其中,第一功能单元是
应用软件APP,第二功能单元是基带BB,共享资源是驱动程序DRV。
[0096] 使用本发明技术方案,将对ETH的寄存器操作纳入授权机制管理,获得授权的APP才能操作硬件,保证了串行。同时,授权机制设在BB实现,对APP是不可见的,而对于DRV,由于改由BB来保证互斥,DRV可以不再使用信号量,也简化了DRV的实现,提高了整体系统效率。
[0097] 与使用信号量相比,上层软件BB对多模资源进行了隔离,但底层驱动DRV在通道优先级寄存器操作、lock、unlock操作时仍会使用信号量保证多核操作不冲突,引入了耦合,存在一个线程操作异常(核挂死)引发另外一个线程异常的情况。本实施例简化底层DRV,不需要业务场景的各种考虑,提高了DRV效率。
[0098] 可以理解的是,本实施例不限于基带L1软件应用,L2/L3软件也可以应用。高层软件也存在共享资源互斥、多模资源隔离需求,一样的问题可用同样办法解决。
[0099] 所有多模软系统都可以参考该应用,只要涉及多模资源管理及故障隔离的系统都可用本发明方案进行技术设计。
[0100] 本发明实施例可应用于单核复位、多模故障、故障单板加载以及单制式加载等各种场景,第一功能单元在访问共享资源时,采用鉴权处理方法及装置,通过增加授权流程来解决多线程、多核或多模之间的资源操作冲突,避免硬件寄存器被多个功能单元同时改写或解锁导致总线或系统异常,避免软件共享资源被多个功能单元误写或误读,对于多模系统,如果有一个制式故障,不影响另外制式运行、不影响同类资源的使用,对多模系统,在一个制式运行时可加载、卸载、升级另外一个制式,在DSP中,简化了底层驱动程序实现,不需要业务场景的各种考虑,提高了底层驱动程序效率;通过权限收回机制提高了单板可用率,原来可能任意核挂死导致某类资源不可用的风险降低为只有主核(授权管理所在核)挂死资源才不可用,在多核中支持单核复位,支持核粒度的规格及资源动态调整,提高系统鲁棒性。
[0101] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及
算法步骤,能够以
电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0102] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、
只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0103] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本发明的保护范围之内。