实验1进程的控制与描述.docx
《实验1进程的控制与描述.docx》由会员分享,可在线阅读,更多相关《实验1进程的控制与描述.docx(13页珍藏版)》请在冰点文库上搜索。
实验1进程的控制与描述
实验1进程的控制与描述
1.1Windows任务管理器的进程管理
1.1.1背景知识
Windows的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。
使用任务管理器.可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。
也可以使用多个参数评估正在运行的进程的活动,以及查看CPU和内存使用情况的图形和数据。
其中:
(1)“应用程序”选项卡显示正在运行程序的状态,用户能够结束、切换或者启动程序。
(2)“进程”选项卡显示正在运行的进程信息。
例如,可以显示关于CPU和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。
(3)“性能”选项卡显示计算机动态性能,包括CPU和内存使用情况的图表,正在运行的句柄、线程和进程的总数、物理、核心和认可的内存总数(KB)等。
1.1.2实验目的
通过在windows任务管理器中对程序进程进行响应的管理操作系统进程管理的概念,学习观察操作系统运行的动态性能。
1.1.3工具/准备工作
在开始本实验之前,请回顾教科书的相关内容。
需要准备一台运行windows7操作系统的计算机。
1.1.4实验内容与步骤
启动并进入Windows环境,按Ctrl+A1t+DeL键,或者右键单击任务栏,快捷菜单中单击“任务管理器”,打开“任务管理器”窗口。
在本次实验中,你使用的操作系统版本是:
在当前机器中,由你打开、正在运行的应用程序有:
Windows“任务管理器”的窗口由个选项卡组成,分别是:
当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察):
(1)使用任务管理器终止进程
步骤1:
单击“进程”选项卡,一共显示个进程。
请试着区分一下,其中:
系统(system)进程有个,填入表2-1中。
表2-1实验记录
映像名称
用户名
CPU
内存使用
服务(Service)进程有个,填入表2-2中。
表2-2实验记录
映像名称
用户名
CPU
内存使用
用户进程有个,填入表2-3中。
表2-3实验记录
映像名称
用户名
CPU
内存使用
提示:
在Windows7的“任务管理器”中,“进程”选项卡增加了一个“用户名”栏,其中区分了SYSTEM、NETWORKSERVICE、LOCALSERVICE和用户的不同进程类别。
步骤2:
单击要终止的进程,然后单击“结束进程”按钮。
提示:
终止进程时要小心。
终止进程有可能导致不希望发生的结果,包括数据丢失和系统不稳定等,因为在被终止前,进程将没有机会保存其状态和数据。
如果结束应用程序,您将丢失来保存的数据。
如果结束系统服务,系统的某些部分可能无法正常工作。
终止进程,将结束它直接或间接创建的所有子进程。
请将终止某进程后的操作结果与原记录数据对比,发生了什么?
(2)显示其他进程计数器
在“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令。
单击要增加显示为列标题的项目,然后单击“确定”。
为对进程列表进行排序,可在“进程”选项卡上单击要根据其进行排序的列标题。
而为了要反转排序顺序,可再次单击列标题。
经过调整,“进程”选项卡现在显示的项目分别是:
通过对“查看”菜单的选择操作,可以在“任务管理器”中更改显示选项:
•在“应用程序”选项卡上,可以按详细信息、大图标或小图标查看。
•在“性能”选项卡上.可以更改CPU记录图,并显示内核时间。
“显示内核时间”选项在“CPU使用”和“CPU使用记录”图表上添加红线。
红线指示内核操作占用的CPU资源数量。
(3)更改正在运行的程序的优先级
要查看正在运行的程序的优先级.可单击“进程”选项卡,单击“查看”菜单,单击“选择列”、“基本优先级”,然后单击“确定”按钮。
为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项。
更改进程的优先级可以便其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。
记录操作后所体会的结果:
在多处理器计算机上,用户还可以给处理器指派进程,将程序或进程的执行限制在选定的处理器上,但这有可能导致总体性能的下降。
实验总结
1.2Windows编程
1.2.2背景知识
WindowsXP是以NT技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,Windows的服务通常要向系统用户提供所需功能。
当C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main()、ServiceMain()或WinMain()函数的低级入口点。
机器代码中包括控制逻辑,它所做的事包括跳转到WindowsAPI函数,进行计算或向磁盘写入数据等。
2.2.2实验目的
通过对Windows编程,进一步熟悉操作系统的基本概念,较好地理解Windows的结构。
2.2.3工具/准备工作
在开始本实验之前.请回顾教科书的相关内容。
您需要做以下准备;
•一台运行Windows7操作系统的计算机
•计算机中需安装VisualC++6.0专业版或企业版
2.2.4实验内容与步骤
(1)控制台程序
先来创建一个名为“Hello,world”的应用程序。
步骤1:
登录进入Windows7;
步骤2:
打开VC++环境,输入相应代码段:
程序2-1个简单的Windows控制台应用程序
//hello项目
#include
voidmain()
{
std:
:
cout<<"Hello,Windows7"<:
endl;
}
步骤3:
保存,编译,链接,正常后运行
操作能否正常进行?
如果不行,原因是什么?
步骤4:
运行Hello.exe程序,产生用户键入的一行文字。
运行结果(如果运行不成功,原因是什么?
):
(2)GUI应用程序
在下面的实验中,C++编译器创建一个GUI应用程序,WinMain()方法.这是GUI类型的应用程序的标准入口点。
步骤1:
打开VC++环境,新建空白源程序文件。
程序2-2:
Windows的GUI应用程序
//msgbox项目
#include//标准的include
//告诉连接器与包括MessageBoxAPI函数的user32库进行连接
#pragmacomme(lib,"user32.lib")
//这是一个可以弹出信息框然后退出的简单的应用程序
iAPIENTRYWinMain(HINSTANCE/*hInstance*/,
HINSTANCE/*hPrevInstance*/,
LPSTR/*lpCmdLine*/,
i/*nCmdShow*/)
{
:
:
MessageBox(
NULL,//没有父窗口
"Hello,Windows",//消息框中的文本
"Greetings",//消息框标题
MB_OK);//其中只有一个OK按钮
//返回0以便通知系统不进入消息循环
return(0);
}
步骤2:
对程序进行编辑改错、链接,产生1-2.exe文件:
/*对程序的说明*/:
/*编程中出现问题。
说,errorLNK2001:
unresolvedexternalsymbol_main;
[Project] --> [Settings] --> 选择"Link"属性页,
在Project Options中将/subsystem:
console改成/subsystem:
windows*/
在程序2-2的GUI应用程序中,首先需要window.h头文件,以便获得传送给WinMain()和MesssageBox()API函数的数据类型定义。
接着的pragma指令指示编译器/连接器找到User32.LIB库文件并将其与产生的EXE文件连接起来。
这样就可以运行简单的命令行命令CLMsgBox.CPP来创建这一应用程序,如果没有pragma指令,则MessageBox()API函数就成为未定义的了。
这一指令是VisuaIStudioC++编译器特有的。
接下来是Winmain()方法。
其中有四个由实际的低级入口点传递来的参数,hInstance参数用来装入与代码相连的图标或位图一类的资源,无论何时,都可用GetModuleHandle()API函数将这些资源提取出来。
系统利用实例句柄来指明代码和初始的数据装在内存的何处。
句柄的数值实际上是EXE文件映像的基地址,通常为0x00400000。
下一个参数hPrevInstance是为向后兼容而设的,现在系统将其设为NULL。
应用程序的命令行(不包括程序的名称)是lpCmdLine参数。
另外,系统利用nCmdShow参数告诉应用程序如何显示它的主窗口(选项包括最小化、最大化和正常)。
最后,程序调用MessageBox()API函数并退出。
如果在进入消息循环之前就结束运行的话,最后必须返回0。
运行结果(试将其中的信息与程序2-1程序的运行结果进行比较):
在右边输入框输入文件名“File”及保存位置“Location”,点击OK按钮。
做好后。
正常关闭“WorkSpace”。