【技术实现步骤摘要】
一种应用于无线通信系统仿真的调度方法及系统
本专利技术涉及无线通信系统仿真领域,尤其涉及一种应用于无线通信系统仿真的调度方法及系统。
技术介绍
无线通信系统仿真调度中的离散事件驱动技术目前被广泛应用于网络仿真中对复杂通信系统的模拟,在通信场景的模拟中,大量节点之间的通信交互通过执行带有虚拟时间戳的离散事件来交互。仿真系统将等待处理的事件维护为一个优先队列,按照虚拟时间戳的先后顺序依次处理事件,以此实现虚拟时钟的功能。在已有的成熟网络仿真系统中(例如NS2),实现调度器优先队列的方法是基于未经优化的日历队列(CQ),CQ是一种基于哈希和链表数组的数据结构,CQ的优点是事件插入(enqueue)操作和事件取出(dequeue)操作为O(1)复杂度,相比链表的O(n)复杂度和最小堆(min_heap)的O(logn)复杂度,在大型网络仿真应用中,CQ有着明显的时间复杂度优势,因此CQ被设置为主流网络仿真系统如NS2的默认事件调度器。CQ的实现机理为:CQ维护了一个桶(bucket)的数组,一个桶对应一个子链表,每个桶对应的时间长度对应日历的“天”,整个数组对应的时间长度对应日历的“年”,即所有桶的时间长度加起来即等于数组的时间长度,每个桶持有存储对应“天”内发生事件的子链表的头部指针和长度,其中,于不同年份但同一天发生的事件存储于同一桶对应的子链表中。在此,所谓的“天”和“年”都是一个相对时间概念,只是与日历相对应说明各桶之间的关系和桶与整个数组之间的关系,并不是真正意义上的“天”和“年”,其中的“年”具体指一个时间段,而其中的“天”具体指将该时间段平均分成多份 ...
【技术保护点】
一种应用于无线通信系统仿真的调度方法,其特征在于,包括:在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。