flashsim源码阅读7-4

今天主要看的是上层的代码逻辑,不深究具体的变量赋值。
initFlash()函数:
主函数main里面的initFlash()函数里面根据全局变量ftl_type的类型选择了FTL类型操作读写函数flt_op指针。Ftl_type是在一开始的ssd_interface.h头文件定义,但是在ssd_interface.c中直接可以修改值,选择要仿真的FTL算法。initFlash()函数里面调用的nand_init()是对底层的flash块初始化,nand_stat_reset()函数只是对flash块操作记录的重置,并不是对flash块的内容作修改。若对nand的操作进一步深究,则是阅读flash.cflash.h文件的内容。
warmFlash()函数:
是一个预热函数,因为我们做实验的时候希望试验环境能模拟最真实的情况,以我们并不想每次在做实验的时候,trace 数据都是跑在一个全新的 SSD 上面。这个时候我们可以在真实实验之前给 SSD 做一次 warm up,也就是用一些 trace 先让 SSD 跑一会,然后再运行我们需要测试的 trace 文件。单纯做仿真不需要深究,只是需要知道其接口输入的参数是预热trace文件名。
下面开始的是disksim_run_simulation()函数,也就是总体仿真的函数。
Disksim_run_simulation函数在Disksim.c函数中定义,输入参数无,返回类型void
该函数判断disksim结构体中的stop_sim来反复执行调用disksim_simulate_event()函数,这里给出截取代码段:

void disksim_run_simulation ()
{
  int event_count = 0;
  while (disksim->stop_sim == FALSE) {
    disksim_simulate_event(event_count);
    event_count++;
  }
}

下面进入disksim_simulate_event()函数,这个函数输入参数是int类型的event_count,该函数,该函数也在disksim.c中定义。对这个函数咱一步步阅读,先给出这个函数的完整代码:

void disksim_simulate_event (int num)
{
  event *curr;

  if ((curr = getnextevent()) == NULL) {
    disksim_simstop ();
  } 
  else {

    switch(disksim->trace_mode) {
    case DISKSIM_NONE:
    case DISKSIM_MASTER:
//      fprintf(outputfile, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值