一种应用于多核系统的分布式引用计数系统及计数方法
技术领域
本发明涉及一种应用于多核系统的分布式引用计数系统及计数方法。
背景技术
为了管理各种资源,现代操作系统(例如Linux)一般采用引用计数的策略对资源进行管理,现有的资源的引用计数是一个共享计数器。内核中的计数器可用于网络统计、记录各种资源的使用率等等。如果多个处理器试图更新同一个计数器,则可能引起严重的竞争。因此,传统操作系统通常使用粗粒度锁来保护内核对象中共享的引用计数。进程获取一个对象的引用时,首先申请锁,申请成功后操作计数器加1,最后解锁;释放引用时则依次执行加锁、计数器减1和解锁操作,并执行垃圾回收,同时需要判断计数器是否为零,如果为零,表示没有进程引用相应的对象,此时可撤销该对象。随着系统中CPU(或CPU核)数量的增加,计数器可能成为瓶颈:每次只有一个CPU可以修改该值,其它所有的CPU都必须等待操作结束,才能再次访问计数器。如果计数器频繁地被访问,对锁的竞争更为激烈。计数器的本质是一个整数变量,在SMP环境下需要保护该变量不被并发更新。一种简单的方法是把计数器定义为原子变量,并使用相应的原子加、减操作,然而原子计数器使用了复杂的锁操作,要求当前CPU独占该变量的cache访问。一个经常修改的原子计数器可能导致CPU核的cache过分抖动,严重影响系统性能。
本发明克服了传统操作系统引用计数机制的瓶颈,从而解决由传统操作系统使用粗粒度锁来保护内核对象中共享的引用而导致的CPU某个内核独占共享引用计数而过分“抖动”,严重影响系统性能的问题。该机制适用于优化操作系统中引用计数,从而避免共享计数器的竞争,改善系统的可扩展性。
发明内容
针对上述技术问题,本发明所要解决的技术问题是提供一种克服了传统操作系统引用资源机制的瓶颈,有效避免某个系统内核独占系统全局引用计数模块而过分“抖动”,严重影响系统性能现象发生的应用于多核系统的分布式引用计数系统。
与之相应, 针对上述技术问题,本发明所要解决的技术问题是提供一种基于本发明设计的应用于多核系统的分布式引用计数系统,克服了传统操作系统引用资源机制的瓶颈,有效提高系统资源引用效率的计数方法。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种应用于多核系统的分布式引用计数系统,包括至少两个系统内核、内存存储模块、任务管理器和系统全局引用计数模块;还包括数个本地资源引用模块,本地资源引用模块的数量与系统内核的数量相一致;各个系统内核分别一一对应与各个本地资源引用模块相通信;同时,各个系统内核分别与内存存储模块、任务管理器、系统全局引用计数模块相通信。
作为本发明的一种优选技术方案:还包括全局锁模块和数个本地锁模块,所述各个系统内核与全局锁模块相通信;本地锁模块的数量与所述系统内核的数量相一致,所述各个系统内核分别一一对应与各个本地锁模块相通信。
本发明所述一种基于本发明设计应用于多核系统的分布式引用计数系统采用以上技术方案与现有技术相比,具有以下技术效果:
(1)本发明设计一种应用于多核系统的分布式引用计数系统,在现有技术基础之上,引入数个分别与各个系统内核一一对应的本地资源引用模块,有效降低了系统内核直接对系统全局引用计数模块的访问频率,有效避免了某个系统内核独占系统全局引用计数模块而出现的过分“抖动”现象,有效地改善了操作系统的服务能力,提高了系统的可扩展性;
(2)本发明设计一种应用于多核系统的分布式引用计数系统,在引入本地资源引用模块的同时,引入全局锁模块和本地锁模块,实现在各个系统内核进行资源高效率引用的同时,避免了针对资源的并发操作,保证了系统的稳定运行。
与此相应,本发明为了解决上述技术问题采用以下技术方案:本发明还设计了一种基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,包括如下步骤:
步骤001. 根据系统工作要求,预先初始化从所述内存存储模块中分配可用资源至所述各个本地资源引用模块中,所述系统全局引用计数模块清零;
步骤002. 所述系统内核接收由任务管理器分配的任务后,该系统内核根据接收到的任务,向与之对应的本地资源引用模块请求并获得引用资源;
步骤003. 该系统内核根据请求获得的引用资源完成该任务的执行,同时,所述系统全局引用计数模块根据该系统内核请求获得的引用资源数,更新已引用的系统资源数。
作为本发明的一种优选技术方案:所述步骤002中,若所述该系统内核请求引用资源的数量大于其对应的本地资源引用模块中存储可用资源的数量时,该系统内核先引用其对应的本地资源引用模块中的所有可用资源后,然后从所述内存存储模块中的可用资源中继续引用不足的资源。
作为本发明的一种优选技术方案:所述步骤002中,该系统内核获得引用资源后,与该系统内核对应的本地锁模块对该系统内核从对应本地资源引用模块中引用的资源进行加锁;同时,全局锁模块对由所述内存存储模块中引用的资源进行加锁。
作为本发明的一种优选技术方案:所述步骤003后,还包括步骤004如下:
步骤004. 该系统内核完成该任务的执行后,该系统内核释放所引用的资源,所述全局引用计数模块减去该释放引用资源的数量,更新已引用的系统资源数,并且判断当前所引用的资源引用自何处,若来自所述本地资源引用模块,则由本地资源引用模块回收该资源,并解除该资源上相应的锁;若来自所述内存存储模块,则由内存存储模块回收该资源,并解除该资源上相应的锁。
本发明所述一种基于本发明所述应用于多核系统的分布式引用计数系统的计数方法采用以上技术方案与现有技术相比,具有以下技术效果:
(1)本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,针对引入数个分别与各个系统内核一一对应的本地资源引用模块的多核系统,通过各个系统内核分别与各个本地资源引用模块一一对应的通信方式,有效降低了多个系统内核直接对系统全局引用计数模块的访问频率,克服了资源引用机制的瓶颈,避免了某个系统内核独占系统全局引用计数模块而出现的过分“抖动”现象,有效地改善了操作系统的服务能力,提高了系统的可扩展性;
(2)本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,在实现各个系统内核对资源引用的同时,采用全局锁模块和本地锁模块,对相应被引用的资源实现加锁操作,避免了针对资源的并发操作,保证了系统方法的稳定运行;
(3)本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法中,还设计了针对引用资源的资源回收操作,能够保证系统内核执行完任务后,及时实现对资源的释放与回收操作,保证了系统内核再次执行任务时的高效率。
附图说明
图1是本发明设计基于应用于多核系统的分布式引用计数系统的计数方法的步骤流程示意图。
具体实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
本发明设计一种应用于多核系统的分布式引用计数系统,包括至少两个系统内核、内存存储模块、任务管理器和系统全局引用计数模块;还包括数个本地资源引用模块,本地资源引用模块的数量与系统内核的数量相一致;各个系统内核分别一一对应与各个本地资源引用模块相通信;同时,各个系统内核分别与内存存储模块、任务管理器、系统全局引用计数模块相通信,在现有技术基础之上,引入数个分别与各个系统内核一一对应的本地资源引用模块,有效降低了系统内核直接对系统全局引用计数模块的访问频率,有效避免了某个系统内核独占系统全局引用计数模块而出现的过分“抖动”现象,有效地改善了操作系统的服务能力,提高了系统的可扩展性。
作为本发明的一种优选技术方案:还包括全局锁模块和数个本地锁模块,所述各个系统内核与全局锁模块相通信;本地锁模块的数量与所述系统内核的数量相一致,所述各个系统内核分别一一对应与各个本地锁模块相通信,在引入本地资源引用模块的同时,引入全局锁模块和本地锁模块,实现在各个系统内核进行资源高效率引用的同时,避免了针对资源的并发操作,保证了系统的稳定运行。
与此相应,如图1所示,本发明设计一种基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,包括如下步骤:
步骤001. 根据系统工作要求,预先初始化从所述内存存储模块中分配可用资源至所述各个本地资源引用模块中,所述系统全局引用计数模块清零;
步骤002. 所述系统内核接收由任务管理器分配的任务后,该系统内核根据接收到的任务,向与之对应的本地资源引用模块请求并获得引用资源;
步骤003. 该系统内核根据请求获得的引用资源完成该任务的执行,同时,所述系统全局引用计数模块根据该系统内核请求获得的引用资源数,更新已引用的系统资源数。
本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,针对引入数个分别与各个系统内核一一对应的本地资源引用模块的多核系统,通过各个系统内核分别与各个本地资源引用模块一一对应的通信方式,有效降低了多个系统内核直接对系统全局引用计数模块的访问频率,克服了资源引用机制的瓶颈,避免了某个系统内核独占系统全局引用计数模块而出现的过分“抖动”现象,有效地改善了操作系统的服务能力,提高了系统的可扩展性。
作为本发明的一种优选技术方案:所述步骤002中,若所述该系统内核请求引用资源的数量大于其对应的本地资源引用模块中存储可用资源的数量时,该系统内核先引用其对应的本地资源引用模块中的所有可用资源后,然后从所述内存存储模块中的可用资源中继续引用不足的资源。
作为本发明的一种优选技术方案:所述步骤002中,该系统内核获得引用资源后,与该系统内核对应的本地锁模块对该系统内核从对应本地资源引用模块中引用的资源进行加锁;同时,全局锁模块对由所述内存存储模块中引用的资源进行加锁。
本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法,在实现各个系统内核对资源引用的同时,采用全局锁模块和本地锁模块,对相应被引用的资源实现加锁操作,避免了针对资源的并发操作,保证了系统方法的稳定运行。
作为本发明的一种优选技术方案:所述步骤003后,还包括步骤004如下:
步骤004. 该系统内核完成该任务的执行后,该系统内核释放所引用的资源,所述全局引用计数模块减去该释放引用资源的数量,更新已引用的系统资源数,并且判断当前所引用的资源引用自何处,若来自所述本地资源引用模块,则由本地资源引用模块回收该资源,并解除该资源上相应的锁;若来自所述内存存储模块,则由内存存储模块回收该资源,并解除该资源上相应的锁。
本发明设计的基于本发明所述应用于多核系统的分布式引用计数系统的计数方法中,还设计了针对引用资源的资源回收操作,能够保证系统内核执行完任务后,及时实现对资源的释放与回收操作,保证了系统内核再次执行任务时的高效率。
综上所述,本发明设计一种应用于多核系统的分布式引用计数系统及计数方法实际应用过程中,针对应用于多核系统的分布式引用计数系统,包括至少两个系统内核、内存存储模块、任务管理器、系统全局引用计数模块、全局锁模块和数个本地锁模;还包括数个本地资源引用模块,本地资源引用模块的数量与系统内核的数量相一致;各个系统内核分别一一对应与各个本地资源引用模块相通信;同时,各个系统内核分别与内存存储模块、任务管理器、系统全局引用计数模块相通信;各个系统内核与全局锁模块相通信;本地锁模块的数量与所述系统内核的数量相一致,所述各个系统内核分别一一对应与各个本地锁模块相通信。基于以上应用于多核系统的分布式引用计数系统的基础之上,通过如下方法步骤实现计数。
步骤001. 根据系统工作要求,预先初始化从所述内存存储模块中分配可用资源至所述各个本地资源引用模块中,所述系统全局引用计数模块清零;
步骤002. 所述系统内核接收由任务管理器分配的任务后,该系统内核根据接收到的任务,向与之对应的本地资源引用模块请求并获得引用资源,若所述该系统内核请求引用资源的数量大于其对应的本地资源引用模块中存储可用资源的数量时,该系统内核先引用其对应的本地资源引用模块中的所有可用资源后,然后从所述内存存储模块中的可用资源中继续引用不足的资源;该系统内核获得引用资源后,与该系统内核对应的本地锁模块对该系统内核从对应本地资源引用模块中引用的资源进行加锁;同时,全局锁模块对由所述内存存储模块中引用的资源进行加锁;
步骤003. 该系统内核根据请求获得的引用资源完成该任务的执行,同时,所述系统全局引用计数模块根据该系统内核请求获得的引用资源数,更新已引用的系统资源数;
步骤004. 该系统内核完成该任务的执行后,该系统内核释放所引用的资源,所述全局引用计数模块减去该释放引用资源的数量,更新已引用的系统资源数,并且判断当前所引用的资源引用自何处,若来自所述本地资源引用模块,则由本地资源引用模块回收该资源,并解除该资源上相应的锁;若来自所述内存存储模块,则由内存存储模块回收该资源,并解除该资源上相应的锁。
本发明是在传统操作系统基础上设计了应用于多核系统的分布式引用计数系统及计数方法,能够有效减少进程间对资源引用的竞争,降低持有资源引用、释放资源引用时的开销。改进后的计数系统及计数方法保留了系统全局引用计数模块,同时引入了数个分别与各个系统内核一一对应的本地资源引用模块,初始化时,从所述内存存储模块中分配可用资源至所述各个本地资源引用模块中,所述系统全局引用计数模块清零;当某个系统内核执行任务需要引用资源时,该系统内核先从与之对应的本地资源引用模块中请求引用资源,若所述该系统内核请求引用资源的数量大于其对应的本地资源引用模块中存储可用资源的数量时,该系统内核先引用其对应的本地资源引用模块中的所有可用资源后,然后从所述内存存储模块中的可用资源中继续引用不足的资源;该系统内核获得引用资源后,再通过相应的本地锁模块或全局锁模块对相应的资源进行加锁;同时,系统全局引用计数模块更新已引用的系统资源数;当该系统内核执行完该任务时,本发明相应设计了资源回收方法。相对于传统的资源引用机制,本发明克服了资源引用机制的瓶颈,避免了某个系统内核独占系统全局引用计数模块而出现的过分“抖动”现象,有效地改善了操作系统的服务能力,提高了系统的可扩展性。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。