CloudSim内核仿真框架

    GridSim是CloudSim的构件之一。GridSim使用SimJava库作为事件处理和实体间的消息传递的框架。SimJava在搭建可扩展的仿真环境时存在局限性。比如:
它不允许在运行时通过编程重置仿真环境。
它不支持在运行时创建新的仿真实体。
随着系统规模的扩展,SimJava的多线程属性会带来性能上的开销。性能的下降是由线程间过度的上下文切换导致的。
多线程处理会使系统调试变复杂。
 
   所以,我们开发了一个新的离散事件管理框架。该框架的类图如图7(a)所示。

   CloudSim: 主类。负责管理事件队列和控制仿真事件的顺序执行。由CloudSim实体在运行时生成的事件存储在future events队列中。这些事件按照它们的时间先后插入队列。然后,把仿真中被调度的事件从future events队列中移除,传送到延迟事件队列中。按此流程,事件处理方法被每一个实体调用,而实体从延迟事件队列中选择事件并执行相应的操作。这种组织方式允许对仿真进行弹性管理并提供如下强大功能:
  停用实体;
  实体在不同状态(例如,等待激活)下的上下文切换,仿真暂停和继续;
  运行时创建新的实体;
  运行时中止和重启仿真。
CloudSim core framework.png

  DeferredQueue: 该类实现了延迟事件队列。
  FutureQueue: 该类实现了future event queue。
  CloudIInformationService: CIS实体提供了资源注册,索引和发现功能。CIS支持两个基本的原语:(i)publish(),允许实体在CIS中注册它们自身;(ii)search(),允许实体如CloudCoordinator和Brokers发现其他实体的状态和终端联系地址。该实体还会向其他实体发出仿真结束通告。
  SimEntity: 这是一个抽象类,代表了一个能够向其他实体发送消息并处理接收消息的仿真实体。所有的实体必须继承该类并重写三个核心方法:startEntity(),processEvent()和shutdownEntity()。
  CloudSimTags: 该类包含了各种静态的事件/命令标签。这些标签表明了CloudSim实体在接收和发送事件时需要处理的操作类型。
  SimEvent: 该实体代表了两个或多个实体间传递的仿真事件。SimEvent包含了一个事件的下列信息:类型,初始化时间,事件发生时间,结束时间,事件需要被传递到目标实体的时间,源ID,目标实体,事件标签,需要被传递到目标实体的数据。
  CloudSimShutdown: 该实体等待所有端用户和代理人实体终止,并向CIS发送仿真结束信号。
  Predicate: 该抽象类被用于从延迟队列中选择事件,需要被继承创建新的断言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值