资源简介
陈向群老师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;/
- 上一篇:DNS中继服务器C++版
- 下一篇:RANSAC算法 C++实现
相关资源
- 操作系统c语言模拟文件管理系统844
- 操作系统课设 读写者问题 c语言实现
- ROS操作系统入门讲义
- Linux操作系统下C语言编程从零开始
- 操作系统存储管理实验报告c/c++
- 操作系统课程设计(银行家算法)附
- 现代操作系统第三版高清
- C++操作系统课设-进程管理
- 哲学家进餐问题的c++模拟实现
- 操作系统课程设计(生产者-消费者存
- 操作系统——5个实验.zip
- 操作系统进程管理实验
- 操作系统—页面置换算法C++实现
- 操作系统 内存管理 模拟 图形界面
- 银行家算法 mfc 含源代码 界面 操作系
- 操作系统生产者消费者问题MFC动态实
- 操作系统课程设计:Windows 命令接口之
- 操作系统课程大作业-文件管理系统
- C语言实现最低松弛度优先算法源代码
- 操作系统信号量PV经典问题:沉睡的理
- 基于C++的银行家算法模拟实现
- 生产者消费者问题源码-MFC实现-进程模
- 操作系统实验 进程调度 高响应比优先
- 操作系统文件管理C++代码实现
- 嗜睡的理发师进程同步与实现c++
- 安徽大学操作系统实验八基于扫描的
- 安徽大学操作系统实验四主存空间的
- 操作系统——银行家算法
- 操作系统_生产者消费者c++、mfc实现
- 磁盘调度c++模拟实现计算机操作系统
评论
共有 条评论