我正在编写一个磁盘练习程序,我希望能够生成一些随机数据来填充缓冲区,将其写入磁盘,然后在将数据读回内存后验证数据是否“正确”。
我想生成随机数据的原因是有不同的位模式被写入磁盘。目前我正在用一个字符重复填充缓冲区。
buf = (char *)malloc(sizeof(char) * buffer_size);
for(i=0;i<buffer_size;i++)
{
buf[i] = 'W';
}
writeData 函数使用 'W' 重复写入缓冲区,直到达到文件大小:
void* writeData(Data *data)
{
int i,
j,
tid;
double bytes=0,
start=0,
stop=0,
totalTime=0,
mbPerSec=0;
double iterations = data->file_size/data->buffer_size;
#pragma omp parallel for private(tid,start,stop,bytes,totalTime) reduction(+:mbPerSec)
for(i=0;i<data->num_threads;i++)
{
tid = omp_get_thread_num();
for(j=0;j<iterations;j++)
{
start = omp_get_wtime();
bytes += write(data->descriptors[tid],data->out_buf,data->buffer_size);
stop = omp_get_wtime();
totalTime = totalTime + (stop - start);
}
mbPerSec = bytes/MB_MULTIPLIER/totalTime;
}
printf("Write %.f MB/secs\n",mbPerSec);
}
readData 函数类似,但从文件描述符读取到缓冲区。是否可以运行任何算法或转换来生成许多不同的位模式,然后在将它们读回内存时对其进行验证?谢谢是提前!