首页> 中国专利> 网络模拟器平台上的时间控管方法及系统

网络模拟器平台上的时间控管方法及系统

摘要

本发明提供一种网络模拟器平台上的时间控管方法及系统,当有至少一子过程调用系统调用程序并进入一阻塞式输入输出时进行标记,由核心发出一第一通知事件给网络模拟器,要求网络模拟器暂停直到该子程序离开该阻塞式输入输出;当核心侦测到子程序皆已离开阻塞式输入输出,便会发出一第二通知事件给网络模拟器,让网络模拟器继续模拟。因此本发明可控制子程序不会持续占用资源,并藉由第一、第二通知事件避免模拟器的定时器在子程序执行期间继续进行而造成模拟结果的时序异常。

著录项

  • 公开/公告号CN112286624A

    专利类型发明专利

  • 公开/公告日2021-01-29

    原文格式PDF

  • 申请/专利权人 思锐科技股份有限公司;

    申请/专利号CN201911310114.5

  • 发明设计人 林志哲;何庭纬;

    申请日2019-12-18

  • 分类号G06F9/455(20060101);G06F1/06(20060101);

  • 代理机构11139 北京科龙寰宇知识产权代理有限责任公司;

  • 代理人侯奇慧

  • 地址 中国台湾新竹市

  • 入库时间 2023-06-19 09:41:38

说明书

技术领域

本发明有关一种网络模拟器,特别是指一种网络模拟器平台上的时间控管方法及系统。

背景技术

网络模拟器为了确保模拟结果为可重复性(repeatable),其模拟器引擎的程序运作与担任被模拟节点程序(亦即网络模拟器的子程序)的运作,会共享同一个中央处理器(CPU),以保持模拟事件的串行化特性(Serialization)。如图1所示,模拟器、子程序1及子程序2会轮流占用中央处理器(CPU)资源,所有子程序都是实时的程序(real-time),会优先使用中央处理器,持续执行直到自己主动释放中央处理器,因此当子程序1使用中央处理器时,模拟器就会释放中央处理器让子程序1执行,子程序2接续在子程序1后执行,当子程序1或2皆执行完毕并轮到模拟器时,模拟器会将虚拟时间跳到下个定时器事件(timer event)来执行。

事件式模拟(Event-based simulation)的模拟时间推进非固定值,因此在多数情形下较一般轮询式模拟(polling-based simulation)的模拟速度更快。但当发生下列情况时,会导致模拟器无法正确地控制虚拟时间,如图2A及图2B的第一种情况,图2A为正常的模拟时序,其中子程序产生的事件流过网络后造成时间推进(如联机延迟、传输延迟、定时器事件等),而定时器依据排序过的所有事件时间推移量,取量最小、最靠近当前模拟时间的事件出来执行并推进时间,但若子程序释放中央处理器时没有产生定时器事件,例如呼叫I/O system calls时,子程序会因为沉睡在操作系统的system call函数里,而被操作系统核心释放其中央处理器资源,但因不涉及网络链接传输行为,所以子程序不会产生推进时间的定时器事件给模拟器,使模拟器认为没有事件可执行,导致虚拟时间快速前进,如图2B所示。第二种情况如图3A及图3B所示,当子程序1持续占用中央处理器不释放(图3A),例如子程序持续呼叫系统调用程序(system call),或子程序为处理器资源耗尽型程序(CPU-bound process)或执行无限空转动作(empty busy loop)时,会使模拟器无法取得处理器资源来执行,从而导致虚拟时间不会前进(图3B)。

因此,本发明即提出一种网络模拟器平台上的时间控管方法及系统,有效解决上述该等问题,具体架构及其实施方式将详述于下:

发明内容

本发明的主要目的在于提供一种网络模拟器平台上的时间控管方法及系统,其利用核心送出通知事件给模拟器,告知其子程序的状态,例如子程序进入阻塞式输入输出,让模拟器停止执行模拟器定时器,直到子程序离开阻塞式输入输出模拟器才会继续执行模拟器定时器,以解决当子程序不会产生定时器事件(timer event)时,模拟器以为没有事件而导致虚拟时间快速前进的问题。

