您是第 位访客

disksim-3.0 with flashsim 源码分析(三):callFsim()函数介绍

disksim-3.0 with flashim 和前面的 disksim-4.0 with ssdmodel 在逻辑上基本相似,只是多了些 FTL 层的东西。和前面介绍的 disksim-4.0 with ssdmodel 一样,程序仍然是从 disksim_device.c 中的 device_event_arrive() 函数中进入到 ssd 模块的。

进入到 ssd 模块后首先进入的是 disksim_simpleflash.c 文件,这就类似于 disksim-4.0 with ssdmodel 中的 ssd.c 文件,他们实现的功能有很多是相同的。

最后在 simpleflash_get_acctime() 函数中调用 callFsim() 函数。callFsim() 函数以后的内容才是 flashsim 重点实现的部分。

flashsim 源码分析(五): flashsim 的初始化

flashsim 的配置

flashsim 的源码目录下有个 ssd.conf 文件,对于 SSD 的一些参数可以在这个文件里面进行设置。还有一些默认的参数会在 ssd_config.cpp 文件中作为全局变量进行设置。

当需要模拟一个 SSD 时,首先需要调用 load_config(), 这个函数会读取配置文件,将配置文件中的信息保存在一些全局变量中。

flashsim 的初始化

flashsim 源码分析(三): 总线通道中的交叉

在 SSD 的读写中,很多过程都需要占用总线,有效利用总线的空闲时间可以降低 SSD 的响应时间。如果交叉地进行读写操作,这样可以提高总线的利用效率。

每一个总线通道(bus channel)上连接一个 package 里的所有 die。每个总线通道都是独立和并行的,不同通道上的操作是互相不干扰的。

flashsim 源码分析(一):安装 flashsim

关于 flashsim,现在有两个版本,一个是需要结合 disksim-3.0 一起使用的,一个是可以独立运行的。

关于与 disksim-3.0 结合使用的 flashsim,参见:http://cighao.com/2016/12/06/disksim-3.0-with-flashsim-source-analysis-01-how-to-install/

不推荐安装这个版本的 flashsim!不推荐安装这个版本的 flashsim!不推荐安装这个版本的 flashsim!

推荐:http://cighao.com/2016/12/06/disksim-3.0-with-flashsim-source-analysis-01-how-to-install/

即使不推荐,还是介绍下吧,接下来介绍的是在 github 开源的可以独立运行的那个 flashsim。

这个版本的 flashsim 是利用 C++ 开发的闪存模拟工具,同时还实现了几种不同的 FTL 算法。需要运行在 64 位的操作系统上。

利用概率算法求解八皇后问题

前面介绍了通过回溯法求解八皇后问题

但是当皇后的数量较多时,回溯法非常地耗时。所以提出了一种基于概率地随机放置皇后的方法。

每次都将8个皇后随机放在8行,如果满足条件就成功,否则全部重新放置,直到成功为止。

实验表明,这样地放置方法比回溯法更快。

还有一种优化就是对于一部分皇后随机放置,另一部分皇后采用回溯法放置,这样效果会更好。

回溯法求解八皇后问题

Problem

该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出的,在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。