用于实施内核和用户空间之间共享的锁的系统和方法

文档序号:6497127阅读:172来源:国知局
用于实施内核和用户空间之间共享的锁的系统和方法
【专利摘要】一种装置,包括用于为包括内核和用户应用的操作系统(OS)平台实施多个操作的一个或多个处理器,一个或多个所述内核和所述用户应用共享的资源块,以及对应于所述共享的资源块的一个或多个所述内核和所述用户应用共享的锁,其中所述用户应用用于通过直接访问所述锁无需使用到内核的系统呼叫来同步用户线程和内核线程对所述共享资源块的使用。
【专利说明】用于实施内核和用户空间之间共享的锁的系统和方法
[0001]相关申请案交叉申请
[0002]本发明要求2011年11月22日由董雪松等人递交的发明名称为“用于实施内核和用户空间之间共享的锁的系统和方法”的第13/302918号美国专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文本中,如全文再现一般。
【技术领域】
[0003]本发明涉及通信网络,尤其涉及用于实施内核和用户空间之间共享的锁的系统和方法。
【背景技术】
[0004]一些当前操作系统(OS)平台,例如在计算设备和网络组件中使用的OS平台,允许内核空间和用户空间之间共享计算/网络资源(例如,内存、处理器使用、带宽等)。内核对应于OS的组件,其桥接应用(软件)和硬件级别实施的实际数据处理。内核的职责包括管理系统资源,例如软硬件组件之间的通信。通常,内核为应用软件需要控制以执行其功能的资源(例如,为处理器和输入/输出(I/o)设备)提供最低级别的抽象层。内核通常通过进程间通信机制以及系统呼叫向应用进程提供这些资源。内核空间包括内核使用的任务、操作以及关联的资源。用户空间包括应用或软件使用的任务、操作以及关联的资源。

【发明内容】

[0005]在一项实施例中,本发明包括一种装置,包括用于为包括内核和用户应用的操作系统(OS)平台实施多个操作的一个或多个处理器,一个或多个所述内核和所述用户应用共享的资源块,以及对应于所述共享的资源块的一个或多个所述内核和所述用户应用共享的锁,其中所述用户应用用于通过直接访问所述锁无需使用到内核的系统呼叫来同步用户线程和内核线程对所述共享资源块的使用。
[0006]在另一项实施例中,本发明包括共享的内存块以及网络组件,所述网络组件包括用于OS平台的处理器,用于接收来自在所述处理器上操作的第一 OS线程的请求以为多个OS线程访问所述共享的内存块,以及如果所述共享的内存块未被第二 OS线程锁定或者由所述第二 OS线程进行的锁定的时间限制超时,允许所述第一 OS线程锁定并访问所述共享的内存块。
[0007]在第三方面,本发明包括一种由实施包括多个线程的OS平台的处理器实施的方法,所述多个线程包括应用线程和内核线程,所述方法包括如果锁未由另一进程设置,第一线程为目标内存块设置所述锁,所述第一线程接收来自OS内核的关于允许的操作的信息和所述锁的时间限制,所述第一线程访问所述目标内存块的地图,以及如果终止呼叫由所述第一线程从更高优先级的线程接收或者所述目标内存块上的操作由所述第一线程完成,所述第一线程释放所述目标内存块上的所述锁。
[0008]结合附图和权利要求书,可从以下的详细描述中更清楚地理解这些和其他特征。【专利附图】

