一种应用于无线通信系统仿真的调度方法及系统技术方案

技术编号:10217533 阅读:151 留言:0更新日期:2014-07-16 15:28
本发明专利技术公开了一种应用于无线通信系统仿真的调度方法及系统,包括在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出事件的事件类型的掩码置1,直至接收到阻塞访问操作指令;从出队桶的子链表的头部取出事件执行,执行完后,先发出阻塞访问操作指令,再将执行完事件的事件类型的掩码置0,最后发出允许访问操作指令。本发明专利技术在从入队桶中取出事件至出队桶中时,保证出对桶中对应同一事件类型只有一件事件,因此,本发明专利技术可在多网多信道共存的情况下保证事件的运行仍是串行结构,进而适用于多网多信道共存的无线通信系统仿真。

【技术实现步骤摘要】
一种应用于无线通信系统仿真的调度方法及系统
本专利技术涉及无线通信系统仿真领域,尤其涉及一种应用于无线通信系统仿真的调度方法及系统。
技术介绍
无线通信系统仿真调度中的离散事件驱动技术目前被广泛应用于网络仿真中对复杂通信系统的模拟,在通信场景的模拟中,大量节点之间的通信交互通过执行带有虚拟时间戳的离散事件来交互。仿真系统将等待处理的事件维护为一个优先队列,按照虚拟时间戳的先后顺序依次处理事件,以此实现虚拟时钟的功能。在已有的成熟网络仿真系统中(例如NS2),实现调度器优先队列的方法是基于未经优化的日历队列(CQ),CQ是一种基于哈希和链表数组的数据结构,CQ的优点是事件插入(enqueue)操作和事件取出(dequeue)操作为O(1)复杂度,相比链表的O(n)复杂度和最小堆(min_heap)的O(logn)复杂度,在大型网络仿真应用中,CQ有着明显的时间复杂度优势,因此CQ被设置为主流网络仿真系统如NS2的默认事件调度器。CQ的实现机理为:CQ维护了一个桶(bucket)的数组,一个桶对应一个子链表,每个桶对应的时间长度对应日历的“天”,整个数组对应的时间长度对应日历的“年”,即所有桶的时间长度加起来即等于数组的时间长度,每个桶持有存储对应“天”内发生事件的子链表的头部指针和长度,其中,于不同年份但同一天发生的事件存储于同一桶对应的子链表中。在此,所谓的“天”和“年”都是一个相对时间概念,只是与日历相对应说明各桶之间的关系和桶与整个数组之间的关系,并不是真正意义上的“天”和“年”,其中的“年”具体指一个时间段,而其中的“天”具体指将该时间段平均分成多份的时间单位。CQ在执行事件插入操作时,需要通过哈希算法查找当前插入事件所对应的桶的位置,然后再根据当前插入事件的具体发生时间,遍历子链表找到当前插入事件应该插入的位置;CQ在执行事件取出操作时,需要从CQ所维护的当前处理事件所在的桶,查找子链表中属于当前年份的第一个事件,取出执行,如果当前处理事件所在的桶内没有当前年份的事件,则需要依次遍历所有桶查找当前年份的事件。由此可见,CQ调度器的插入、取出、执行、重构等运作机理是串行结构,但在现代大型网络仿真中,由于无线传感网规模庞大,网络拓扑复杂,多网多信道共存使得网络拓扑结构复杂,等待处理的累计仿真事件数量非常多,而这种基于单流水线串行执行的传统仿真事件调度器不能很好的利用多核心处理器性能,同时耗费大量事件在仿真事件调度器的重构上,影响了执行的效率。因而优化大规模复杂拓扑条件下的仿真事件调度方法显得非常有意义。
技术实现思路
本专利技术提供了一种应用于无线通信系统仿真的调度方法及系统,以适应多网多信道共存的无线通信系统仿真。为实现上述目的,本专利技术采用的技术方案为:一种应用于无线通信系统仿真的调度方法,包括:在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;从所述出队桶的子链表的头部取出事件执行;在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;在所述事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入队桶;在最后一个入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向第一个入队桶,并将下一年份作为所述当前访问年份。优选的是,所述方法还包括:在将入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止向对应入队桶的子链表中插入新的事件;在向入队桶的子链表中插入新的事件时,禁止将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。优选的是,所述在将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部包括:赋值插入基准指针等于所述出队桶的尾节点指针;获取所述插入基准指针指向的节点的指针域;判断所述插入基准指针指向的节点的指针域是否指向空;如是,则将属于掩码为0的事件类型的当前访问年份的事件插入至所述插入基准指针指向的节点后成为尾节点,并使所述插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,及更新所述尾节点指针;如否,则重新赋值插入基准指针等于所述出队桶的尾节点指针。优选的是,所述从所述出队桶的子链表的头部取出事件执行包括:赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,其中,所述虚拟头节点的指针域指向头结点;获取所述虚拟头节点的指针域;判断所述取出基准指针是否等于获取的虚拟头节点的指针域;如是,则取出所述取出基准指针指向的节点中的事件执行,并更新所述虚拟头节点的指针域;如否,则重新赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域。优选的是,所述方法还包括:获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量;获取日历队列的入队桶个数,将所述入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将所述入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值;在所述当前等待事件的数量大于所述扩大阈值或者小于所述缩小阈值时,根据所述日历队列对应的排队系统类型计算所述日历队列的平均队列长度,并将所述入队桶的数量调整为等于所述平均队列长度除以所述入队桶容量的期望值。优选的是,所述方法还包括:所述平均队列长度为在事件到达日历队列及从入队桶中取出事件至出队桶中处理趋向平衡时的稳态下的平均队列长度。优选的是,所述方法还包括:所述日历队列形成为事件到达日历队列服从普阿松过程,从入队桶中取出事件至出队桶中处理服从负指数分布,服务台数为可并列从所述出队桶的子链表的头部取出事件执行的最大线程数量,所述日历队列的容量受限的排队系统。优选的是,所述获取所述日历队列的平均队列长度包括:获取当前时刻单位时间内到达所述日历队列的事件数量,作为当前到达率;获取当前时刻单位时间内从所述入队桶中取出事件至出队桶中处理的数量,作为当前处理率;根据所述当前到达率、所述当前处理率和所述服务台数计算所述平均队列长度。优选的是,所述方法还包括:以设定的时间间隔获取所述当前等待事件的数量。为实现上述目的,本专利技术采用的技术方案为:一种应用于无线通信系统仿真的调度系统,包括:提取模块,用于在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;执行模块,用于从所述出队桶的子链表的头部取出事件执行;及用于在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;以及,定位模块,用于在所述事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入本文档来自技高网
...
一种应用于无线通信系统仿真的调度方法及系统