本发明的另一目的在于提供一种网络模拟器平台上的时间控管方法及系统,当核心侦测到子程序持续占用中央处理器资源时,通知模拟器,并由模拟器决定于何时强制子程序释放资源,以解决模拟器无法执行导致虚拟时间不会前进的问题。

本发明的再一目的在于提供一种网络模拟器平台上的时间控管方法及系统,其将进入阻塞式输入输出的子程序进行标记,以供核心侦测并通知模拟器暂停。

为达上述目的,本发明提供一种网络模拟器平台上的时间控管方法,其为在一计算机中安装一网络模拟器以模拟至少一目标软件,该时间控管方法包括下列步骤:当至少一子程序欲呼叫一第一系统调用程序(system call)进入一阻塞式输入输出时进行标记;一核心(Kernel)侦测到该阻塞式输入输出便发出一第一通知事件给正在运行的该网络模拟器,告知该网络模拟器有该至少一子程序的状态改变,以要求该网络模拟器暂停,直到所有子程序皆已离开阻塞式输入输出后,由核心发出一第二通知事件给该网络模拟器,让该网络模拟器继续运行。

根据本发明的实施例,更包括建置由一核心管理的一任务列表,标记所有进入阻塞式输入输出的子程序。

承上所述,该状况字段由一第四系统调用程序(system call)进行标注,该第四系统调用程序为IO blocking类别或Unix域协议(domain socket)类别,该IO blocking类别包括开启、读取、写入、取得文件状态(fstat)或同步等功能的系统调用程序。

根据本发明的实施例,更包括建置由核心侦测的任务列表,以判断是否有任一子程序持续占用该中央处理器的资源。若该至少一子程序持续占用中央处理器的资源,该核心产生一第三通知事件给该网络模拟器,让该网络模拟器决定何时强制该至少一子程序释放该资源。进一步,该网络模拟器发出一第二系统调用程序(system call),使该核心强制让占用该资源的该至少一子程序释放该中央处理器的资源。

本发明另提供一种网络模拟器平台上的时间控管系统,包括:一网络模拟器,其安装于一计算机中并模拟至少一目标软件;至少一子程序,其与该网络模拟器使用相同资源时,该至少一子过程调用一第一系统调用程序(system call)进入一阻塞式输入输出并呼叫一第一系统调用程序(system call)以并进行标记;一核心(Kernel),当侦测到至少一子过程调用系统调用程序(system call)进入该阻塞式输入输出时中有该至少一子程序进入,发出一第一通知事件给正在运行的该网络模拟器,告知该网络模拟器有该至少一子程序的状态改变,以要求该网络模拟器暂停,而当该核心侦测到所有的该子程序皆已离开该阻塞式输入输出后,发出一第二通知事件给该网络模拟器,让该网络模拟器继续运行。

附图说明

图1为现有技术中模拟器及其子程序轮流占用中央处理器的时序示意图;

图2A为推移模拟时间量的正常情形示意图;

图2B为当子程序没有产生定时器事件时的异常情形示意图;

图3A为中央处理器被子程序占用的示意图;

图3B为当中央处理器被子程序持续占用时中央处理器的推移模拟时间量的示意图;

图4A至图4C为本发明网络模拟器平台上的时间控管方法的步骤示意图;

图5为本发明网络模拟器平台上的时间控管方法的流程图;

图6为本发明网络模拟器平台上的时间控管方法中解决子程序持续占用资源的示意图。

附图标记说明:10-网络模拟器;12-子程序;14-核心;16-任务列表;18-阻塞式输入输出;20-模拟器定时器;22-实时定时器;24-IO事件通知机制;26-驱动设备。

具体实施方式

本发明提供一种网络模拟器平台上的时间控管方法及系统,由于网络模拟器的子程序可优先使用资源,当子程序执行完后才会轮到网络模拟器继续进行模拟,但若子程序释放资源时没有产生定时器事件,则模拟器会认为没有事件,导致虚拟时间快速前进,而使模拟时间异常,因此本发明让子程序产生一个信息,让核心知道子程序正在开始执行及执行结束,并让核心通知模拟器,以解决该问题。解决方法具体请参考图4A至图4C,其为本发明网络模拟器平台上的时间控管系统的步骤示意图,并请同时参考图5,其为本发明的流程图。

