1.一种5G终端模拟系统中随机接入的实现方法,其特征在于:该方法包括以下步骤:
S1:创建线程池架构;
S2:对用户的资源进行初始化并对用户随机接入前导进行资源选择;
S3:管理线程先对任务线程池中线程对象中的线程ID与空闲线程池中的线程ID赋值,然后将任务池中的函数指针放到线程池对象中进行匹配;
S4:空闲线程池与忙碌线程池主要执行对用户线程进行添加的过程;
S5:管理线程将Msg1所在的任务对象与空闲线程池中的任务对象进行匹配;如果匹配成功,将空闲线程池中匹配成功的线程添加到忙碌线程池,并对Msg1进行处理,通过交互接口函数发送到物理层;
S6:随机接入响应数据包解析;
S7:发送Msg3,并开启竞争解决定时器监听Msg4,当数据包成功解析并且数据包含有C-RNTI标识,表示随机接入成功,否则选择合适的退避值重新对随机接入资源选择。
2.根据权利要求1所述的一种5G终端模拟系统中随机接入的实现方法,其特征在于:所述S1中,创建线程池架构包括:在这个主进程中创建任务管理线程、管理线程、监控线程;
创建一个任务池、一个空闲线程池、一个忙碌线程池;
监控线程对线程池进行动态的调度和调整;
任务管理线程主要是将随机接入中的消息事件封装成任务并激活休眠的管理线程;
管理线程主要负责从任务池中取任务以及从线程池中取线程,通过条件变量进行同步;
监控线程主要负责动态调整和调度线程池;任务池主要将任务封装成任务对象;
空闲线程池主要是负责创建线程对象,忙碌线程池主要对与任务匹配的线程进行处理。
3.根据权利要求1所述的一种5G终端模拟系统中随机接入的实现方法,其特征在于:所述S2、S3包括:MAC层对随机接入资源选择,选择的资源作为每个用户发送的Msg1;由于每个用户访问的是全局资源,每个用户的Msg1被封装成事件后,要对每个用户资源加互斥锁;当任务线程中的任务到达时,管理线程才会从休眠的状态中被激活;管理线程先将任务线程池中线程ID与空闲线程池中的线程ID赋值并将任务池中的函数指针放到线程池对象中进行匹配;然后将匹配到的任务放到相应的空闲线程池中的线程中。
4.根据权利要求1所述的一种5G终端模拟系统中随机接入的实现方法,其特征在于:所述S4包括:将空闲线程池中的线程添加到忙碌线程池中,在忙碌线程池中处理匹配的任务;
主要的思路如下:创建空闲线程池的链表和忙碌线程池链表,在空闲线程池中创建8个用户线程;此时监控进程对空闲线程池中的线程进行判断,如果创建的用户线程大于空闲线程池线程总量的80%,则添加20%的空闲线程池线程总量;如果创建的用户线程小于线程池线程总量的50%,则杀死多余20%空闲线程池线程总量;获取用户线程链表的头结点,当第一个任务到达时,将空闲线程池中的第一个用户线程节点取出,然后添加到忙碌线程池链表头节点后面,并将此用户线程节点的指针域置为空;当第二个任务到达时,将空闲线程池中的第二个用户线程节点取出,添加到忙碌线程池链表的第一个节点后面,并将添加的第二个用户线程节点的指针域置为空;以此类推,当8个用户同时添加时,只需将空闲线程池中的8个线程添加到忙碌线程池中,由忙碌线程池来处理8个用户的任务。
5.根据权利要求1所述的一种5G终端模拟系统中随机接入的实现方法,其特征在于:所述S5、S6包括:在忙碌线程中对Msg1进行处理后,通过交互接口函数发送到物理层;然后空闲线程池中的用户线程进行死锁等待,当物理层中的数据包到达任务池时,此时设置一个条件变量触发用户线程;每个用户线程分别接收物理层的随机响应数据包并解析;随机接入响应PDU中含有BI子头、RAPID、RAPID-RAR三种subPDU;解析方法如下:定义BI、RAPID、RAR结构体并按位进行紧凑排列,定义一个缓冲区,将随机接入响应数据包放入缓冲区中;判断扩展域E的值,当E等于1时,表示BI子头后面还有subPDU,当E等于0时,表示只有BI子头;再判断T的值,当T等于0时,则表示的是BI子头,当T等于1时,则表示RAPID子头;当解析完BI子头后,缓冲区将偏移BI的大小;解析RAR,并判断RAR里面是否接收到TC-RNTI,若收到则解析TC-RNTI,放入Msg3的缓冲区;当RAR解析成功时,缓冲区将偏移RAR的大小。
6.根据权利要求1所述的一种5G终端模拟系统中随机接入的实现方法,其特征在于:所述S7包括:当UE是第一次随机接入时,将每个用户的Msg3信息添加到任务池,然后通过管理线程将Msg3的任务池与线程池进行匹配,然后添加到忙碌线程池,最后通过交互接口发给物理层,并开启定时控制线程,等待Msg4;如果MAC层能够成功解析由C-RNTI加扰的PDCCH,则随机接入响应成功并将忙碌线程切换成空闲线程;当定时控制线程中的定时时间超时,将空闲线程池中的线程清除,删除用户信息并选择随机接入响应的PDU中的BI值进行退避处理;当定时控制线程中的定时时间没有超时且没有成功解析由C-RNTI加扰的PDCCH时,MAC层判断随机接入响应的前导码发送数量是否大于最大的前导码发送数量,如果大于,则需要选择随机接入响应的BI值进行退避处理。