预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

XX师范学院计算机系 实验报告 (2013—2014学年第2学期) 课程名称操作系统 实验名称实验一Windows进程初识 专业计算机科学与技术 年级2011级 学号姓名 指导教师 实验日期2014.03.06 实验目的与要求: (1)学会使用VC编写基本的Win32ConsolApplication(控制台应用程序)。 (2)掌握WINDOWSAPI的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。实验设备(环境): 微机、C语言编程环境(VC++)。实验内容: (1)编写基本的Win32ConsolApplication。 (2)计算进程在核心态运行和用户态运行的时间。 实验步骤、实验结果及分析: (1)编写基本的Win32ConsolApplication 步骤1:登录进入Windows,启动VC++6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32ConsolApplication”,然后在“Projectname”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。工程名为os11 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++SourceFile”,然后在“File”处输入C/C++源程序的文件名。文件名hello 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序: 路径C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\os11\Debug E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果(如果运行不成功,则可能的原因是什么?): 程序清单如下: 清单1-1 //hello项目 #include<iostream> voidmain() { std::cout<<“Hello,Win32ConsolApplication”<<std::endl; } 运行结果如图1所示: 图1 运行成功的结果如图2所示: 图2 (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32ConsolApplication”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。文件名Test2 步骤2:在创建一个新的“Win32ConsolApplication”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。文件名Test3 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 路径C:\ProgramFiles\MicrosoftVisualStudio\MyProjects\os12\debug>test2(test3).exe 步骤4:运行结果(如果运行不成功,则可能的原因是什么?) 程序清单如下: 清单1-2核心态运行和用户态运行时间比计算 //proclist项目 #include<windows.h> #include<tlhelp32.h> #include<iostream.h> //当在用户模式机内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法 DWORDGetKernelModePercentage(constFILETIME&ftKernel, constFILETIME&ftUser) { //将FILETIME结构转化为64位整数 ULONGLONGqwKernel=(((ULONGLONG)ftKernel.dwHighDateTime) <<32)+ftKernel.dwLowDateTime; ULONGLONGqwUser=(((ULONGLONG)ftUser.dwHighDateTime) <<32)+ftUser.dwLowDateTime; //将消耗时间相加,然后计算消耗在内核模式下的时间百分比 ULONGLONGqwTotal=qwKernel+qwUser; DWORDdwPct=(DWORD)(((ULONGLONG)100*qwKernel)/qwTotal); return(dwPct); } //以下是将当前运行过程名和消耗在内核模式下的时间百分数都显示出来的应用程序 voidmain(intargc,char*argv[]) { if(argc<2) { co