• 大小: 14KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: C/C++
  • 标签: 操作系统  陈向群  

资源简介

陈向群老师2011-2012学年的操作系统课程的实习之一 可以对对文件系统有一定的了解

资源截图

代码片段和文件信息

// QuickFileSystem.cpp
//
#include 
#include 
#include 
#include 
#include
#include
#include
using namespace std;
/**
* 计量结构
*/
struct LogInfo
{
DWORD m_TotalTime; // 读写数据总时间
long m_readCount; // 读的次数
long m_writeCount; // 写的次数
long m_readTotalNumber; // 读数据总量
long m_writeTotalNumber;// 写数据总量
DWORD m_f1TotalTime; // f1操作总时间
long m_f1Count; // f1操作次数
DWORD m_f2TotalTime; // f2操作总时间
long m_f2Count; // f2操作次数
};
/* 定义变量 */
// 每秒多少CPU Performance Tick
LARGE_INTEGER m_liPerfFreq={0};
//测试文件名
char* testFileName = “dummy.dat“;
//Q1 Q2值设置文件名
char* Q1Q2FileName = “Q1Q2.conf“;
//大约156M大小文件
long g_nCount=100*1024*1024;
//Q1为读写概率
//概率以100为基准的整数值
int Q1=70;
//Q2为f1和f2方法的执行概率。
int Q2=70;
//定义缓冲区的大小,这里设为1024字节
#define BUFFER_SIZE 1024
//这里的缓冲区被定义成char型
char * buffer;
//预置缓冲区,用于模拟无关操作
char * pre_buffer;
/* 显示程序作者信息 */
void showAuthorInfo();
/* 初始化相关变量 */
void initVar();
/* 初始化计量结构体 */
void initLogInfo(LogInfo* logInfo);
/* 获取数据文件大小 */
long GetFileSize(char *filename);
/* 创建数据文件 */
bool createDataFile(char* szFileNamelong g_nCount);
/* 初始化数据文件 */
void initDataFile();
/* 设置参数值Q1Q2 */
void initQ1Q2();
/* 循环处理 */
void BatchRandomAccessFile(DWORD accessType);
/* 子过程处理 */
void RandomAccessFile(DWORD accessTypeLogInfo* logInfo);
/* 根据概率q,随机判断是否命中 */
bool AssertHit(int q);
/* f1函数:处理读取的缓存数据 */
void f1(char* bufDWORD NumberOfBytesRead);
/* f2函数:处理与缓存无关数据 */
void f2(DWORD NumberOfBytesRead);
/* 打印计量信息 */
void printLogInfo(LogInfo* logInfo);
/* 精确计算时间 */
DWORD CalTime(LARGE_INTEGER lstartLARGE_INTEGER lend);
int main(int argc char* argv[])
{
/* 显示程序作者信息 */
showAuthorInfo();
/* 初始化相关变量 */
initVar();
/* 初始化数据文件 */
initDataFile();
/* 设置参数值Q1Q2 */
initQ1Q2();
/* 无缓存模式处理 */
printf(“\n==== 无缓存模式处理 ===\n“);
BatchRandomAccessFile(FILE_FLAG_NO_BUFFERING);
printf(“============================\n“);
/* 高速缓存模式处理 */
printf(“\n==== 高速缓存模式处理 ===\n“);
BatchRandomAccessFile(FILE_FLAG_SEQUENTIAL_SCAN);
printf(“============================\n“);
/* 异步模式处理 */
printf(“\n==== 异步模式处理 ===\n“);
BatchRandomAccessFile(FILE_FLAG_NO_BUFFERING | FILE_FLAG_OVERLAPPED);
printf(“============================\n“);
system(“pause“);
return 0;
}
/****************************************/
/* 显示程序作者信息 */
/****************************************/
void showAuthorInfo(){
cout<<“==================================================================“<cout<<“ 作业4:快速文件系统 “<cout<<“ 学生:XXXXXXX “<cout<<“ 指导教师:XXXXXXX “<cout<<“==================================================================“<}
/****************************************/
/* 初始化变量 */
/****************************************/
void initVar(){
//分配缓冲区
buffer = new char[BUFFER_SIZE];
//分配缓冲区
pre_buffer = new char[BUFFER_SIZE];
//初始化缓冲区里面内容
srand((unsigned int)time(0));//随机取种 以当前时间取种
for (int i=0;i{
pre_buffer[i]=33+rand()%93;/

评论

共有 条评论