CN103929769B - 一种应用于无线通信系统仿真的调度方法及系统 - Google Patents

一种应用于无线通信系统仿真的调度方法及系统 Download PDF

Info

Publication number
CN103929769B
CN103929769B CN201410184653.XA CN201410184653A CN103929769B CN 103929769 B CN103929769 B CN 103929769B CN 201410184653 A CN201410184653 A CN 201410184653A CN 103929769 B CN103929769 B CN 103929769B
Authority
CN
China
Prior art keywords
team
event
bucket
pointer
joining
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
Application number
CN201410184653.XA
Other languages
English (en)
Other versions
CN103929769A (zh
Inventor
陈岚
刘珏辰
吕超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Microelectronics of CAS
Original Assignee
Institute of Microelectronics of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Microelectronics of CAS filed Critical Institute of Microelectronics of CAS
Priority to CN201410184653.XA priority Critical patent/CN103929769B/zh
Publication of CN103929769A publication Critical patent/CN103929769A/zh
Application granted granted Critical
Publication of CN103929769B publication Critical patent/CN103929769B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

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

Description

一种应用于无线通信系统仿真的调度方法及系统
技术领域
本发明涉及无线通信系统仿真领域,尤其涉及一种应用于无线通信系统仿真的调度方法及系统。
背景技术
无线通信系统仿真调度中的离散事件驱动技术目前被广泛应用于网络仿真中对复杂通信系统的模拟,在通信场景的模拟中,大量节点之间的通信交互通过执行带有虚拟时间戳的离散事件来交互。仿真系统将等待处理的事件维护为一个优先队列,按照虚拟时间戳的先后顺序依次处理事件,以此实现虚拟时钟的功能。
在已有的成熟网络仿真系统中(例如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的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止所述执行模块向对应入队桶的子链表中插入新的事件;所述执行模块还用于在向入队桶的子链表中插入新的事件时,禁止所述提取模块将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。
优选的是,所述提取模块包括:
提取赋值单元,用于赋值插入基准指针等于所述出队桶的尾节点指针,及用于在所述插入基准指针指向的节点的指针域未指向空时重新赋值插入基准指针等于所述出队桶的尾节点指针;
提取指针获取单元,用于获取所述插入基准指针指向的节点的指针域;
提取判断单元,用于判断所述插入基准指针指向的节点的指针域是否指向空;以及,
提取插入单元,用于在所述插入基准指针指向的节点的指针域指向空时,将属于掩码为0的事件类型的当前访问年份的事件插入至所述插入基准指针指向的节点后成为尾节点,并使所述插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,及更新所述尾节点指针。
优选的是,所述执行模块包括:
执行赋值单元,用于赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,及用于在所述取出基准指针不等于获取的虚拟头节点的指针域时重新赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,其中,所述虚拟头节点的指针域指向头结点;
执行指针获取单元,用于获取所述虚拟头节点的指针域;
执行判断单元,用于判断所述取出基准指针是否等于获取的虚拟头节点的指针域;以及,
执行处理单元,用于在所述取出基准指针等于获取的虚拟头节点的指针域时,取出所述取出基准指针指向的节点中的事件执行,并更新所述虚拟头节点的指针域。
优选的是,所述系统还包括:
事件数量获取模块,用于获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量;
阈值获取模块,用于获取日历队列的入队桶个数,将所述入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将所述入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值;以及,
放缩模块,用于在所述当前等待事件的数量大于所述扩大阈值或者小于所述缩小阈值时,根据所述日历队列对应的排队系统类型计算所述日历队列的平均队列长度,并将所述入队桶的数量调整为等于所述平均队列长度除以所述入队桶容量的期望值。
本发明的有益效果为:本发明的应用于无线通信系统仿真的调度方法及对原有日历队列的格式进行了改进,在原有各桶的基础上,增加了出队桶,使得原有各桶成为入队桶,由于本发明中插入至入队桶中等待处理的事件要先提取至出队桶中排队,而且在从入队桶中取出事件至出队桶中排队时,保证出对桶中属于同一事件类型的事件只有一件,因此,本发明可在多网多信道共存的情况下保证事件的插入、取出、执行、重构等运作机理仍是串行结构,使得本发明的方法及系统适用于多网多信道共存的无线通信系统仿真。
附图说明
图1示出了根据本发明所述应用于无线通信系统仿真的调度方法的一种实施方式的流程图;
图2示出了根据本发明所述应用于无线通信系统仿真的调度方法中将入队桶中的事件提取至出对桶中的一种实施方式的流程图。
图3示出了图1中将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部的一种实施方式的流程图;
图4示出了图1中从所述出队桶的子链表的头部取出事件执行的一种实施方式的流程图;
图5示出了根据本发明所述应用于无线通信系统仿真的调度系统的一种实施方式的方框原理图;
图6示出了图4所示提取模块的一种实施结构的方框原理图;
图7示出了图4中执行模块的一种实施结构的方框原理图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
在本发明的应用于无线通信系统仿真的调度方法及系统中,除日历队列原始的桶外还设置一出队桶,而日历队列原始的桶在本发明中被称之为入队桶,到达日历队列的事件首先要插入至入队桶中等待处理,而所有入队桶中的事件均需要先被插入至出对桶中排队才能最终得到相应的处理。
如图1所示,本发明的应用于无线通信系统仿真的调度方法包括:
步骤S1:在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止。以日历队列具有八个入队桶为例,如果事件指针指向第四个入队桶,则每次接收到允许访问操作指令后,将顺次访问第四至第八入队桶的子链表中的事件,在访问的过程中,如果接收到阻塞访问操作指令,则停止正在进行的访问操作,在此,由于在将到达日历队列的事件插入入队桶中时是按照事件发生的时间确定对应的入队桶及确定在对应入队桶中的具体插入位置,即在同一入队桶的子链表中的事件为发生在不同年份的同一天发生的事件,而且这些事件在子链表中按照发生时间先后排序,因此,在进行访问操作时,对于同一个入队桶,如果当前访问的节点中的事件已经不属于当前年份,则即可跳转至下一入队桶继续进行访问。上述事件指针在初始时指向第一个入队桶。
步骤S21:从出队桶的子链表的头部取出事件执行;在此,由于上述访问操作是将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,因此,每次从出队桶的子链表的头部取出事件执行,可保证对于属于相同事件类型的事件是按照先到达先处理的原则进行调度。
步骤S22:在执行完事件后,先发出阻塞访问操作指令,以阻塞步骤S1进行的访问操作,之后执行步骤S23。
步骤S23:将执行完的事件所属的事件类型的掩码置0,使得下一次访问操作可将属于该事件类型的事件取出至出对桶中,之后执行步骤S24。
步骤S24:将出队桶的子链表的长度减1,之后执行步骤S25。
步骤S25:发出允许访问操作指令,使步骤S1的访问操作重新进行,在此,只要事件指针没有改变,访问操作每次均将从同一位置开始进行。在本发明中,可以改变事件指针的事件为:在事件指针指向的入队桶的子链表中没有当前访问年份的事件时(这说明该入队桶中的所有当前访问年份的事件至少已经进入出队桶中),使事件指针指向下一入队桶;在最后一个入队桶的子链表中没有当前访问年份的事件时(说明入队桶中所有当前访问年份的事件至少已经进入出队桶中),使事件指针指向第一个入队桶,并将下一年份作为当前访问年份。
根据以上方法可知,由于本发明的方法中引入了一个出对桶,并利用掩码保证出对桶中属于同一事件类型的事件只有一件,因此,本发明的方法允许多个执行线程并列进行从出对桶的子链表的头部取出事件执行的操作,即本发明的方法可应用于多信道共存的无线通信系统仿真。
上述步骤S1可采用图2所示的步骤进行,具体为:
步骤S11:赋值访问指针等于事件指针,使访问指针指向事件指针指向的入队桶的头结点,之后执行步骤S11。
步骤S12:判断访问指针指向的节点存储的事件是否属于当前访问年份,如是则执行步骤S13,如否则执行步骤S19。
步骤S13:提取访问指针指向的节点存储的事件的事件类型,之后执行步骤S14。
步骤S14:判断提取出的事件类型的掩码是否为0,如是则执行步骤S15,如否则执行步骤S17。
步骤S15:将访问指针指向的节点存储的事件取出至出对桶的子链表的尾部,之后执行步骤S16。
步骤S16:将取出事件所述的事件类型的掩码置1,将出对桶的子链表的长度加1,之后执行步骤S17。
步骤S17:判断访问指针指向的节点的指针域是否指向空,如是则执行步骤S19,如否则执行步骤S18。
步骤S18:使访问指针指向下一节点,之后执行步骤S12。
步骤S19:使访问指针指向下一入队桶的头结点,之后执行步骤S12。
本发明的方法在执行上述步骤S11至步骤S19的过程中,还执行如下操作:
步骤S110:判断是否接收到阻塞访问操作指令,如是则执行步骤S111,如否则继续执行上述访问操作。
步骤S111:阻塞上述访问操作,之后执行步骤S112。
步骤S112:判断是否接收到允许访问操作指令,如是则执行上述步骤S11,如否则继续执行步骤S111。
为了解决从入队桶中取出事件至出对桶中与将事件插入至入队桶中之间可能存在的竞争问题,本发明方法还可包括:在将入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止向对应入队桶的子链表中插入新的事件;在向入队桶的子链表中插入新的事件时,禁止将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。在此,可为各入队桶设置一个读写锁,这样,在将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,将对应入队桶的写锁关闭,以禁止向对应入队桶的子链表中插入新的事件;在向入队桶的子链表中插入新的事件时,将对应入队桶的读锁关闭,以禁止将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。
如图3所示,在将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部可进一步包括:
步骤S151:赋值插入基准指针等于出队桶的尾节点指针,之后执行步骤S152。
步骤S152:获取插入基准指针指向的节点的指针域,之后执行步骤S153。
步骤S153:判断插入基准指针指向的节点的指针域是否指向空,如是则执行步骤S154,如否则执行步骤S151,该步骤是为了判断在具体进行插入操作时,出队桶的尾节点是否已发生了变化,如已经发生了变化则重新执行步骤S151。
步骤S154:属于掩码为0的事件类型的当前访问年份的事件插入至插入基准指针指向的节点后成为尾节点,之后执行步骤S155。
步骤S155:使插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,之后执行步骤S156。
步骤S156:更新尾节点指针。
为了解决在将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部及从所述出队桶的子链表的头部取出事件执行之间可能存在的竞争问题,同样可采用为出对桶设置读写锁的方式进行,但是为了增加处理效率,也可以采用如下的通过设置虚拟头节点实现的无锁化处理,具体为:
如图4所示,而从出队桶的子链表的头部取出事件执行可进一步包括:
步骤S211:赋值取出基准指针等于出队桶的子链表中虚拟头节点的指针域,之后执行步骤S212,其中,所述虚拟头节点的指针域指向头结点,所谓的虚拟头结点是仅具有指针域而不具有数据域的节点,其指针域指向真正的头结点,该节点在子链表为空时也不会消失。
步骤S212:获取虚拟头节点的指针域,即获取头结点的指针,之后执行步骤S213。
步骤S213:判断取出基准指针是否等于获取的虚拟头节点的指针域,如是,则执行步骤S214,如否,则执行步骤S211;该步骤是为了判断在具体取出执行时,判断头结点是否发生了变化,如未变化则取出执行,如赋值时指向的头结点已经被其他线程取出执行,则需要查找新的头结点。
步骤S214:取出该取出基准指针指向的节点中的事件执行,之后执行步骤S215。
步骤S215:更新虚拟头节点的指针域。
另外,为了使本发明的方法适用于可多个线程并列进行将事件插入至入队桶中的操作,为了解决多个线程同时在同一入队桶中进行插入之间的竞争问题,同样可以采用上述的不断判断入队桶的尾节点是否发生变化的方法进行,如未变化则插入,如已变化则重新获取入队桶的尾节点的指针。
由此可见,日历队列维护的整个数组中入队桶的个数和入队桶的容量是影响事件插入操作和事件取出操作性能的主要因素,如果数组中入队桶的数量太多,则对增加事件取出操作的遍历度,如果数组中入队桶的数量太少,则会影响遍历子链表查找当前插入事件应该插入的位置的效率。基于上述情况,通常要根据当前等待事件的数量Ne(所有入队桶的子链表的长度之和)调整数组中入队桶的数量,即使入队桶的数量随着当前等待事件的数量的增加或者减少而对应地增加或者减少,这就需要对桶的数量进行放缩,传统的适用于单网单信道仿真的日历队列的放缩的代价已经比较高昂,对于本发明的适用于多网多信道的仿真的日历队列的放缩的代价将更加高昂,因此,本发明提出了一种新的放缩方法。
为此,本发明的方法还包括:
步骤S31:获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量Ne
步骤S32:获取日历队列的入队桶个数,将入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值。
步骤S33:在所当前等待事件的数量Ne大于扩大阈值或者小于缩小阈值时,根据日历队列对应的排队系统类型计算日历队列的平均队列长度,并将入队桶的数量调整为等于平均队列长度除以入队桶容量的期望值(如存在余数则舍去)。在此,根据大量的仿真实验,入队桶的平均容量取为3或4时,系统性能最好,因此,入队桶容量的期望值通常设置为3或4。
为了便于预测排队系统的平均队列长度,上述平均队列长度可为在事件到达日历队列及从入队桶中取出事件至出队桶中处理趋向平衡时的稳态下的平均队列长度,该稳态也可理解为是在任意时刻当前等待事件的数量为某一数值的概率不再发生变化的状态。
在本发明的方法中可将日历队列构件为事件到达日历队列服从普阿松过程,从入队桶中取出事件至出队桶中处理服从负指数分布,服务台数为可并列从所述出队桶的子链表的头部取出事件执行的最大线程数量,日历队列的容量受限的排队系统,即M/M/C/N排队系统,其中C为服务台数,N为日历队列的最大容量,第一个M为事件到达服从普阿松过程,第二个M为事件处理服从负指数分布。
根据M/M/C/N排队系统可知,稳态下的平均队列长度仅与当前时刻单位时间内到达所述日历队列的事件数量(即当前到达率),当前时刻单位时间内从所述入队桶中取出事件至出队桶中处理的数量(即当前处理率),及服务台数有关,因此,上述获取所述日历队列的平均队列长度可进一步包括:获取当前到达率;获取当前处理率;根据当前到达率、当前处理率和服务台数计算得到平均队列长度。另外,本发明可以设定的时间间隔获取当前等待事件的数量,以定期判断是否需要进行放缩。
相对应地,如图5所示,本发明的应用于无线通信系统仿真的调度系统包括提取模块1、执行模块2和定位模块3,其中,提取模块1用于在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;执行模块2用于从所述出队桶的子链表的头部取出事件执行;及用于在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;定位模块3用于在事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入队桶;及用于在最后一个入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向第一个入队桶,并将下一年份作为所述当前访问年份。本发明的系统支持设置多个执行模块2的无线通信系统仿真。
该提取模块1还用于在将入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止所述执行模块向对应入队桶的子链表中插入新的事件。该执行模块2还用于在向入队桶的子链表中插入新的事件时,禁止所述提取模块将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,即本发明的系统可由执行模块2完成将到达日历队列的事件插入至入队桶中的操作。
如图6所示,该提取模块1可进一步包括提取赋值单元11、提取指针获取单元12、提取判断单元13和提取插入单元14,其中,该提取赋值单元11用于赋值插入基准指针等于所述出队桶的尾节点指针,及用于在所述插入基准指针指向的节点的指针域未指向空时重新赋值插入基准指针等于所述出队桶的尾节点指针;该提取指针获取单元12用于获取插入基准指针指向的节点的指针域;该提取判断单元13用于判断插入基准指针指向的节点的指针域是否指向空;该提取插入单元14用于在插入基准指针指向的节点的指针域指向空时,将属于掩码为0的事件类型的当前访问年份的事件插入至所述插入基准指针指向的节点后成为尾节点,并使所述插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,及更新所述尾节点指针。
如图7所示,该执行模块2可进一步包括执行赋值单元21、执行指针获取单元22、执行判断单元23和执行处理单元24,其中,该执行赋值单元用于赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,及用于在所述取出基准指针不等于获取的虚拟头节点的指针域时重新赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,其中,所述虚拟头节点的指针域指向头结点;该执行指针获取单元用于获取虚拟头节点的指针域;该执行判断单元用于判断所述取出基准指针是否等于获取的虚拟头节点的指针域;该执行处理单元用于在取出基准指针等于获取的虚拟头节点的指针域时,取出所述取出基准指针指向的节点中的事件执行,并更新所述虚拟头节点的指针域。
另外,本发明的系统还可以包括事件数量获取模块、阈值获取模块和放缩模块,该事件数量获取模块用于获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量;该阈值获取模块用于获取日历队列的入队桶个数,将所述入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将所述入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值;该放缩模块用于在当前等待事件的数量大于扩大阈值或者小于缩小阈值时,根据日历队列对应的排队系统类型计算日历队列的平均队列长度,并将入队桶的数量调整为等于所述平均队列长度除以入队桶容量的期望值。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。

Claims (14)

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所述的方法,其特征在于,所述获取所述日历队列的平均队列长度包括:
获取当前时刻单位时间内到达所述日历队列的事件数量,作为当前到达率;
获取当前时刻单位时间内从所述入队桶中取出事件至出队桶中处理的数量,作为当前处理率;
根据所述当前到达率、所述当前处理率和所述服务台数计算所述平均队列长度。
9.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
以设定的时间间隔获取所述当前等待事件的数量。
10.一种应用于无线通信系统仿真的调度系统,其特征在于,包括:
提取模块,用于在接收到允许访问操作指令后,顺次访问以事件指针指向的入队桶起始的各入队桶的子链表中的事件,将属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部,并将取出至出队桶的子链表中的事件所属的事件类型的掩码置1及将所述出队桶的子链表的长度加1,直至接收到阻塞访问操作指令为止;
执行模块,用于从所述出队桶的子链表的头部取出事件执行;及用于在执行完事件后,先发出所述阻塞访问操作指令,再将执行完的事件所属的事件类型的掩码置0及将所述出队桶的子链表的长度减1,最后发出所述允许访问操作指令;以及,
定位模块,用于在所述事件指针指向的入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向下一入队桶;及用于在最后一个入队桶的子链表中没有当前访问年份的事件时,使所述事件指针指向第一个入队桶,并将下一年份作为所述当前访问年份。
11.根据权利要求10所述的系统,其特征在于,所述提取模块还用于在将入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部时,禁止所述执行模块向对应入队桶的子链表中插入新的事件;所述执行模块还用于在向入队桶的子链表中插入新的事件时,禁止所述提取模块将对应入队桶中属于掩码为0的事件类型的当前访问年份的事件取出至出队桶的子链表的尾部。
12.根据权利要求10所述的系统,其特征在于,所述提取模块包括:
提取赋值单元,用于赋值插入基准指针等于所述出队桶的尾节点指针,及用于在所述插入基准指针指向的节点的指针域未指向空时重新赋值插入基准指针等于所述出队桶的尾节点指针;
提取指针获取单元,用于获取所述插入基准指针指向的节点的指针域;
提取判断单元,用于判断所述插入基准指针指向的节点的指针域是否指向空;以及,
提取插入单元,用于在所述插入基准指针指向的节点的指针域指向空时,将属于掩码为0的事件类型的当前访问年份的事件插入至所述插入基准指针指向的节点后成为尾节点,并使所述插入基准指针指向的节点的指针域指向尾节点,使尾节点的指针域指向空,及更新所述尾节点指针。
13.根据权利要求10、11或12所述的系统,其特征在于,所述执行模块包括:
执行赋值单元,用于赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,及用于在所述取出基准指针不等于获取的虚拟头节点的指针域时重新赋值取出基准指针等于所述出队桶的子链表中虚拟头节点的指针域,其中,所述虚拟头节点的指针域指向头结点;
执行指针获取单元,用于获取所述虚拟头节点的指针域;
执行判断单元,用于判断所述取出基准指针是否等于获取的虚拟头节点的指针域;以及,
执行处理单元,用于在所述取出基准指针等于获取的虚拟头节点的指针域时,取出所述取出基准指针指向的节点中的事件执行,并更新所述虚拟头节点的指针域。
14.根据权利要求10所述的系统,其特征在于,所述系统还包括:
事件数量获取模块,用于获取日历队列的所有入队桶的子链表的长度之和作为当前等待事件的数量;
阈值获取模块,用于获取日历队列的入队桶个数,将所述入队桶个数乘以入队桶容量的期望值作为日历队列的扩大阈值,将所述入队桶个数除以所述入队桶容量的期望值作为日历队列的缩小阈值;以及,
放缩模块,用于在所述当前等待事件的数量大于所述扩大阈值或者小于所述缩小阈值时,根据所述日历队列对应的排队系统类型计算所述日历队列的平均队列长度,并将所述入队桶的数量调整为等于所述平均队列长度除以所述入队桶容量的期望值。
CN201410184653.XA 2014-05-04 2014-05-04 一种应用于无线通信系统仿真的调度方法及系统 Active CN103929769B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410184653.XA CN103929769B (zh) 2014-05-04 2014-05-04 一种应用于无线通信系统仿真的调度方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410184653.XA CN103929769B (zh) 2014-05-04 2014-05-04 一种应用于无线通信系统仿真的调度方法及系统

Publications (2)

Publication Number Publication Date
CN103929769A CN103929769A (zh) 2014-07-16
CN103929769B true CN103929769B (zh) 2017-02-15

Family

ID=51147813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410184653.XA Active CN103929769B (zh) 2014-05-04 2014-05-04 一种应用于无线通信系统仿真的调度方法及系统

Country Status (1)

Country Link
CN (1) CN103929769B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107018095B (zh) * 2017-03-29 2020-08-11 西安电子科技大学 基于离散事件的交换单元仿真系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102497295A (zh) * 2011-12-12 2012-06-13 盛科网络(苏州)有限公司 一种以太网交换芯片队列管理器的rtl级验证方法及系统
CN102906696A (zh) * 2010-03-26 2013-01-30 维尔图尔梅特里克斯公司 计算机系统的细粒性能资源管理
CN103268251A (zh) * 2013-05-02 2013-08-28 中国人民解放军国防科学技术大学 一种基于时戳截流的并行离散事件仿真时间同步方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236495B2 (en) * 2002-10-25 2007-06-26 Alcatel Lucent Calendar heap system and method for efficient sorting

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102906696A (zh) * 2010-03-26 2013-01-30 维尔图尔梅特里克斯公司 计算机系统的细粒性能资源管理
CN102497295A (zh) * 2011-12-12 2012-06-13 盛科网络(苏州)有限公司 一种以太网交换芯片队列管理器的rtl级验证方法及系统
CN103268251A (zh) * 2013-05-02 2013-08-28 中国人民解放军国防科学技术大学 一种基于时戳截流的并行离散事件仿真时间同步方法

Also Published As

Publication number Publication date
CN103929769A (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
US11314562B2 (en) Systems and methods for performing concurrency restriction and throttling over contended locks
JP5311732B2 (ja) マルチコアアーキテクチャにおけるスケジューリング
CN105893120B (zh) 一种线程同步资源的获取方法和装置
CN102752198B (zh) 多核报文转发方法、多核处理器及网络设备
US20200219028A1 (en) Systems, methods, and media for distributing database queries across a metered virtual network
CN104040490A (zh) 用于多引擎微处理器的加速的代码优化器
CN106648461A (zh) 一种内存管理装置和方法
CN101651709A (zh) 一种p2p下载文件完整性校验方法
CN112862088A (zh) 一种基于流水线环形参数通信的分布式深度学习方法
Ballarini et al. Transient analysis of networks of stochastic timed automata using stochastic state classes
CN106453127A (zh) 一种令牌处理方法和装置
EP1131704B1 (en) Processing system scheduling
US7958083B2 (en) Interacting methods of data summarization
CN103929769B (zh) 一种应用于无线通信系统仿真的调度方法及系统
CN110083613A (zh) 表单数据更新方法、装置、存储介质及电子设备
CN113486037A (zh) 更新缓存数据的方法、管理器和缓存服务器
CN107018095B (zh) 基于离散事件的交换单元仿真系统及方法
CN101299758B (zh) 一种大规模事件处理的规则群组系统及处理方法
CN114707452A (zh) 一种基于协程的数字仿真验证方法、设备和存储介质
Kristiansen et al. Extending network simulators with communication software execution models
CN105930096B (zh) 一种基于PageRank的数据块预缓存方法
CN105308918A (zh) 调度装置
Craciunas et al. Temporal isolation in real-time systems: the VBS approach
CN106445880B (zh) 一种加速布线方法
Campoy et al. Schedulability analysis in EDF scheduler with cache memories

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant