本发明专利技术提出一种数据保护方法及装置。一种数据保护方法,应用于工作队列,该方法包括:接收并存储入队数据;判断所述工作队列是否已满;如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。采用上述技术方案,仅在队列不满时在队尾添加互斥锁,免除了队列已满时添加互斥锁带来的互斥开销,整体上节省了系统开销。
【技术实现步骤摘要】
一种数据保护方法及装置
本专利技术涉及互联网协议存储局域网络(InternetProtocolStorageAreaNetwork,IPSAN)
,尤其涉及一种数据保护方法及装置。
技术介绍
随着社会的发展和计算机的普及,网络中的信息量呈爆炸性增长,存储的网络化成为IT技术的新亮点。存储网络的搭建,使得人们可以将海量的信息存储到网络端,便于共享。在用户端,操作系统为用户提供访问协议栈的接口,保证用户可以通过协议栈访问工作队列,进行数据存储与读取。在多核CPU硬件结构中,如果要充分发挥处理器的计算能力,必须采用多线程执行。在多线程编程中,当用户对工作队列中的共享数据资源进行操作时,需要使用互斥锁来对共享数据进行保护。具体的,当用户对工作队列的共享数据进行访问,例如执行入队或出队操作时,需要在操作的队首和队尾加互斥锁从而对共享数据加以保护。需要说明的是,互斥操作的开销是非常大的,而在现有技术中,对于临界区(共享数据资源区域)的所有入队操作,均添加互斥锁,系统开销非常大。
技术实现思路
基于上述现有技术的缺陷和不足,本专利技术提出一种数据保护方法及装置,采用该方法,仅在工作队列不满时对数据添加互斥锁进行保护,省去了在队列已满时的互斥开销。一种数据保护方法,应用于工作队列,该方法包括:接收并存储入队数据;判断所述工作队列是否已满;如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。优选地,在所述接收并存储入队数据之后,在所述判断所述工作队列是否已满之前,该方法还包括:生成表征所述工作队列状态的变量;其中,当所述工作队列已满时,所述变量的取值为设定的第一取值;当所述工作队列未满时,所述变量的取值为设定的第二取值。优选地,所述生成表征所述工作队列状态的变量,包括:生成表征所述工作队列状态的原子整形变量。优选地,所述判断所述工作队列是否已满,包括:根据所述变量,判断所述工作队列是否已满。优选地,所述根据所述变量,判断所述工作队列是否已满,包括:读取所述变量的值;如果所述变量的值为所述设定的第一取值,则判断所述工作队列已满;如果所述变量的值为所述设定的第二取值,则判断所述工作队列未满。一种数据保护装置,应用于工作队列,该装置包括:数据接收单元,用于接收并存储入队数据;判断单元,用于判断所述工作队列是否已满;处理单元,用于在所述判断单元判断所述工作队列未满时,在所述工作队列的队尾添加互斥锁。优选地,所述装置还包括:变量生成单元,用于生成表征所述工作队列状态的变量;其中,当所述工作队列已满时,所述变量的取值为设定的第一取值;当所述工作队列未满时,所述变量的取值为设定的第二取值;优选地,所述变量生成单元生成表征所述工作队列状态的变量时,具体用于:生成表征所述工作队列状态的原子整形变量。优选地,所述判断单元判断所述工作队列是否已满时,具体用于:根据所述变量,判断所述工作队列是否已满。优选地,所述判断单元根据所述变量,判断所述工作队列是否已满时,具体用于:读取所述变量的值;如果所述变量的值为所述设定的第一取值,则判断所述工作队列已满;如果所述变量的值为所述设定的第二取值,则判断所述工作队列未满。本专利技术提出的数据保护方法,应用于工作队列,该方法包括:接收并存储入队数据;判断所述工作队列是否已满;如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。采用上述技术方案,仅在队列不满时在队尾添加互斥锁,免除了队列已满时添加互斥锁带来的互斥开销,整体上节省了系统开销。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1是本专利技术实施例提供的一种数据保护方法的流程示意图;图2是本专利技术实施例提供的协议栈结构示意图;图3是本专利技术实施例提供的另一种数据保护方法的流程示意图;图4是本专利技术实施例提供的一种数据保护装置的结构示意图;图5是本专利技术实施例提供的另一种数据保护装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。本专利技术实施例公开了一种数据保护方法,应用于工作队列,参见图1所示,该方法包括:S101、接收并存储入队数据;具体的,本专利技术实施例技术方案可应用于互联网协议存储局域网络(InternetProtocolStorageAreaNetwork,IPSAN)。在IPSAN中,用户PC终端访问协议栈,对内核协议栈工作队列进行操作。鉴于传统的内核协议栈的功能冗余、定制性差、操作系统开销大、内存拷贝开销大等缺陷,采用把协议栈构建在用户空间的方式可以很好地避免这些问题。例如,在Linux操作系统中,参见图2所示,系统调用接口提供了用户空间访问协议栈的入口:socket层提供了一组公用接口来支持TCP和UDP协议;网络协议层负责实现TCP/IP协议族中的各种网络协议的处理流程;设备无关层提供了一组公用接口供设备驱动程序使用,其中设备驱动程序针对特定的物理设备来设计实现,提供了操作网络设备的入口。底层数据包从用户终端的网卡缓冲区进入内核时,会触发硬件中断,对应的中断处理例程会以直接内存存取(DirectMemoryAccess,DMA)等方式把数据包从网卡缓冲区拷贝到内核开辟的缓冲区中。基于上述配置,用户终端能够对工作队列进行入队或出队操作。当用户端对工作队列进行入队操作时,即是将需要存储的数据,发送给工作队列,使工作队列进行存储;当用户端对工作队列进行出队操作时,即是从工作队列中读取出需要的数据。在工作队列中,有一些数据是共享数据资源,这些数据资源可以被多个用户线程进行访问操作。为了保证当一个线程对这些数据进行访问操作时不被其它需要访问操作这些数据的线程打扰,工作队列需要对这些数据设置保护锁,以便这些数据只能在同一时间被一个线程访问操作。也就是说,本专利技术实施例技术方案是为了对工作队列中的共享数据进行保护,实际应用于工作队列的临界区,也就是需要进行锁保护的数据资源所在的队列区域。因此,本专利技术实施例所涉及的工作队列,可以看做是需要对数据加互斥锁保护的工作队列。S102、判断所述工作队列是否已满;具体的,工作队列在每接受一次入队操作后,都检验一次工作队列是否已满。S103、如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。具体的,如果在接受一次入队操作后,工作队列检测判断工作队列尚未满,则后续还可以有用户端执行入队操作,同样的,可能会发生多个用户端开启线程执行入队操作的情况,因此需要对工作队列中已有的数据加入队互斥锁,以保护在同一时刻只能有一个线程执行入队操作。又由于入队操作都是在队列尾部进行的,因此在工作队列的队尾加互斥锁,对入队操作进行保护。相反的,如果在接受一次入队操作后,工作队列检测判断工作队列已满,则后续不会再有用户端执行入队操作,因为此时工作队列已经没有空间再接受入队操作,此时,也就不本文档来自技高网...
【技术保护点】
一种数据保护方法,其特征在于,应用于工作队列,该方法包括:接收并存储入队数据;判断所述工作队列是否已满;如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。
【技术特征摘要】
1.一种数据保护方法,其特征在于,应用于工作队列,该方法包括:接收并存储入队数据;判断所述工作队列是否已满;如果所述工作队列未满,则在所述工作队列的队尾添加互斥锁。2.根据权利要求1所述的方法,其特征在于,在所述接收并存储入队数据之后,在所述判断所述工作队列是否已满之前,该方法还包括:生成表征所述工作队列状态的变量;其中,当所述工作队列已满时,所述变量的取值为设定的第一取值;当所述工作队列未满时,所述变量的取值为设定的第二取值。3.根据权利要求2所述的方法,其特征在于,所述生成表征所述工作队列状态的变量,包括:生成表征所述工作队列状态的原子整形变量。4.根据权利要求2所述的方法,其特征在于,所述判断所述工作队列是否已满,包括:根据所述变量,判断所述工作队列是否已满。5.根据权利要求4所述的方法,其特征在于,所述根据所述变量,判断所述工作队列是否已满,包括:读取所述变量的值;如果所述变量的值为所述设定的第一取值,则判断所述工作队列已满;如果所述变量的值为所述设定的第二取值,则判断所述工作队列未满。6.一种数据保护装置,其特征在...
【专利技术属性】
技术研发人员:宋腾,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。