【附图说明】
[0009]为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表不相同部分。
[0010]图1是内核-用户共享的锁系统的实施例的示意图。
[0011]图2是内核-用户共享的锁方法的实施例的示意图。
[0012]图3是内核-用户共享的锁方法的实施例的示意图。
[0013]图4是网络单元的实施例的示意图。
[0014]图5是通用计算机系统的实施例的示意图。
【具体实施方式】
[0015]最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的系统和/或方法。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
[0016]在典型的OS平台中,资源通过锁在用户空间和内核空间之间共享。锁在内核空间中实施为内核保护或预留资源以及避免用户空间访问锁定的资源。如果资源未被(例如,内核)锁定,那么用户空间可以访问该资源。为了锁定资源,用户线程使用系统呼叫发送锁定操作请求。该锁定方案可导致瓶颈,例如,相对大量的锁定操作请求和系统呼叫,这对高性能系统有害。
[0017]路由器OS平台等实时系统可能需要相对较高的性能基础设施支持和相对较高的系统开销。当性能至关重要,例如,在零复制套接字中,系统缓存可能不会从内核复制以及复制到内核。相反,缓存可在用户空间和内核空间之间共享。在该情况下,为共享的资源(例如,缓存或内存)改善锁机制可显著改善系统性能。本文揭示一种用于管理和处理内核-用户共享的锁的系统和方法以改善用户空间和内核空间之间的内存或资源共享和保护。可管理和操作内核-用户共享的锁以降低用户空间和内核空间之间的通信成本并且提升系统性能。不同于基于由内核提供的系统呼叫的典型方案,所公开的系统和方法可允许用户应用(用户空间)直接设置内核-用户共享的锁以访问用户空间和内核空间之间共享的内存(或类似资源)块。内核-用户共享的锁可允许用户应用无需系统呼叫直接锁定和解锁共享锁以同步到用户空间和内核空间之间共享的内存块的访问。下文详细地描述了实施内核-用户共享的锁的详情。
[0018]图1示出了内核-用户共享的锁系统100的实施例,该系统可在多进程路由OS或软件平台等路由平台中使用。例如,路由平台可对应于路由器等一个或多个网络路由组件,在这些组件中,用户空间应用(例如,路由应用)可与系统内核进行通信以从内核和/或网络接口获取信息或数据。内核-用户共享的锁系统100可实施内核-用户共享的锁方案,其可以通过极大地限制系统呼叫的使用允许共享内核空间和用户空间之间的一些资源和/或数据结构。限制系统呼叫的使用可提高平台的部件或机器内或间的通信性能,从而降低系统开销。可使用内核-用户共享的锁的集合,其可包括多个互斥锁、读/写锁、自旋锁和/或其他类型的锁。[0019]内核-用户共享的锁系统100可包括内核-用户共享的内存或内存块110,其可由内核生产者线程102、内核消费者线程104、用户生产者线程106和用户消费者线程108访问。内核-用户共享的内存110可包括发送缓存112、接收缓存114、与发送缓存112关联的第一锁(Lockl)控制块122和与接收缓存114关联的第二锁(Lock2)控制块124。内核生产者线程102可以是用于访问接收缓存114以放置数据的内核空间的一部分。用户消费者线程108可以是用于访问接收缓存114以接收已放置的数据的用户空间(或应用)的一部分。用户生产者线程106可以是用于访问发送缓存112以放置数据的用户空间的一部分。内核消费者线程104可以是用于访问发送缓存112以获取放置的数据的内核空间的一部分。
[0020]内核生产者线程102和用户消费者线程108可在试图访问接收缓存114之前检查Lock2控制块124。如果Lock2控制块124未锁定或Lock2控制块124的锁定时间超时,那么内核生产者线程102或用户消费者线程108可锁定Lock2控制块124,然后访问接收缓存114。同样,用户生产者线程106和内核消费者线程104可在试图访问发送缓存112之前检查Lockl控制块122。如果Lockl控制块122未锁定或Lockl控制块122的锁定时间超时,那么用户生产者线程106或内核消费者线程104可锁定Lockl控制块122,然后访问发送缓存112。例如,Lockl控制块122和Lock2控制块124可以是包括例如标志等的数据结构的内存部件,可设置标志以放置锁或不设置标志以删除锁。
[0021]内核-用户共享的锁系统100可有利于保护以生产者-消费者方式运转的数据结构。内核套接字缓存的内容可通常从用户内存空间复制或复制到用户内存空间。如果缓存在用户空间和内核空间之间共享,共享锁可用于保护共享的数据结构、用户线程或进程可对应于发送缓存112上的用户生产者线程106或接收缓存114上的用户消费者线程108。内核线程可对应于接收缓存114上的内核生产者线程102或发送缓存112上的内核消费者线程104。用户线程可在最大时间周期内持有共享锁,该最大时间周期在锁创建时确定并在锁释放时结束。用户线程的优先级可根据优先级继承(分层)设置而变化。
[0022](例如,用户生产者线程106或用户消费者线程108)可使用用户空间应用编程接口(API)(或代码)以(例如,为Lockl控制块122或Lock2控制块124)初始化锁。初始化过程中,一部分内核-用户共享的内存110(例如,发送缓存112或接收缓存114)可被创建并被映射到用户内存空间。当锁被初始化时,用户应用(例如,用户生产者线程106或用户消费者线程108)可从内核获取合同,指明应用可在锁上进行的操作和/或应用可以持有锁的时长。如果锁持有的时间大于指明的时间限制,内核(例如,内核消费者线程104或内核生产者线程102)可杀死用户进程。
[0023]如果用户进程或内核试图获取或释放锁,可直接完成获取/释放操作而无需调用系统呼叫,这与典型共享锁方案不同。当用户应用持有锁时,用户应用可在锁释放时完成运行,但是如果系统允许,用户应用可能仍然易被抢占。例如,如果需要,内核可在任意时间杀死用户应用并释放锁。可归类不同线程(内核和用户线程),这样一些类型的线程(例如,内核线程)比其他类型的线程(例如,用户线程)能优先获取锁。优先级倒置可由优先级继承设置解决,优先级继承可允许,例如,用户线程的优先级和内核线程的优先级一样高。优先级倒置是一种当更高优先级的任务被较低优先级的任务间接抢占有效地“倒置”两个任务的相对优先级时调度的问题场景。这违反了优先级模式,优先级模式中,高优先级任务仅能被更高优先级的任务阻止运行并暂时被低优先级任务阻止运行,该低优先级任务将快速完成高和低优先级任务共享的资源的使用。
[0024]图2示出了内核-用户共享的锁方法200的实施例,该方法可在内核-用户共享的锁系统100中实施。内核-用户共享的锁方法200可由用户线程或用户应用,例如用户生产者线程106或用户消费者线程108,实施。内核-用户共享的锁方法200可开始于方框210,其中用户应用或线程可确定目标内存块上是否设置了锁。例如,用户生产者线程106可检查是否为发送缓存112设置了 Lockl控制块122。同样,用户消费者线程108可检查是否为接收缓存114设置了 Lock2控制块124。如果方框210中的条件为真,那么方法200可返回方框210(即,重新开始)以验证一段时间后锁是否仍被设置。否则,方法200可以前进到方框220。
[0025]在方框220处,可为目标内存块设置锁。当锁未由例如另一用户线程或内核在目标内存块上设置时,用户线程可设置锁。在块230处,可从内核接收关于允许的操作的信息和/或锁的时间限制。用户线程可从内核接收这些数据,并且可相应地设置在目标内存块上访问和操作的定时器。在方框240处,可访问目标内存块。用户线程可将目标内存块映射到用户空间,然后访问映射的内存数据,例如以进行读操作、写操作或其他类型的操作。
[0026]在方框250处,用户线程可确定是否已经接收到了终止呼叫或目标内存块上的操作是否已经完成。如果用户线程从内核或比用户线程的优先级高的任一线程接收到了截断或终止呼叫,或者如果用户线程操作完成,那么方法200可前进到方框260。否则,方法200可返回到方框250并继续在目标内存块上访问并操作直到方框250中的条件变为真。在方框260处,可释放目标内存块上的锁。因此,用户线程可不再访问共享内存块并终止或暂停操作。方法200随后可以结束。
[0027]图3示出了另一内核-用户共享的锁方法300的实施例,该方法可在内核-用户共享的锁系统100中实施。内核-用户共享的锁方法300可由内核线程,例如内核生产者线程102或内核消费者线程104,实施。内核-用户共享的锁方法300可开始于方框310,其中内核线程可确定目标内存块上是否设置了锁。例如,内核生产者线程102可检查是否为接收缓存114设置了 Lock2控制块124。同样,内核消费者线程104可检查是否为发送缓存112设置了 Lockl控制块122。如果方框310中的条件为真,那么方法300可前进到方框330。否则,方法300可前进到方框320。
[0028]在方框320处,内核线程可确定锁的时间限制是否超时。如果方框320中的条件为真,那么方法300可前进到方框330。否则,方法300可返回方框310(即,重新开始)以验证一段时间后锁是否仍被设置。在方框330处,(例如内核线程)可终止目标内存块上的锁。在方框340处,(例如内核线程)可为目标内存块设置锁。在方框350处,(例如内核线程)可访问目标内存块以进行写操作、读操作或其他类型的操作。在方框360处,内核线程可确定目标内存块上的操作是否完成。如果内核线程操作完成,那么方法300可前进到方框370。否则,方法300可返回方框350并继续在目标内存块上访问和操作直到方框360中的条件变为真。在方框370处,可释放目标内存块上的锁。因此,目标内存块对于其他线程可变为可用。方法300随后可以结束。
[0029]在一些实施例中,更高优先级(用户)线程可实施方法300中的类似步骤以锁定/访问可与更低优先级(用户)线程共享的目标内存块。例如,更高优先级的线程可终止更低优先级线程的锁,然后锁定和访问目标内存块。当线程操作结束时,更高优先级线程可随后释放锁。更低优先级线程可能无权终止由更高优先级线程设置的锁,但是可以等待直到锁被操作线程终止。内核可具有最高优先级以终止锁和访问共享内存块。进一步地,不同内核线程和/或用户线程可被分配不同的优先级。可实施方法200和300中的锁定/终止机制而无需在内核中发送或发起系统呼叫。
[0030]图4示出了网络单元400的实施例,所述网络单元可以是在网络中路由数据或报文的任何设备。例如,网络单元400可位于路由器或与其他组件交换或传输数据的任意网络组件中。网络400可包括一个或多个耦合到接收器412 (Rx)的入端口 410,所述接收器可用于从其他组件接收数据、报文或帧。网络400可包括耦合到接收器412的逻辑单元或处理器420并用于处理数据或确定将数据发送到哪些组件。逻辑单元420也可耦合到存储单元440用于数据存储。逻辑单元或处理器420也可用于实施或支持内核-用户共享的方法200和300。逻辑单元或处理器420可以使用硬件、软件或两者来实施。网络单元400还可包括一个或多个耦合到发射器432 (Tx)的出端口 430,所述发射器可用于传输数据、报文或帧到其他组件。 [0031]上述组件和/或方法可在任何通用网络组件上实施,例如计算机或网络组件,其具有足够的处理能力、存储资源和网络吞吐能力来处理其上的必要工作负荷。图5示出了一种典型的通用网络组件500,其适用于实施本文所揭示组件的一项或多项实施例。网络组件500包括处理器502 (可以称为中央处理器单元或CPU),其与包括辅助存储器504、只读存储器(ROM) 506、随机存取存储器(RAM) 508、输入/输出(I/O)设备510,以及网络连接设备512在内的存储设备通信。处理器502可以作为一个或多个CPU芯片实施,或者可以为一个或多个专用集成电路(ASIC)的一部分。
[0032]辅助存储器504通常由一个或多个磁盘驱动器或磁带驱动器组成,用于数据的非易失性存储,且如果RAM508的大小不足以保存所有工作数据,那么所述辅助存储器还用作溢流数据存储设备。辅助存储器504可以用于存储程序,当选择执行这些程序时,所述程序将加载到RAM508中。R0M506用于存储在程序执行期间读取的指令以及可能读取的数据。R0M506为非易失性存储设备,其存储容量相对于辅助存储器504的较大存储容量而言通常较小。RAM508用于存储易失性数据,并且可能用于存储指令。R0M506和RAM508两者的存取速度通常比辅助存储器504的存取速度快。
[0033]本发明公开至少一项实施例,且所属领域的普通技术人员对所述实施例和/或所述实施例的特征作出的变化、组合和/或修改均在本发明公开的范围内。因组合、合并和/或省略所述实施例的特征而得到的替代性实施例也在本发明的范围内。应当理解的是,本发明已明确阐明了数值范围或限制,此类明确的范围或限制应包括涵盖在上述范围或限制(如从大约I至大约10的范围包括2、3、4等;大于0.10的范围包括0.11,0.12,0.13等)内的类似数量级的迭代范围或限制。例如,每当公开具有下限R1和上限Ru的数值范围时,具体是公开落入所述范围内的任何数字。具体而言,特别公开所述范围内的以下数字:R =R^kMRu-R1),其中k为从I %到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%,7%,...,70%,71%,72%,...、97%、96%、97%、98%、99%或 100%。此外,还特此公开了,上文定义的两个R值所定义的任何数值范围。相对于权利要求的某一要素,术语“可选择”的使用表示该要素可以是“需要的”,或者也可以是“不需要的”,二者均在所述权利要求的范围内。使用如“包括”、“包含”和“具有”等较广术语应被理解为提供对如“由...组成”、“基本上由...组成”以及“大体上由...组成”等较窄术语的支持。因此,保护范围不受上文所述的限制,而是由所附权利要求书定义,所述范围包含所附权利要求书的标的物的所有等效物。每项和每条权利要求作为进一步公开的内容并入说明书中,且权利要求书是本发明的实施例。所述揭示内容中的参考的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请 优先权日:期之后的
【公开日】期的任何参考。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文本中,其提供补充本发明的示例性、程序性或其他细节。
[0034]虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或组件可以在另一系统中组合或合并,或者某些特征可以省略或不实施。
[0035]此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可以与其他系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦接或直接耦接或通信的其他项也可以采用电方式、机械方式或其他方式通过某一接口、设备或中间组件间接地耦接或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
【权利要求】
1.一种装置,其特征在于,包括: 用于为包括内核和用户应用的操作系统(OS)平台实施多个操作的一个或多个处理器; 一个或多个所述内核和所述用户应用共享的资源块;以及 对应于所述共享的资源块的一个或多个所述内核和所述用户应用共享的锁, 其中所述用户应用用于通过直接访问所述锁无需使用到内核的系统呼叫来同步用户线程和内核线程对所述共享资源块的使用。
2.根据权利要求1所述的装置,其特征在于,OS平台是多处理网络路由OS平台,用户应用是网络路由功能。
3.根据权利要求1所述的装置,其特征在于,所述共享资源块包括多个所述内核和所述用户应用之间的共享内存块,所述锁包括多个互斥锁、读/写锁以及自旋锁中的至少一个。
4.根据权利要求1所述的装置,其特征在于,所述共享资源块包括所述内核和所述用户应用之间共享的零复制套接字。
5.根据权利要求1所述的装置,其特征在于,所述用户应用通过将来自内核空间的所述共享资源块的所述数 据映射到用户空间并在所述映射的数据上操作来共享所述共享资源块。
6.根据权利要求1所述的装置,其特征在于,为所述OS进行的所述操作包括多个根据优先级分类的内核线程和用户线程,所述具有较高优先级的所述内核线程允许通过终止所述用户线程删除由具有较低优先级的所述用户线程设置的所述锁。
7.根据权利要求6所述的装置,其特征在于,所述共享锁在内核空间中初始化并由所述用户线程和所述内核线程使用。
8.一种网络组件,其特征在于,包括: 共享的内存块;以及 用于OS平台的处理器,用于接收来自在所述处理器上操作的第一 OS线程的请求以为多个OS线程访问所述共享的内存块,以及如果所述共享的内存块未被第二 OS线程锁定或者由所述第二 OS线程进行的锁定的时间限制超时,允许所述第一 OS线程锁定并访问所述共享的内存块。
9.根据权利要求8所述的网络组件,其特征在于,所述第一OS线程是实施应用编程接口(API)的应用线程以初始化所述共享内存块上的锁。
10.根据权利要求8所述的网络组件,其特征在于,所述第一OS线程是第一应用线程,所述第二 OS线程是第二应用线程。
11.根据权利要求8所述的网络组件,其特征在于,所述第一OS线程是应用线程,所述第二 OS线程是内核线程。
12.根据权利要求8所述的网络组件,其特征在于,所述第一OS线程在无需使用到OS内核的系统呼叫完成所述共享内存块上的操作后设置锁以访问共享内存块并删除所述锁。
13.根据权利要求8所述的网络组件,其特征在于,在允许所述第一OS线程锁定并访问所述共享内存块前由所述第二 OS线程删除所述锁。
14.根据权利要求8所述的网络组件,其特征在于,所述锁包括读/写锁和自旋锁中的一个。
15.一种由实施包括多个线程的操作系统(OS)平台的处理器实施的方法,所述多个线程包括应用线程和内核线程,其特征在于,包括: 如果锁未由另一线程设置,第一线程为目标内存块设置所述锁; 所述第一线程接收来自OS内核的关于允许的操作的信息和所述锁的时间限制; 所述第一线程访问所述目标内存块的地图;以及 如果终止呼叫由所述第一线程从更高优先级的线程接收或者所述目标内存块上的操作由所述第一线程完成,所述第一线程释放所述目标内存块上的所述锁。
16.根据权利要求15所述的方法,其特征在于,所述第一线程是较低优先级的应用线程,其中,所述较高优先级的线程是内核线程或较高优先级的应用线程。
17.根据权利要求15所述的方法,其特征在于,进一步包括: 如果另一线程未设置锁或者如果所述目标内存块上的锁的时间限制超时,第二线程终止所述目标内存块上设置的锁; 所述第二线程为所述目标内存块设置锁;以及 所述第二线程访问所述目标内存块。
18.根据权利要求15所述的方法,其特征在于,进一步包括: 如果所述目标内存块上的操作由所述第二线程完成,所述第二线程释放所述目标内存块上的所述锁。
19.根据权利要求18所述的方法,其特征在于,所述第二线程是内核线程或应用线程,其优先级与内核线程相同或高于其他线程。
20.根据权利要求15所述的方法,其特征在于,所述锁包括读/写锁和自旋锁中的一个。
【文档编号】G06F13/18GK103946827SQ201280056350
【公开日】2014年7月23日 申请日期:2012年11月22日 优先权日:2011年11月22日
【发明者】董雪松, 尹鸿涛, 兰达尔·斯图尔特, 胡士辉, 李凤凯 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1