操作系统实验报告三
//请求内核提供该过程所属的优先权类
DWORD dwPriority=::GetPriorityClass(hProcessThis);
//发出消息,为用户描述该类
std::cout<<"current process priority:";
switch(dwPriority)
{
case HIGH_PRIORITY_CLASS:
步骤四:将下面的程序源代码输入。
步骤五:单击Windows系统的“开始”→“运行”选项,输入cmd。
步骤六:依次输入命令为:
cd\
d://这里是存放的源程序地方,如果是放在其他地方,则利用cd命令进入源程序的地方
CL 2.cpp//对这是源程序进行编译
步骤七:若没有错误,则会自动生成2.exe和2.obj文件,双击2.exe
程序源代码如下:
#include < windows.h >
#include < iostream >
#include < stdio.h >
using namespace std;
//确定自己的优先权的简单应用程序
void main()
{
//从当前过程中提取句柄
HANDLE hProcessThis=::GetCurrentProcess();
CL 1.cpp//对这是源程序进行编程
步骤七:若没有错误,则会自动生成1.exe和1.obj文件,双击“1.exe”,即可看到结果。
程序代码如下:
# include < windows.h>
# include < stdio.h>c:\\
# pragma comment(lib,"user32.lib")
std::cout<<"High";
break;
case NORMAL_PRIORITY_CLASS:
std::cout<<"Normal";
break;
case IDLE_PRIORITY_CLASS:
std::cout<<"Idle";
break;
case REALTIME_PRIORITY_CLASS:
CL 3.cpp//对这是源程序进行编译
步骤七:若没有错误,则会自动生成3.exe和3.obj文件,双击”3.exe”
源程序代码如下:
#include < windows.h >
#include < tlhelp32.h >
#include < iostream.h >
#include < stdio.h >
//当在用户模式机内模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法
DWORD GetKernelModePercentage(const FILETIME& ftKernel,
const FILETIME& ftUser)
{
//将FILETIME结构转化为64位整数
ULONGLONG qwKernel = (((ULONGLONG)ftKernel.dwHighDateTime)
"提示", //消息框的标题
MB_OK); //其中只有一个OK按钮
//返回0以便通知系统不进入消息循环
return 0;}
5)扩展实验
1、获得和使用进程的句柄
步骤一:进入WindowsXP。
步骤二:Microsoft Visual Studio C++6.0。
步骤三:在菜单栏中单击“文件”→“新建”→“文件”→C++Source File,选择路径(如:D:\2.cpp。
bMore = ::Process32Next(hSnapshot,&pe);
}
getchar();
}
四、实验结果与数据处理
(1)(2)(3)
(4)
(5.1)
(5.2)
五、分析与讨论
通过这次的实验,我对window的进程管理有了一定的了解,不过对于程序我还是不是很了解,改这个程序改了半天都没改出来,还好最后请教了同学,最终才得以弄出结果,可见我还是有待进一步的加强的
这里,可以查看每个进程的PID,CPU使用时间,内存的使用情况,当前的进程是系统的还是用户的,每个句柄的数量,每个进程的优先级,等等。
步骤四:单击“性能”标签,在所示的“性能”选项卡中可以看到CPU的使用情况、内存的使用情况。
2)通过命令观察进程情况、
步骤一:单击“开始”→“运行”选项,输入cmd“命令提示符”下。
while(bMore)
{
//打开用于读取的过程
HANDLE hProcess = ::OpenProcess(
PROCESS_QUERY_INFORMATION, //指明要得到信息
FALSE, //不必继承这一句柄
pe.th32ProcessID); //要打开的过程
if(hProcess!=NULL)
步骤三:在菜单栏中单击“文件”→“新建”→“文件”→C++Source File,选择路径(如D:\1.cpp),并命名为1.cpp。
步骤四:将下面的程序源代码输入。
步骤五:单击Windows系统的“开始”→“运行”选项,输入cmd。
步骤六:依次输入命令为
cd\
d://这里是存放的源程序地方,如果是放在其他地方,则利用cd命令进入源程序的地方
TH32CS_SNAPPROCESS, //提取当前过程
0); //如果是当前过程,就将其忽略
//初始化过程入口
PROCESSENTRY32 pe;
::ZeroMemory(&pe,sizeof(pe));
pe.dwSize = sizeof(pe);
BOOL bMore = ::Process32First(hSnapshot,&pe);
配置:单击右键选择我的电脑的属性,修改环境变量,在用户变量上面增加:includelib,MSDevDir,path,bin及其在c盘的路径,然后在系统变量里面直接在path的后面增加bin的路径,到这里配置完成
步骤一:进入WindowsXP。
步骤二:进入Microsoft Visual Studio C++6.0。
&ftUserMode); //在用户模式下消耗的时间
//计算内核模式消耗的时间百分比
DWORD dwPctKernel = ::GetKernelModePercentage(
ftKernelMode, //在内核模式上消耗的时间
ftUserMode); //在用户模式下消耗的时间
//向用户显示进程的某些信息
六、教师评语
签名:
日期:
成绩
计算机装有Microsoft Visual Studio C++6.0专业版或企业版
三、实验内容与步骤
1)观察任务管理器
步骤一:进入WindowsXP。
步骤二:按Ctrl+Alt+Delete(或按Ctrl+Shift+Esc)键都可以调出任务管理器。
步骤三:单击“查看”→“选择列”选项,可以看到一些选项,
《操作系统原理》实验报告
实验序号: 三实验项目名称:Windows基本进程管理
学 号
0907012112
姓 名
刘秀香
专业、班
计1
实验地点
实1-307
指导教师
李远敏
实验时间
2011/9/15
一、实验目的及要求
通过观察任务管理器,来观察各个进程的动态信息
二、实验设备(环境)及要求
(1)一台WindowsXP操作系统的计算机。
{
//找出进程的时间
FILETIME ftCreation, ftKernelMode,ftUserMode,ftExit;
::GetProcessTimes(
hProcess, //所感兴趣的进程
&ftCreation, //进程的启动时间
&ftExit, //结束时间(如果有的话)
&ftKernelMode, //在内核模式下消耗的时间
步骤三:在菜单栏中单击“文件”→“新建”→“文件”→C++Source File,选择路径(如D:\3.cpp),并命名为3.cpp。
步骤四:将下面的程序源代码输入。
步骤五:单击Windows系统的“开始”→“运行”选项,输入cmd。
步骤六:依次输入命令为:
cd\
d://这里是存ut << "process ID:"<< pe.th32ProcessID
<< ",exe file:"<< pe.szExeFile
<< ", % in Kernel mode:" << dwPctKernel << endl;
//消除句柄
::CloseHandle(hProcess);
}
//转向下一个进程
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow){
::MessageBox(
NULL, //没有父窗口
"hello windows XP", //消息框中的文本显示hello windows XP