SSDsim simulation function:process()

struct ssd_info *process(struct ssd_info *ssd):

        1.这个函数的主要功能是主控读子请求和写子请求的状态变化处理。首先通过一个for循环来循环判断所有channel通道中是否有读子请求或者写子请求,没有子请求则令标识位flag=1,否则flag=0。若flag=1,说明此时没有子请求,则若gc_request>0的话那就紧接着调用gc()函数进行相应的GC操作。上述情况判断完(或者说是判断完,因为可能不满足条件没有进入具体执行路径),先处理处于SR_R_C_A_TRANSFER(命令地址传输阶段),或者SR_COMPLETE,或者下一状态是SR_COMPLETE并且下一状态预计时间小于当前状态时间的读子请求。

        2.再接着对所有channel进行一个for循环,如果该channel是IDLE的,再判断ssd->gc_request是否大于0,ssd->channel_head[i].gc_command是否为NULL,满足条件即可调用gc()函数,若gc成功则将该channel的flag_gc置1表示此channel正忙然后continue结束此次循环进入下一次循环(即判断下一个channel)。

        3.若channel是处于IDLE状态,但是不满足GC要求,即没有进行GC操作,则按顺序依次调用services_2_r_wait()函数处理等待状态的读子请求,再调用services_2_r_data_trans()函数处理数据传输状态的读子请求,最后再调用services_2_write()函数处理写子请求。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值