【技术保护点】
一种应用于无线通信系统仿真的调度方法,其特征在于,包括:在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;从所述出队桶的子链表的头部取出事件执行;在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;在所述事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入队桶;在最后一个入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向第一个入队桶,并将下一年份作为所述当前访问年份。

【技术特征摘要】
1.一种应用于无线通信系统仿真的调度方法,其特征在于,包括:在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;从所述出队桶的子链表的头部取出事件执行;在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;在所述事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入队桶;在最后一个入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向第一个入队桶,并将下一年份作为所述当前访问年份。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在将入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止向对应入队桶的子链表中插入新的事件;在向入队桶的子链表中插入新的事件时,禁止将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。3.根据权利要求1所述的方法,其特征在于,所述在将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部包括:赋值插入基准指针等于所述出队桶的尾节点指针;获取所述插入基准指针指向的节点的指针域;判断所述插入基准指针指向的节点的指针域是否指向空;如是,则将属于掩码为0的事件类型的当前访问年份的事件插入至所述插入基准指针指向的节点后成为尾节点,并使所述插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,及更新所述尾节点指针;如否,则重新赋值插入基准指针等于所述出队桶的尾节点指针。4.根据权利要求1、2或3所述的方法,其特征在于,所述从所述出队桶的子链表的头部取出事件执行包括:赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,其中,所述虚拟头节点的指针域指向头结点;获取所述虚拟头节点的指针域;判断所述取出基准指针是否等于获取的虚拟头节点的指针域;如是,则取出所述取出基准指针指向的节点中的事件执行,并更新所述虚拟头节点的指针域;如否,则重新赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量;获取日历队列的入队桶个数,将所述入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将所述入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值;在所述当前等待事件的数量大于所述扩大阈值或者小于所述缩小阈值时,根据所述日历队列对应的排队系统类型计算所述日历队列的平均队列长度,并将所述入队桶的数量调整为等于所述平均队列长度除以所述入队桶容量的期望值。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:所述平均队列长度为在事件到达日历队列及从入队桶中取出事件至出队桶中处理趋向平衡时的稳态下的平均队列长度。7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:所述日历队列形成为事件到达日历队列服从普阿松过程,从入队桶中取出事件至出队桶中处理服从负指数分布,服务台数为可并列从所述出队桶的子链表的头部取出事件执行的最大线程数量,所述日历队列的容量受限的排队系统。8.根据权利要求7所述的方法,其特征在于,所述获取所述日历队列的平均队列长度包括:获取当前时刻单位时间内到达所述日历队列的事件数量,作为当前到达率;获取当前时刻单位时间内从所述入队桶中取出事件至出队桶中处...

【专利技术属性】
技术研发人员:陈岚刘珏辰吕超
申请(专利权)人:中国科学院微电子研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1