CN106095908B - 用于关联进程和连接的方法和装置 - Google Patents
用于关联进程和连接的方法和装置 Download PDFInfo
- Publication number
- CN106095908B CN106095908B CN201610404282.0A CN201610404282A CN106095908B CN 106095908 B CN106095908 B CN 106095908B CN 201610404282 A CN201610404282 A CN 201610404282A CN 106095908 B CN106095908 B CN 106095908B
- Authority
- CN
- China
- Prior art keywords
- chained list
- node
- column
- row
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于关联进程和连接的方法,包括:获取第一进程的标识ID及与所述第一进程相关的N个连接的ID;逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表;其中,各第一结点分别处于一个列链表,每个第一结点都包括行指示域和列指示域;在全部第一结点的行指示域存储所述第一进程的ID,并在每个第一结点的列指示域存储一个连接ID;其中,N为与所述第一进程相关的连接的数量。本发明采用十字链表的结构存储多个进程和多个连接,以将进程和连接进行关联。采用该方法能够动态跟踪TCP连接和进程,不仅跟踪效率高而且便于查看连接与进程的相关信息。本发明还提出一种用于关联进程和连接的装置。
Description
技术领域
本发明属于计算机数据处理领域,尤其涉及一种用于关联进程和连接的方法和装置。
背景技术
传输控制协议(TCP,Transmission Control Protocol)连接跟踪是网络流控和防火墙中的一项重要的基础技术,当运用于主机时,连接必与进程相关联,要么是主动发出的,要么是被动接受的,当子进程被动态创建时,由于文件描述符的继承,一个连接就会被这个进程树中的所有进程共享;当一个进程发出或接受多个连接时,就拥有了多个连接。
通过网络状态(netstat)命令工具虽然能够得知活动的TCP连接,但netstat命令工具只能将各TCP连接关联到一个根进程,很难查看某一进程拥有的全部连接,也无法看到拥有某一连接的所有进程。
发明内容
有鉴于此,本发明的一个目的是提出一种用于关联进程和连接的方法。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
在一些可选的实施例中,所述用于关联进程和连接的方法包括:
获取第一进程的标识ID及与所述第一进程相关的N个连接的ID;
逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表;其中,各第一结点分别处于一个列链表,每个第一结点都包括行指示域和列指示域;
在全部第一结点的行指示域存储所述第一进程的ID,并在每个第一结点的列指示域存储一个连接ID;
其中,N为与所述第一进程相关的连接的数量。
在另一些可选的实施例中,所述用于关联进程和连接的方法包括:
为第三进程产生的新连接分配包括行指示域和列指示域的链表结点;
在所述链表结点的行指示域存储所述第三进程的ID,并将所述新连接的ID存储在所述链表结点的列指示域;
将所述链表结点插入所述第三进程的行链表以及所述新连接所处的列链表。
本发明的一个目的是提出一种用于关联进程和连接的装置。
在一些可选的实施例中,所述用于关联进程和连接的装置包括:
第一单元,用于获取第一进程的标识ID及与所述第一进程相关的N个连接的ID;
第二单元,用于逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表;其中,各第一结点分别处于一个列链表,每个第一结点都包括行指示域和列指示域;和,
第三单元,用于在全部第一结点的行指示域存储所述第一进程的ID,并在每个第一结点的列指示域存储一个连接ID;
其中,N为与所述第一进程相关的连接的数量。
在另一些可选的实施例中,所述用于关联进程和连接的装置包括:
第十一单元,用于为第三进程产生的新连接分配包括行指示域和列指示域的链表结点;
第十二单元,用于在所述链表结点的行指示域存储所述第三进程的ID,并将所述新连接的ID存储在所述链表结点的列指示域;和
第十三单元,用于将所述链表结点插入所述第三进程的行链表以及所述新连接所处的列链表。
为了上述以及相关的目的,一个或多个实施例包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明某些示例性方面,并且其指示的仅仅是各个实施例的原则可以利用的各种方式中的一些方式。其它的益处和新颖性特征将随着下面的详细说明结合附图考虑而变得明显,所公开的实施例是要包括所有这些方面以及它们的等同。
说明书附图
图1是十字链表中每个链表结点的结构示意图;
图2是采用十字链表关联进程和连接的一个可选实施流程;
图3是采用十字链表关联进程和连接的另一个可选实施流程;
图4是采用十字链表关联进程和连接的另一个可选实施流程;
图5是采用十字链表关联进程和连接的另一个可选实施流程;
图6是采用十字链表关联进程和连接的另一个可选实施流程;
图7是采用十字链表关联进程和连接的示意图;
图8是采用十字链表关联进程和连接的一个可选装置示意图。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
十字链表(Orthogonal List)是有向图的另一种链式存储结构,该结构可以看成是将有向图的邻接表和逆邻接表相结合得到的。十字链表的存储方式是稀疏矩阵中每个非0元素对应一个十字链表结点(node),每个结点的结构如图1所示,包括行指示域(row)、列指示域(col)、数值域(val)、向下指针(down)和向右指针(right)。其中,行指示域通常用于存放行号,列指示域通常用于存放列号,数值域通常用于存放数值,向下指针指向同列中下一个非0元素结点,向右指针指向同行中下一个非0元素结点。十字链表的每个行链表和每个列链表都设有一个表头结点,以向下指针和向右指针为链构成循环链表,即第i列头结点的向下指针指向该列链表上第1个非0元素,第i行头结点的向右指针指向该行链表第1个非0元素。每个列链表或每个行链表上最后一个结点的向下指针或向右指针指向该列链表或该行链表的头结点。若某列链表或行链表中无非0元素,则令其头结点的向下指针或向右指针指向该头结点自身。十字链表有一个总头结点,可令总头结点的行指示域,列指示域与数值域分别表示矩阵的最大行号、列号与非0元素个数,而向下指针和向右指针指向第1个列链表和第1个行链表的头结点。该总头结点可作为整个十字链表的代表。
十字链表常用于表示稀疏矩阵,可视作稀疏矩阵的一种链式表示。鉴于一个进程会拥有多个连接,一个连接会被多个进程拥有,本文创造性地提出采用十字链表的结构存储多个进程和多个连接,以将进程和连接进行关联。采用该方法能够动态跟踪TCP连接和进程,不仅跟踪效率高而且便于查看连接与进程的相关信息。
在TCP连接和进程中,如果一个进程拥有多个连接,该进程的标识(ID,Identity)为p,多个连接的ID分别是c1、c2、…、cN-1和cN。这种情况下,可以通过十字链表将进程p与连接c1、c2、…、cN-1和cN进行关联。在一个说明性实施例中,采用十字链表关联进程和连接的流程如图2所示。
步骤11,获取进程p的ID以及进程p所拥有的全部连接的ID,即c1、c2、…、cN-1、cN。
步骤12,创建一个行链表,逐一插入第一结点。该行链表具有N个第一结点,分别是node(i,1)、node(i,2)、…、node(i,N-1)、node(i,N)。每个第一结点处于一个列链表,共有N个列链表。每个第一结点的结构都包括行指示域、列指示域和向右指针、向下指针。
步骤13,在全部第一结点node(i,1)、node(i,2)、…、node(i,N-1)、node(i,N)的行指示域存储进程p的ID。
步骤14,将连接c1、c2、…、cN-1、cN的ID分别存在每个第一结点的列指示域,每个第一结点的列指示域存储一个连接ID。例如,将连接c1的ID存储在第一结点node(i,1)的列指示域,将将连接c2的ID存储在第一结点node(i,2)的列指示域,…,将连接cN-1的ID存储在第一结点node(i,N-1)的列指示域,将连接cN的ID存储在第一结点node(i,N)的列指示域。
在图2所示的可选的实施例中,步骤11、步骤12、步骤13和步骤14按顺序执行。在另一个可选的实施例中,可以先执行步骤11,再执行步骤12、然后同时执行步骤13和步骤14。即在插入全部第一结点node(i,1)、node(i,2)、…、node(i,N-1)、node(i,N)后,再对每个第一结点的行指示域和列指示域同时进行存储操作。
在另一个可选的实施例中,可以先执行步骤11,再同时执行步骤12、步骤13和步骤14。即在插入每个第一结点时完成对该结点行指示域和列指示域的存储操作。
在另一个可选的实施例中,可以同时执行步骤11、步骤12、步骤13和步骤14。即每获得一个连接的ID后,就插入一个第一结点并完成对该第一结点行指示域和列指示域的存储操作。
系统实际运行中,当进程p的子进程p1被动态创建时,由于文件描述符的继承,连接c1、c2、…、cn-1和cn会被子进程p1所共享。此时,可以采用十字链表结构将子进程p1与连接c1、c2、…、cN-1和cN进行关联。在一个说明性实施例中,采用十字链表关联子进程和连接的流程包括以下步骤。
步骤21,在N个列链表的每一列链表插入第二结点,创建包括N个第二结点的第二行链表。N个第二结点分别是node(i+1,1)、node(i+1,2)、…、node(i+1,N-1)、node(i+1,N)。每个第二结点的结构与每个第一结点的结构相同,都包括行指示域、列指示域和向右指针、向下指针。
其中,第一结点node(i,1)的向下指针指向第二结点node(i+1,1),第一结点node(i,2)的向下指针指向第二结点node(i+1,2),…,第一结点node(i,N-1)的向下指针指向第二结点node(i+1,N-1),第一结点node(i,N)的向下指针指向第二结点node(i+1,N)。
可以看出,第一结点node(i,1)和第二结点node(i+1,1)处于同一列链表,第一结点node(i,2)和第二结点node(i+1,2)处于同一列链表,…,第一结点node(i,N-1)和第二结点node(i+1,N-1)处于同一列链表,第一结点node(i,N)和第二结点node(i+1,N)处于同一列链表。
步骤22,在全部第二结点node(i+1,1)、node(i+1,2)、…、node(i+1,N-1)、node(i+1,N)的行指示域存储子进程p1的ID。
步骤23,将连接c1、c2、…、cN-1、cN的ID分别复制到第二结点node(i+1,1)、node(i+1,2)、…、node(i+1,N-1)、node(i+1,N)的列指示域。其中,将连接c1的ID复制到第二结点node(i+1,1)的列指示域,将连接c2的ID复制到第二结点node(i+1,2)的列指示域,…,将连接cN-1的ID复制到第二结点node(i+1,N-1)的列指示域,将连接cN的ID复制到第二结点node(i+1,N)的列指示域。
上述可选实施例中,步骤21、步骤22和步骤23按顺序执行。在另一些可选的实施例中,可以先执行步骤21,然后同时执行步骤22和步骤23。即在插入全部第二结点node(i+1,1)、node(i+1,2)、…、node(i+1,N-1)、node(i+1,N)后,再对每个第二结点的行指示域和列指示域同时进行复制存储操作。
在另一个可选实施例中,可以同时执行步骤21、步骤22和步骤23。即在插入每个第二结点时完成对该第二结点行指示域和列指示域的复制存储操作。
上述可选实施例中,每个结点的结构都包括向右指针和向下指针,构建的各行链表和列链表的结构为单向循环链表。在一些优选实施例中,也可以将各行链表和列链表构建为双向循环链表,此时每个结点除包括向右指针和向下指针外,还包括向左指针和向上指针。每个结点的向右指针和向左指针分别指向同一行链表的后一个结点和前一个结点,向下指针和向上指针分别指向同一列链表的下一个结点和上一个结点。
此外,为增加内核安全性,实现同步并发操作,可以先在某一行或某一列读写时,对该行链表或该列链表进行加锁操作,即为行锁或列锁
在一个可选实施例中,在创建子进程p1的行链表前,对进程p的行链表加锁,并在创建子进程p1的行链表后对进程p的行链表解锁。在另一些可选实施例中,在创建子进程p1的行链表的过程中,在每一列链表插入第二结点前对该第二结点所在的列链表加锁,插入第二结点后对该列链表解锁。同步并发操作是调用内核编程接口(KPI,KernelProgramming Interface)实现的,好处在于每行或每列都有各自的锁,锁的粒度就小,读不同行或不同列,只要没有交叉点,是可以同时读写的,因此提高了读写十字链表的性能。
图3示出了一个可选的具体的关联进程和连接的方法流程。
步骤301,加锁进程p(父进程)的行链表(连接链表)。
步骤302,从进程p的行链表取下一个第一结点。
步骤303,判断所取的第一结点是否为行链表的链表头,如果是则执行步骤312,否则执行步骤304。
步骤304,分配结点的存储空间。
步骤305,判断结点的存储空间分配是否成功,如果分配成功则执行步骤306,否则返回执行步骤302。
步骤306,获取第一结点所存储的连接ID。
步骤307,将子进程p1的ID保存在分配结点存储空间的行指示域,将从第一结点获取的连接ID复制到分配结点存储空间的列指示域。
步骤308,加锁第一结点和分配结点所处的列链表。
步骤309,将分配结点插入所述列链表的末尾。
步骤310,解锁所述列链表。
步骤311,将分配结点插入子进程p1的行链表的末尾,然后返回执行步骤302。
步骤312,解锁进程p的行链表。
本文还提出一种退出当前进程时的对应流程,在一个可选的实施例中,所述退出当前进程的方法包括:对当前进程的行链表加锁,在所述N个列链表的每一列链表删除相应结点,对当前进程的行链表解锁。
其中,一个可选的删除每一列链表上相应结点的过程包括:对待删除结点所在的列链表加锁,在该列链表删除该结点,解锁该列链表;在当前进程的行链表删除该结点;释放该结点的存储空间。
图4示出了一个可选的具体的进程退出方法流程。
步骤401,加锁当前进程的行链表(连接链表)。
步骤402,从当前进程的行链表取下一个结点。
步骤403,判断所取的结点是否为行链表的链表头,如果是则执行步骤410,否则执行步骤404。
步骤404,获取该结点所存储的连接ID。
步骤405,加锁该结点所处的列链表(进程链表)。
步骤406,从该列链表中删除该结点。
步骤407,解锁该列链表。
步骤408,在当前进程的行链表删除该结点。
步骤409,释放该结点,然后返回执行步骤402。
步骤410,解锁当前进程的行链表。
本文还提出一种产生新连接时,用于关联进程和连接的方法。在一个可选的实施例例中,所述方法包括:为某一进程产生的新连接分配包括行指示域和列指示域的链表结点;在所述链表结点的行指示域存储所述进程的ID,并将所述新连接的ID存储在所述链表结点的列指示域;将所述链表结点插入所述进程的行链表以及所述新连接所处的列链表。
一个可选的将链表结点插入行链表及列链表的流程包括:加锁所述行链表和列链表;在所述列链表插入所述链表结点,然后解锁所述列链表;在所述行链表插入所述链表结点,然后解锁所述行链表。
另一个可选的将链表结点插入行链表及列链表的流程包括:加锁所述行链表和列链表;在所述列链表和行链表插入所述链表结点;解锁所述列链表和行链表。
图5示出了一个可选的具体的连接产生方法流程。
步骤501,分配结点的存储空间。
步骤502,判断是否分配成功,如果是则继续执行步骤503,否则执行步骤510。
步骤503,将当前进程的ID保存在分配结点的行指示域,将新产生的连接的ID存储到分配结点的列指示域。
步骤504,加锁当前进程的行链表(连接链表)。
步骤505,加锁分配结点所处的列链表(进程链表)。
步骤506,将分配结点插入所述列链表的末尾。
步骤507,解锁所述列链表。
步骤508,将分配结点插入当前进程的行链表的末尾。
步骤509,解锁当前进程的行链表。
步骤510,返回错误信息,指示内存不够。
本文还提出一种销毁连接时的对应流程。
在一个可选实施例中,销毁某一进程的连接的流程包括:加锁所述进程的行链表和所述连接所处的列链表;从所述进程的行链表和所述连接所处的列链表删除保存有所述连接ID的链表结点;解锁所述进程的行链表和所述连接所处的列链表。
图6示出了一个可选的具体的销毁连接方法流程。
步骤601,加锁当前进程的行链表(连接链表)。
步骤602,加锁当前连接所处的列链表(进程链表)。
步骤603,从所述列链表取下一个结点。
步骤604,判断所取结点是否为链表头,如果是则执行步骤611,否则继续执行步骤605。
步骤605,判断所取结点的行指示域所存储的是否为当前进程的ID,如果是则继续执行步骤606,否则返回执行步骤603。
步骤606,从所述行链表和列链表中删除所取结点。
步骤607,解锁该列链表。
步骤608,解锁当前进程的行链表。
步骤609,判断该结点的存储空间是否为空,如果是则继续执行步骤610,否则,执行步骤611。
步骤610,释放该结点的存储空间,然后返回执行步骤402。
步骤611,将结点的存储空间设置为空,然后执行步骤608。
TCP进程和连接的动态跟踪过程主要包括4个方面:进程创建、进程退出、连接产生、连接销毁。通过拦截内核函数do_fork挂钩进程创建,拦截do_exit挂钩进程退出;在socket层通过拦截connect和accept挂钩连接产生,拦截release挂钩连接销毁。图3至图6为这4个方面对应的流程图,由于所有外层加锁隐含了禁止本地中断和内核抢占,因此内层加锁就不必禁止本地中断和内核抢占了。图7为通过十字链表关联进程和连接的示意图。
本文还公开一种用于关联进程和连接的装置。
在一个可选实施例中,所述用于关联进程和连接的装置如图8所示,包括第一单元01、第二单元02和第三单元03。
第一单元01用于获取第一进程的ID及与第一进程相关的N个连接的ID。第二单元02用于逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表。第三单元03用于在全部第一结点的行指示域存储所述第一进程的ID并在每个第一结点的列指示域存储一个连接ID。
在另一个可选实施例中,所述装置除包括第一单元01、第二单元02和第三单元03外,还包括第四单元和第五单元。第四单元用于在创建第一进程的子进程时在所述N个列链表的每一列链表插入第二结点。第五单元用于在全部第二结点的行指示域存储所述子进程的ID,并将每个第一结点存储的连接ID复制到与该第一结点处于同一列链表的第二结点的列指示域。
在另一个可选实施例中,所述装置除包括第一单元01、第二单元02、第三单元03外、第四单元和第五单元外,还包括第六单元和第七单元。
第六单元用于在第四单元创建第二行链表前对第一行链表加锁,在第四单元创建第二行链表后对第一行链表解锁。第七单元用于在第四单元在每一列链表插入第二结点前对该第二结点所在的列链表加锁,在第四单元插入第二结点后对该列链表解锁。
在另一个可选实施例中,所述装置除包括第一单元01、第二单元02、第三单元03外,还包括第八单元、第九单元和第十单元。
第八单元用于在退出当前进程时对当前进程的行链表加锁,第九单元用于在所述N个列链表的每一列链表删除相应结点,第十单元用于对当前进程的行链表解锁。其中,第九单元包括:
对待删除结点所在的列链表加锁的列链表加锁单元;
用于在该列链表删除该结点的第一删除单元;
用于在第一删除单元删除结点后解锁该列链表的列链表解锁单元;
用于在当前进程的行链表删除该结点的第二删除单元;
用于释放该结点存储空间的释放单元。
本文还公开另一种用于关联进程和连接的装置。
在一个可选实施例中,所述用于关联进程和连接的装置包括第十一单元、第十二单元和第十三单元。第十一单元用于为当前进程产生的新连接分配包括行指示域和列指示域的链表结点;第十二单元用于在所述链表结点的行指示域存储所述当前进程的ID,并将所述新连接的ID存储在所述链表结点的列指示域;第十三单元用于将所述链表结点插入所述当前进程的行链表以及所述新连接所处的列链表。
在一个可选实施例中,第十三单元包括用于加锁行链表和列链表的第一加锁单元,在列链表插入链表结点然后解锁列链表的列链表插入单元,和,在行链表插入链表结点然后解锁行链表的行链表插入单元。
在另一个可选实施例中,第十三单元包括用于加锁行链表和列链表的第一加锁单元,在列链表和行链表插入链表结点的结点插入单元,和,解锁列链表和行链表的第一解锁单元。
在另一个可选实施例中,所述装置除包括第十一单元、第十二单元和第十三单元外,还包括第十四单元、第十五单元和第十六单元。
第十四单元用于在销毁当前进程的连接时加锁当前进程的行链表和连接所处的列链表。第十五单元用于从当前进程的行链表和连接所处的列链表删除保存有连接ID的链表结点。第十六单元用于解锁当前进程的行链表和连接所处的列链表。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后,还需要说明的是,在本文中,诸如第一、第二和第三之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者装置中还存在另外的相同要素。本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的方法和装置而言,由于其与实施例公开的方法部分相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种用于关联进程和连接的方法,其特征在于,包括:
获取第一进程的标识ID及与所述第一进程相关的N个连接的ID;
逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表;其中,各第一结点分别处于一个列链表,每个第一结点都包括行指示域和列指示域;
在全部第一结点的行指示域存储所述第一进程的ID,并在每个第一结点的列指示域存储一个连接ID;
其中,N为与所述第一进程相关的连接的数量;
当创建所述第一进程的子进程时,还包括:
在所述N个列链表的每一列链表插入第二结点,创建包括N个第二结点的第二行链表;其中,每个第二结点都包括行指示域和列指示域;
在全部第二结点的行指示域存储所述子进程的ID,并将每个第一结点存储的连接ID复制到与该第一结点处于同一列链表的第二结点的列指示域。
2.如权利要求1所述的方法,其特征在于,所述第一行链表、第二行链表和所述N个列链表为双向循环列表。
3.如权利要求1所述的方法,其特征在于,还包括:
创建所述第二行链表前对所述第一行链表加锁,创建所述第二行链表后对所述第一行链表解锁;
在每一列链表插入第二结点前对该第二结点所在的列链表加锁,插入第二结点后对该列链表解锁。
4.如权利要求1所述的方法,其特征在于,当退出当前进程时,还包括:
对当前进程的行链表加锁;
在所述N个列链表的每一列链表删除相应结点;
对当前进程的行链表解锁。
5.如权利要求4所述的方法,其特征在于,所述在所述N个列链表的每一列链表删除相应结点包括:
对待删除结点所在的列链表加锁,在该列链表删除该结点,解锁该列链表;
在当前进程的行链表删除该结点;
释放该结点的存储空间。
6.一种用于关联进程和连接的装置,其特征在于,包括:
第一单元,用于获取第一进程的标识ID及与所述第一进程相关的N个连接的ID;
第二单元,用于逐一插入第一结点,创建包括N个第一结点的第一行链表和N个列链表;其中,各第一结点分别处于一个列链表,每个第一结点都包括行指示域和列指示域;
第三单元,用于在全部第一结点的行指示域存储所述第一进程的ID,并在每个第一结点的列指示域存储一个连接ID;
其中,N为与所述第一进程相关的连接的数量;
第四单元,用于在创建所述第一进程的子进程时在所述N个列链表的每一列链表插入第二结点,创建包括N个第二结点的第二行链表;其中,每个第二结点都包括行指示域和列指示域;和,
第五单元,用于在全部第二结点的行指示域存储所述子进程的ID,并将每个第一结点存储的连接ID复制到与该第一结点处于同一列链表的第二结点的列指示域。
7.如权利要求6所述的装置,其特征在于,所述第一行链表、第二行链表和所述N个列链表为双向循环列表。
8.如权利要求6所述的装置,其特征在于,还包括:
第六单元,用于在第四单元创建所述第二行链表前对所述第一行链表加锁,在所述第四单元创建所述第二行链表后对所述第一行链表解锁;和,
第七单元,用于在第四单元在每一列链表插入第二结点前对该第二结点所在的列链表加锁,在第四单元插入第二结点后对该列链表解锁。
9.如权利要求6所述的装置,其特征在于,还包括:
第八单元,用于在退出当前进程时对当前进程的行链表加锁;
第九单元,用于在所述N个列链表的每一列链表删除相应结点;和,
第十单元,用于对当前进程的行链表解锁。
10.如权利要求9所述的装置,其特征在于,所述第九单元包括:列链表加锁单元,用于对待删除结点所在的列链表加锁;
第一删除单元,用于在该列链表删除该结点;
列链表解锁单元,用于在第一删除单元删除结点后解锁该列链表;
第二删除单元,用于在当前进程的行链表删除该结点;和,
释放单元,用于释放该结点的存储空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610404282.0A CN106095908B (zh) | 2016-06-08 | 2016-06-08 | 用于关联进程和连接的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610404282.0A CN106095908B (zh) | 2016-06-08 | 2016-06-08 | 用于关联进程和连接的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106095908A CN106095908A (zh) | 2016-11-09 |
CN106095908B true CN106095908B (zh) | 2019-07-05 |
Family
ID=57227577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610404282.0A Active CN106095908B (zh) | 2016-06-08 | 2016-06-08 | 用于关联进程和连接的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106095908B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615131A (zh) * | 2008-06-27 | 2009-12-30 | 中国电信股份有限公司 | 定时任务信息的存储方法和装置以及定时任务的调度方法 |
CN101841557A (zh) * | 2010-03-02 | 2010-09-22 | 中国科学院计算技术研究所 | 一种基于十字链表的p2p流媒体下载方法和系统 |
US8290935B1 (en) * | 2004-05-27 | 2012-10-16 | Teradata Us, Inc. | Method and system for optimizing database system queries |
CN102932485A (zh) * | 2012-11-20 | 2013-02-13 | 无锡城市云计算中心有限公司 | 服务器连接状态的查询方法和装置 |
CN102999434A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN103414586A (zh) * | 2013-08-05 | 2013-11-27 | 浙江工商大学 | 一种全新的网络视图生成与更新方法 |
CN103544203A (zh) * | 2013-07-11 | 2014-01-29 | 盛科网络(苏州)有限公司 | 基于链表的索引分配方法和装置 |
US8838817B1 (en) * | 2007-11-07 | 2014-09-16 | Netapp, Inc. | Application-controlled network packet classification |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060153215A1 (en) * | 2004-12-20 | 2006-07-13 | Linden Cornett | Connection context prefetch |
-
2016
- 2016-06-08 CN CN201610404282.0A patent/CN106095908B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8290935B1 (en) * | 2004-05-27 | 2012-10-16 | Teradata Us, Inc. | Method and system for optimizing database system queries |
US8838817B1 (en) * | 2007-11-07 | 2014-09-16 | Netapp, Inc. | Application-controlled network packet classification |
CN101615131A (zh) * | 2008-06-27 | 2009-12-30 | 中国电信股份有限公司 | 定时任务信息的存储方法和装置以及定时任务的调度方法 |
CN101841557A (zh) * | 2010-03-02 | 2010-09-22 | 中国科学院计算技术研究所 | 一种基于十字链表的p2p流媒体下载方法和系统 |
CN102999434A (zh) * | 2011-09-15 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种内存管理方法及装置 |
CN102932485A (zh) * | 2012-11-20 | 2013-02-13 | 无锡城市云计算中心有限公司 | 服务器连接状态的查询方法和装置 |
CN103544203A (zh) * | 2013-07-11 | 2014-01-29 | 盛科网络(苏州)有限公司 | 基于链表的索引分配方法和装置 |
CN103414586A (zh) * | 2013-08-05 | 2013-11-27 | 浙江工商大学 | 一种全新的网络视图生成与更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106095908A (zh) | 2016-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Afek et al. | The local detection paradigm and its applications to self-stabilization | |
CN106708975B (zh) | 商品库存信息的处理方法及系统 | |
de Queiroz et al. | Multitasking supervisory control of discrete-event systems | |
CN107332701A (zh) | 管理节点的方法和系统 | |
CN103765381B (zh) | 对b+树的并行操作 | |
Overkamp | Supervisory control using failure semantics and partial specifications | |
CN107273195A (zh) | 一种大数据的批处理方法、装置及计算机系统 | |
CN103559032A (zh) | 嵌入式系统对象管理的装置及方法 | |
CN111932260B (zh) | 一种智能合约版本的管理方法、设备及可读存储介质 | |
CN107070645A (zh) | 比较数据表的数据的方法和系统 | |
Chen et al. | Analyzing dynamic voting using petri nets | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储系统 | |
CN105703941B (zh) | 配置事务的处理方法及装置 | |
CN106095908B (zh) | 用于关联进程和连接的方法和装置 | |
CN109408477A (zh) | 一种设置集群文件锁的方法、系统及相关组件 | |
CN114116197A (zh) | 可编程逻辑器件及其内存管理系统 | |
Flener et al. | Symmetry in matrix models | |
CN112799959A (zh) | 接口测试方法、装置、存储介质和电子装置 | |
CN107391028A (zh) | 一种虚拟卷权限的控制方法及装置 | |
US20130013610A1 (en) | Allocating and managing random identifiers using a shared index set across products | |
CN107273446A (zh) | 分布式数据库的数据管理装置 | |
CN107291371B (zh) | 一种读写锁的实现方法及装置 | |
CN108829709A (zh) | 分布式数据库管理方法、装置、存储介质和处理器 | |
CN106469042B (zh) | 伪随机数的生成方法和装置 | |
CN111400269B (zh) | 一种ipfs文件处理方法、节点、介质和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100041, room 2, building 3, building 30, Xing Xing street, Shijingshan District, Beijing, Patentee after: Beijing Falcon Safety Technology Co., Ltd Address before: 100041 Beijing city Shijingshan District Street Hing 30 Hospital No. 3 Building 2 layer A-0003 Patentee before: BEIJING KINGSOFT SECURITY MANAGEMENT SYSTEM TECHNOLOGY Co.,Ltd. |