当前位置:  技术问答>linux和unix

用bitmap实现磁盘的读写监控

    来源: 互联网  发布时间:2017-01-19

    本文导语:  需要用C创建一个bitmap来实现对整个磁盘的读写监控。如果对一个磁盘块进行的操作是“写”操作,就在相应位置1,如果是“读”操作,则忽略。请问具体的数据结构怎样实现,如何在记录下“写”操作的同时,记录...

需要用C创建一个bitmap来实现对整个磁盘的读写监控。如果对一个磁盘块进行的操作是“写”操作,就在相应位置1,如果是“读”操作,则忽略。请问具体的数据结构怎样实现,如何在记录下“写”操作的同时,记录下相应磁盘块的位置。谢谢了。期待中……

|
#define SEC_MAX 
#define BIT_MAX 

struct sec_bitmap
{
unsigned int bit[BIT_MAX/32];
unsigned int sec[SEC_MAX];
};

index=
mysec_bitmap[s]->bit[index]=1;
mysec_bitmap[s]->sec[sector_number%SEC_MAX]=sector_number;


|
2G需要500000个4k的块。一个int可以表示32个块。
可以
#defien MAX_BIT 500000/32
unsigned int bitmap[MAX_BIT]

就下来自己用就是了啊,还不是知道你想问的是什么。

|
Ext2 文件系统的硬盘布局:http://www.ibm.com/developerworks/cn/linux/filesystem/ext2/
从文件 I/O 看 Linux 的虚拟文件系统:http://www.ibm.com/developerworks/cn/linux/l-cn-vfs/
解析 Linux 中的 VFS 文件系统机制:http://www.ibm.com/developerworks/cn/linux/l-vfs/
Ext3 和 ext4 文件系统在线调整大小内幕:http://www.ibm.com/developerworks/cn/linux/l-cn-ext4resize/

你可以看看上面这些分析,主要针对核心的文件系统 ext2/ext3。
至于bit掩码和位置记录都比较简单,其中最简单的方式就是采用静态数组来实现
struct blk_log {
   unsigned int bits[BLK_MAX / sizeof(unsigned int)];    // 记录读写掩码,为1时表明该数据块需要同步
   unsigned int blks[BLK_MAX];                           // 记录位置,可以是逻辑磁盘块到物理磁盘块的映射
};

如果磁盘块完全连续,那么貌似位置记录可以省略。只要知道起始磁盘块位置,就可以计算出当前位置吧...

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android中Bitmap的放大和缩小实例代码
  • bitmap图像平滑处理工具 Potrace
  • Android 的Bitmap的修改方法
  • bitmap索引压缩处理 FastBit
  • Android Bitmap和Drawable相互转换的简单代码
  • 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
  • Javascript的bitmap处理库 jsBitmap
  • Android Activity之间传递图片(Bitmap)的方法
  • android通过bitmap生成新图片关键性代码
  • C++ Bitmap Library
  • Android界面 NotificationManager使用Bitmap做图标
  • C# Bitmap 复制的小例子
  • Linux下如何编程画图?比如Bitmap和Pixel
  • android保存Bitmap图片到指定文件夹示例
  • C语言实现的bitmap位图代码分享
  • mysql创建Bitmap_Join_Indexes中的约束与索引
  • android Bitmap圆角与倒影的具体实现代码
  • Android截取视频帧并转化为Bitmap示例
  • 海量数据处理系列之:用C++实现Bitmap算法
  • 数据结构之位图(bitmap)详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3