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