本发明专利技术涉及一种队列管理方法,特别涉及具有高可靠性可修复的队列管理方法,属于分类存储和检索领域。本发明专利技术在单链表队列结点node的基础上,设置聚合共享区(bank)。每个bank包括m个node,链表操作时以bank为单位进行申请和删除,bank内m个node的下一结点指针NP均指向同一个bank,每个NP增加CRC进行检错,确保使用过程中NP的正确性。将空闲队列设置为循环结构,即尾node的NP指向头node,在正常出队/入队操作之外,周期性的将头node和尾node后移,移动过程中,对bank内的node进行检查和修复,实现了队列管理的低资源高可靠性要求,既可用于空间复杂电磁环境中,也可以用于高可靠性的地面设备中。设备中。设备中。
【技术实现步骤摘要】
一种可自修复的多结点聚合共享队列管理方法
[0001]本专利技术涉及一种队列管理方法,特别涉及具有高可靠性可修复的队列管理方法,属于分类存储和检索领域。
技术介绍
[0002]在多用户自适应传输场景下,星地传输系统会根据地面站的接收能力、传输链路的信号质量等参数自动选择适合的编码调制方式进行传输,同时,结合用户优先级、帧类型等权重对占用的时隙长度进行控制,实现对不同传输链路状态,不同用户类型的最佳传输,以达到提高频谱利用率和用户容量的目的。
[0003]多用户自适应传输系统与以往通过遥控指令切换编码调制模式的非自适应传输系统相比,最大差异是帧调度的颗粒度更细。非自适应传输系统下,系统只需要将帧按先后顺序进行存储,随后按照当前模式依次输出,星载系统不需要考虑多用户间的数据帧差异;多用户自适应传输系统中,系统需要结合目的地址、优先级、时隙位置、链路状态等多个参数维度对数据帧进行动态调度管理,帧与帧的差异需要通过不同的输出队列来体现,同时每个输出队列的长度会根据应用场景和用户数目而长短不一。对应这种应用需求,常规静态划分存储空间的方法会导致存储空间利用率很低,特别是数据帧类型增多时,每种帧的存储空间规划过小,无法满足高速用户使用需求。建立动态链表是一种好的解决方式,动态链表优点是管理开销小,只需要管理表头和尾的结点;输出队列长度按需增减,实现复杂度不会随输出队列长度变化;存储空间按需划分,满足多用户传输需求。
[0004]在现有技术的实现过程中,单链表队列缓存结构实现简单,但节点之间缺少保护机制,链表内的结点通过指针链接,指针一旦错误,指针指向的后续结点就会断开或导入歧途,链表后续位置存储的帧全部丢失,无法满足空间复杂电磁环境下的高可靠性要求。
技术实现思路
[0005]本专利技术解决的技术问题是:克服现有技术的不足,提供了一种可自修复的多结点聚合共享队列管理方法,实现了队列管理的低资源高可靠性要求,既可用于空间复杂电磁环境中,也可以用于高可靠性的地面设备中。
[0006]本专利技术的技术解决方案是:一种可自修复的多结点聚合共享队列管理方法,包括:
[0007]将若干链表节点组成聚合区,将若干聚合区组成队列,并将队列的信息存入队列信息单元;所述队列携带的信息包括头部聚合区和尾部聚合区的信息以及其所有链表节点的总数,队列中的链表节点根据链表节点自身携带的信息进行关联;
[0008]根据接收的业务数据帧的特征信息,从空闲队列中申请聚合区,产生虚拟输出队列,同时更新队列信息单元;业务数据帧退出虚拟输出队列后,对应聚合区释放,重新编入空闲队列,同时更新队列信息单元;
[0009]以虚拟输出队列进行入队或出队操作。
[0010]进一步地,同一特征的业务数据帧被编入一个虚拟输出队列。
[0011]进一步地,所述聚合区包括相邻的若干个链表节点;初始化时,所有链表节点的逻辑地址单元的节点指针为所在聚合区的编号+1,同一聚合区内链表节点的节点指针相同,实现所有链表节点的串联。
[0012]进一步地,所述以虚拟输出队列进行入队操作包括如下步骤:
[0013]有业务数据帧到达时,申请虚拟输出队列入队;读取队列信息单元中虚拟输出队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,则获取虚拟输出队列信息;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则将新到达的业务数据帧作为虚拟输出队列的第一个节点重新建立队列;
[0014]若虚拟输出队列的队列长度Lq未达到上限,检查队列长度Lq是否被m整除,然后Lq+1;如果不能整除,则将业务数据帧信息按照余数+1写入队尾聚合区对应链表节点的逻辑地址单元;如果能够整除,则从队列信息单元空闲队列中申请新的聚合区,更新逻辑地址单元虚拟输出队列队尾聚合区的所有链表节点指针NP指向新申请聚合区,并用新申请聚合区作为新的队尾聚合区;随后,更新队列信息单元的虚拟输出队列,将新的队列信息写入到虚拟输出队列聚合区的所有链表节点内;
[0015]如果申请聚合区,读取队列信息单元中空闲队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,则获取空闲队列信息;如果CRC校验错误,则选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则重新初始化队列信息单元;同时,用逻辑地址单元空闲队列当前队头聚合区链表节点指针NP作为新的队头聚合区;随后,更新队列信息单元空闲队列,将新的队列信息写入到空闲队列聚合区的所有链表节点内。
[0016]进一步地,所述以虚拟输出队列进行出队操作包括如下步骤:
[0017]读取队列信息单元中虚拟输出队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,获取虚拟输出队列信息;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则将虚拟输出队列标记为空,读取停止;
[0018]若虚拟输出队列的队列长度Lq非0,则Lq
‑
1;同时,从逻辑地址单元虚拟输出队列队头聚合区对应链表节点按顺序读取非空闲节点的业务数据帧信息,并将该节点置为空闲;如果聚合区内的节点均为空闲则释放聚合区,并用被释放聚合区链表节点指针NP作为新的队头聚合区;随后,更新队列信息单元的虚拟输出队列,将新的队列信息写入到虚拟输出队列聚合区的所有链表节点内;
[0019]如果释放聚合区,读取队列信息单元空闲队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,则获取空闲队列信息;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则重新初始化队列信息单元;更新逻辑地址单元空闲队列队尾聚合区的所有链表节点指针NP到被释放聚合区,并用被释放聚合区作为新的队尾聚合区;随后,更新队列信息单元空闲队列,将新的队列信息写入到空闲队列聚合区的所有链表节点内。
[0020]进一步地,当业务数据帧到达频率低于预设值时,对空闲队列进行修复,防止空闲队列长时间不更新。
[0021]进一步地,所述对空闲队列进行修复包括如下步骤:
[0022]读取队列信息单元空闲队列聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,获得空闲队列队头和队尾聚合区地址;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则重新初始化队列信息单元;
[0023]在逻辑地址单元中,依次读取空闲队列队头聚合区的每个链表节点,并进行CRC校验;如果CRC校验正确,获得聚合区链表节点指针NP;如果CRC校验错误,则用CRC校验正确的链表节点指针NP进行更新,实现修复;按照同样方式,检查和修复空闲队列队尾聚合区的每个链表节点;
[0024]更新空闲队列信息。空闲队列是环链表,即队尾聚合区链表节点指针NP指向队头聚合区;更新空闲队列信息过程中,空闲队本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种可自修复的多结点聚合共享队列管理方法,其特征在于,包括:将若干链表节点组成聚合区,将若干聚合区组成队列,并将队列的信息存入队列信息单元;所述队列携带的信息包括头部聚合区和尾部聚合区的信息以及其所有链表节点的总数,队列中的链表节点根据链表节点自身携带的信息进行关联;根据接收的业务数据帧的特征信息,从空闲队列中申请聚合区,产生虚拟输出队列,同时更新队列信息单元;业务数据帧退出虚拟输出队列后,对应聚合区释放,重新编入空闲队列,同时更新队列信息单元;以虚拟输出队列进行入队或出队操作。2.根据权利要求1所述的一种可自修复的多结点聚合共享队列管理方法,其特征在于:同一特征的业务数据帧被编入一个虚拟输出队列。3.根据权利要求1所述的一种可自修复的多结点聚合共享队列管理方法,其特征在于:所述聚合区包括相邻的若干个链表节点;初始化时,所有链表节点的逻辑地址单元的节点指针为所在聚合区的编号+1,同一聚合区内链表节点的节点指针相同,实现所有链表节点的串联。4.根据权利要求1所述的一种可自修复的多结点聚合共享队列管理方法,其特征在于,所述以虚拟输出队列进行入队操作包括如下步骤:有业务数据帧到达时,申请虚拟输出队列入队;读取队列信息单元中虚拟输出队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,则获取虚拟输出队列信息;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则将新到达的业务数据帧作为虚拟输出队列的第一个节点重新建立队列;若虚拟输出队列的队列长度Lq未达到上限,检查队列长度Lq是否被m整除,然后Lq+1;如果不能整除,则将业务数据帧信息按照余数+1写入队尾聚合区对应链表节点的逻辑地址单元;如果能够整除,则从队列信息单元空闲队列中申请新的聚合区,更新逻辑地址单元虚拟输出队列队尾聚合区的所有链表节点指针NP指向新申请聚合区,并用新申请聚合区作为新的队尾聚合区;随后,更新队列信息单元的虚拟输出队列,将新的队列信息写入到虚拟输出队列聚合区的所有链表节点内;如果申请聚合区,读取队列信息单元中空闲队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,则获取空闲队列信息;如果CRC校验错误,则选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的CRC校验均错误,则重新初始化队列信息单元;同时,用逻辑地址单元空闲队列当前队头聚合区链表节点指针NP作为新的队头聚合区;随后,更新队列信息单元空闲队列,将新的队列信息写入到空闲队列聚合区的所有链表节点内。5.根据权利要求1所述的一种可自修复的多结点聚合共享队列管理方法,其特征在于,所述以虚拟输出队列进行出队操作包括如下步骤:读取队列信息单元中虚拟输出队列对应聚合区的某个链表节点,并进行CRC校验;如果CRC校验正确,获取虚拟输出队列信息;如果CRC校验错误,选取聚合区内的其他链表节点直到获得CRC正确为止;若所有链表节点的C...
【专利技术属性】
技术研发人员:杨磊,龚险峰,王战强,李文琛,王玉玲,张昊亮,
申请(专利权)人:西安空间无线电技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。