资源简介
陈向群老师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语言实现操作系统中生产者消费者
- 动态内存分配模拟.cpp
- 操作系统 短进程调度算法 c语言文档
- 操作系统课程设计SPOOLING技术C语言版
- 北京林业大学操作系统B实验
- 操作系统模拟Shell课程设计报告
- 操作系统实验 生产者消费者 PV操作
- 生产者消费者问题C/C++源程序
- 操作系统 作业调度算法FCFS SJF HRN C语
- 操作系统 C++ 页面置换算法含实验报告
- 优先级和时间片轮转调度实验算法c语
- 操作系统 缓冲池 C++
- 操作系统处理机作业-电梯调度模拟
- 操作系统实验 循环首次适应算法C
- 单处理器系统的进程调度+操作系统(
- 一个简单的文件系统操作系统课程设
- 文件系统 操作系统实验 C++
- 操作系统C语言实现银行家算法,键盘
- 操作系统 课程设计 C++ 读者写着问题
- 操作系统 课程设计 C++ 模拟文件系统
- 分段式管理系统
- 操作系统课程设计 文件管理 C C++
- 操作系统课程设计——多线程同步演
- 文件系统的用户界面[含答案]
- 进程管理和调度的算法实现
- 用C#和C++实现的进程调度算法程序操作
- 操作系统实验--电梯调度 VC++实现
评论
共有 条评论