如图4A所示,本发明的架构包括一网络模拟器10、至少一子程序12及一核心(Kernel)14,网络模拟器10安装于一计算机中,用以模拟至少一目标软件;当网络模拟器10正在执行的时候,若子程序12呼叫第一系统调用程序(system call)并进入一阻塞式输入输出(I/O block)时进行标记,如步骤S10所述;接着核心14侦测到阻塞式输入输出18中有子程序12进入,如步骤S12。在图4A中,实时定时器22是的时间是持续前进的,所有子程序12也都是实时程序,而模拟器定时器20则是只用以记录网络模拟器10的时序。

接着请参考图4B,当核心14侦测到阻塞式输入输出18中有子程序12进入后,如步骤S14,核心14发出一第一通知事件给网络模拟器10,告知网络模拟器10有子程序12的状态改变,以要求网络模拟器10暂停,此第一通知事件通过一I/O事件通知机制(ePoll)24传送给网络模拟器10,接续如步骤S16,网络模拟器10暂停直到子程序12离开阻塞式输入输出18,此时,模拟器定时器20亦停止执行,但实时定时器22的时间仍然是持续前进的。从核心14发送通知事件给网络模拟器10时使用一驱动设备(Tun0)26,所有核心14的通知事件都会送到驱动设备26,再由网络模拟器10读取驱动设备26以取得事件内容。

最后请参考图4C,当子程序12执行结束后,子程序12会再次呼叫一第三系统调用程序,将子程序12标记为已离开阻塞式输入输出18,如步骤S18所述。而核心14侦测到子程序12皆已离开阻塞式输入输出18后,会发出一第二通知事件给网络模拟器10,让网络模拟器10继续运行,此第二通知事件同样通过I/O事件通知机制(ePoll)24传送给网络模拟器10,让模拟器定时器20继续执行。藉此,不论子程序12执行时是否会送出定时器事件,网络模拟器10都会知道子程序12的状态。

此外,本发明中更包括建置一任务列表16,其由核心14管理,若子程序12持续占用中央处理器资源,网络模拟器10会无法执行,而使模拟器定时器20的虚拟时间不会前进,因此本发明更提供解决子程序持续占用资源的方法,如图6所示,若子程序12持续占用中央处理器资源,核心14侦测到子程序12已持续占用中央处理器超过一预设时间,便会产生一第三通知事件给网络模拟器10,让网络模拟器10决定何时强制子程序12释放资源。而当网络模拟器10决定要强制子程序12释放资源时,网络模拟器10发出一第二系统调用程序(system call),使核心14强制让占用资源的子程序12释放资源,让网络模拟器10可以执行。

此外,任务列表16中更包括一状况字段(图中未示),用以标注子程序12的阻塞式输入输出状态,例如图5中的步骤S10当子过程调用第一系统调用程序并进入阻塞式输入输出时,就是在该状况字段中标注该子程序12的阻塞式输入输出状态为已进入;此状况字段由一第四系统调用程序(system call)进行标注,此第四系统调用程序为IO blocking类别或Unix域协议(domain socket)类别,其中,IO blocking类别包括开启、读取、写入、取得文件状态(fstat)或同步等功能的系统调用程序。

综上所述,本发明的网络模拟器平台上的时间控管方法及系统藉由对进入阻塞式输入输出的子程序进行标注,让核心可以侦测到子程序是否占用资源,并通过一通知事件让网络模拟器可以知道其子程序的状态,以停止执行模拟器定时器,避免在网络模拟器暂停的时段模拟时间仍继续推进;此外,若子程序长时间持续占用资源,不论子程序是否为会发出定时器事件的函数或程序,核心皆可通过标注侦测到子程序的状态,并通知网络模拟器,让网络模拟器自行决定何时强制该至少一子程序释放资源,如此一来,可解决当子程序持续呼叫系统调用程序(system call)、处理器资源耗尽型程序(CPU-bound process)或空转(empty busy loop)时,会使模拟器无法执行,从而导致虚拟时间不会前进的问题,让网络模拟器的模拟时序可正常进行。

以上所述仅为本发明的较佳实施例而已,并非用来限定本发明实施的范围。故即凡依本发明所述的特征及精神所为的均等变化或修饰,均应包括于本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号