littlebot
Published on 2025-04-17 / 1 Visits
0

【源码】基于C语言的磁盘闪存模拟系统

项目简介

本项目基于C语言开发,对Flashsim代码进行修改,实现了CFTL(特定闪存转换层)相关策略和CPFTL(特定映射缓存策略)层的仿真。可模拟闪存的读写操作、数据分配与迁移机制,同时实现映射缓存管理,用于研究和评估闪存存储系统的性能。

项目的主要特性和功能

  1. CFTL策略:SLC采用循环队列策略,MLC采用混合地址映射方式,SLC和MLC读写操作封装在dftl.c中,SDFTL代码逻辑在ssd_interface.c的callFsim中实现。
  2. 数据分配机制:依据负载请求大小识别热数据,用2均值聚类算法自适应调整阈值,小于阈值的写请求数据写入SLC区域,大于阈值的写入MLC区域。
  3. 数据迁移机制:把SLC区域作为循环队列,当SLC空余块少于一定量时,启动垃圾回收机制,将tail指针指向的物理块中的有效数据迁移到MLC区域。
  4. CPFTL层仿真:映射缓存DRAM分为H - CMT、S - CMT、C - CMT、GTD四个部分,分别缓存不同类型请求的映射项,各部分采用不同管理策略,如H - CMT用LRU策略,S - CMT采用FIFO策略。

安装使用步骤

编译环境准备

确保使用Ubuntu10.04系统,安装gcc - 2.95编译器。若使用实验室老机子,可直接用已打包压缩好的文件,使用前记得备份。

安装仿真器

先成功安装disksim + flashsim的仿真器。

替换代码

将本项目主目录下的src文件夹替换disksim + flashsim仿真器主目录下的src文件夹,并将其改名为src。

编译项目

在disksim + flashsim仿真器主目录下执行make命令进行编译。

配置运行

编译成功后,进入test.release目录下进行配置操作并运行项目。

代码修改建议

若需修改代码,可在自己电脑上用git修改,修改完成后push到实验室老电脑上,同步后直接运行编译查看错误并修改,建议多了解ssh和git的使用操作。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】