发明名称 Unix环境下进程间大量数据传输的方法
摘要 一种Unix环境下进程间大量数据传输的方法,是基于Unix IPC本身的共享内存机制提供了在进程间共享数据的方法,步骤是,采用两种不同的内存布局,即在共享内存的基础上采用通道和在线队列两种结构来存取数据,用于在进程间传递大量数据。本方案满足了实时计费系统中进程间数据传输的实时性、可靠性要求,可以在不同进程间快速传递大量不同种类的数据记录,即使进程崩溃也不会丢失数据。
申请公布号 CN101739301B 申请公布日期 2013.03.20
申请号 CN200910232393.8 申请日期 2009.12.09
申请人 南京联创科技集团股份有限公司 发明人 单志强;赖思明;夏琰;李华;梁斌;张有根;刘国祥
分类号 G06F9/54(2006.01)I 主分类号 G06F9/54(2006.01)I
代理机构 南京天翼专利代理有限责任公司 32112 代理人 朱戈胜
主权项 一种Unix环境下进程间大量数据传输的方法,是基于Unix IPC本身的共享内存机制提供了在进程间共享数据的方法,其特征步骤是,采用两种不同的内存布局,即在共享内存的基础上采用通道和在线队列两种结构来存取数据,用于在进程间传递大量数据;所述通道的结构和内存布局如下:通道是一种先进先出的队列,整块共享内存被分成头部和m个数据块;头部保存了队列的重要信息:数据块数、每块的记录数、记录的大小;每个数据块由头记录、尾记录和数据队列组成;头记录和尾记录分别记录了队列的头部和尾部在数据队列中的位置;在存储时,总是写入尾记录所指向的位置,并将尾记录+1;在取出时,总是从头记录所指向的位置读取,并将头记录‑1;头尾记录在到达数据队列边界的时候向另一端滑动;通道的每个数据块实现了一个先进先出的队列,可以向一个方向传递数据,每n个数据块组成了一个n端口的通道,可以向n个方向传递数据,其中n≥2;所述在线队列的结构和内存布局如下:在线队列是一种按记录关键字排序的队列,用于保存可以按关键字区别的记录,可以进行全队列搜索的;在线队列按记录关键字的大小排序,使用二分法查找记录;整块共享内存被分成头部和k个数据块;头部保存了队列的重要信息:数据块数、每块的记录数、记录的大小;在线队列的每个数据块由数据队列,已使用索引队列,未使用索引队列组成;数据队列中存放实际的数据,已使用索引队列,未使用索引队列只记录数据队列的位置;所述已使用索引中记录的是队列中已经使用的记录的位置,索引本身是按照实际数据的大小排序的,所述未使用的索引记录了数据队列中所有空的位置,在插入数据时直接在索引中找第一个空闲位置即可;由于在线队列需要排序,在插入和删除数据时,数据本身在队列中存放是不排序的,而是通过所述已使用索引来记录数据的排列顺序;在插入和删除记录引起排序操作时,只需要移动索引中的记录即可;索引只记录了数据的位置。
地址 210013 江苏省南京市定淮门12号16楼