实验一进程控制描述及控制Word格式.docx
- 文档编号:18926000
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:17
- 大小:38.86KB
实验一进程控制描述及控制Word格式.docx
《实验一进程控制描述及控制Word格式.docx》由会员分享,可在线阅读,更多相关《实验一进程控制描述及控制Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
SYSTEM
00
5376k
cidaemon
300k
856k
50
284k
cisvc
924k
csrss
7412k
mqtgsvc
SYSTEM
4144k
mqsvc
6632k
snmp
4340k
tcpservcs
3840k
Smss
404k
System
SystemIdleProcess
99
28k
winlogon
1684k
services
5776k
lsass
1100k
svchost
5324k
mDNSResponder
3920k
18716k
inetinfo
10608k
samservice
2460k
PGPserv
6880k
PandoraService
9148k
spoolsv
5688k
MDM
3416k
效劳(SERVICE)进程有_____5_个,填入表3-2中。
表3-2实验记录
映像名称
用户名
CPU
存使用
Svchost
LOCALSERVICE
3996k
alg
00
3960k
msdtc
NETWORKSERVICE
5228k
5048k
3888k
用户进程有___10___个,填入表3-3中。
表3-3实验记录
realsched
Administrator
356k
Bufmonitor
2988k
Ctfmon
3512k
NCClt.dll
9932k
LenRCClient
4588k
PGPtray
15100k
SogouCloud
4920k
E*plorer
10436k
Taskmgr
2708k
WINWORD
71188k
步骤2:
单击要终止的进程,然后单击"
完毕进程〞按钮。
终止进程,将完毕它直接或间接创立的所有子进程。
例如,如果终止了电子程序(如Outlook98)的进程树,则同时也终止了相关的进程,如MAPI后台处理程序mapisp32.e*e。
请将终止*进程后的操作结果与原记录数据比照,发生了什么:
________________终止QQ.e*e后QQE*ternal.e*e也会完毕,______________________
________________________________________________________________________
2.显示其他进程记数器
在"
进程〞选项卡上单击"
查看〞菜单,然后单击"
选择列〞命令。
单击要增加显示为列标题的工程,然后单击"
确定〞。
为对进程列表进展排序,可在"
进程〞选项卡上单击要根据其进展排序的列标题。
而为了要反转排序顺序,可再次单击列标题。
经过调整,"
进程〞选项卡现在显示的工程分别是:
___映像名称、PID、用户名、回话ID、CPU、CPU时间、工作设置(存)、峰值工作设置(存)、工作设置增量(存)、存〔专用工作集〕、I/O读取、I/O写入、命令行、描述
通过对"
查看〞菜单的选择操作,可以在"
任务管理器〞中更改显示选项:
·
应用程序〞选项卡上,可以按详细信息、大图标或小图标查看。
性能〞选项卡上,可以更改CPU记录图,并显示核时间。
"
显示核时间〞选项在"
CPU使用〞和"
CPU使用记录〞图表上添加红线。
红线指示核操作占用的CPU资源数量。
3.更改正在运行的程序的优先级
要查看正在运行的程序的优先级,可单击"
进程〞选项卡,单击"
查看〞菜单,单击"
选择列〞-"
根本优先级〞命令,然后单击"
确定〞按钮。
为更改正在运行的程序的优先级,可在"
进程〞选项卡上右键单击您要更改的程序,指向"
设置优先级〞,然后单击所需的选项。
更改良程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。
记录操作后所体会的结果:
改变优先级可能造成系统不稳定。
在多处理器计算机上,用户还可以给处理器指派进程,将程序或进程的执行限制在选定的处理器上,但这有可能导致总体性能的下降。
[2]WindowsServer2003进程的"
一生〞
WindowsServer2003进程的"
1)通过创立进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解WindowsServer2003进程的"
一生〞。
2)通过阅读和分析实验程序,学习创立进程、观察进程和终止进程的程序设计方法。
1.创立进程
2.正在运行的进程
3.终止进程
Windows所创立的每个进程都是以调用________CreateProcess()____________API函数开场和以调用_____________E*itProcess()_________或___________TerminateProcess()_______API函数终止。
本实验显示了创立子进程的根本框架。
该程序只是再一次地启动自身,显示它的系统进程ID和它在进程列表中的位置。
登录进入WindowsServer2003。
开场〞菜单中单击"
程序〞-"
MicrosoftVisualStudio6.0〞–"
MicrosoftVisualC++6.0〞命令,进入VisualC++窗口。
步骤3:
在工具栏单击"
翻开〞按钮,在"
翻开〞对话框中找到并翻开实验源程序3-5.cpp。
清单3-5创立子进程
//proccreate工程
#include<
windows.h>
iostream>
stdio.h>
//创立传递过来的进程的克隆过程并赋于其ID值
voidStartClone(intnCloneID)
{
//提取用于当前可执行文件的文件名
TCHARszFilename[MA*_PATH];
:
:
GetModuleFileName(NULL,szFilename,MA*_PATH);
//格式化用于子进程的命令行并通知其E*E文件名和克隆ID
TCHARszCmdLine[MA*_PATH];
sprintf(szCmdLine,"
\〞%s\〞%d〞,szFilename,nCloneID);
//用于子进程的STARTUPINFO构造
STARTUPINFOsi;
ZeroMemory(reinterpret_cast<
void*>
(&
si),sizeof(si));
si.cb=sizeof(si);
//必须是本构造的大小
//返回的用于子进程的进程信息
PROCESS_INFORMATIONpi;
//利用同样的可执行文件和命令行创立进程,并赋于其子进程的性质
BOOLbCreateOK=:
CreateProcess(
szFilename,//产生这个E*E的应用程序的名称
szCmdLine,//告诉其行为像一个子进程的标志
NULL,//缺省的进程平安性
NULL,//缺省的线程平安性
FALSE,//不继承句柄
CREATE_NEW_CONSOLE,//使用新的控制台
NULL,//新的环境
NULL,//当前目录
&
si,//启动信息
pi);
//返回的进程信息
//对子进程释放引用
if(bCreateOK)
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
intmain(intargc,char*argv[])
//确定进程在列表中的位置
intnClone(0);
if(argc>
1)
//从第二个参数中提取克隆ID
sscanf(argv[1],"
%d〞,&
nClone);
//显示进程位置
std:
cout<
<
"
ProcessID:
<
GetCurrentProcessId()
CloneID:
nClone
endl;
//检查是否有创立子进程的需要
constintc_nCloneMa*=25;
if(nClone<
C_nCloneMa*)
//发送新进程的命令行和克隆号
StartClone(++nClone);
//在终止之前暂停一下(l/2秒)
Sleep(500);
return0;
步骤4:
Build〞菜单中的"
pile3-5.cpp〞命令,系统显示:
Thisbuildmandrequiresanactiveprojectworkspace.Wouldyouliketo
createadefaultprojectworkspace"
(build命令需要一个活动的工程工作空间。
你是否希望建立一个缺省的工程工作空间?
)
是〞按钮确认。
系统对3-5.cpp进展编译。
步骤5:
编译完成后,单击"
Build3-5.e*e〞命令,建立3-5.e*e可执行文件。
操作能否正常进展?
如果不行,则可能的原因是什么?
____不能正确运行,因为程序中出现了很多的语法和拼写方面的错误__________________________________________________________
步骤6:
E*ecuteProgram〞(执行程序)按钮,或者按Ctrl+F5键,或者单击"
E*ecute3-5.e*e〞命令,执行3-5.e*e程序。
步骤7:
按Ctrl+S键可暂停程序的执行,按Ctrl+Pause(Break)键可终止程序的执行。
清单3-5展示的是一个简单的使用CreateProcess()API函数的例子。
首先形成简单的命令行,提供当前的E*E文件的指定文件名和代表生成克隆进程的。
大多数参数都可取缺省值,但是创立标志参数使用了:
___________________CREATENEWCONSOLE_____________________________________
标志,指示新进程分配它自己的控制台,这使得运行例如程序时,在任务栏上产生许多活动标记。
然后该克隆进程的创立方法关闭传递过来的句柄并返回main()函数。
在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。
CreateProcess()函数有____10____个核心参数?
本实验程序中设置的各个参数的值是:
a.__szFilename_________________________________________;
b.___szCmdLine_______________________________________;
c.____NULL_______________________________________;
d.____NULL______________________________________;
e._____FALSE_______________________________________;
f._____CREATE_NEW_CONSOLE_______________________________;
g.____NULL_______________________________________;
h.____NULL_______________________________________;
i._____&
si________________________________________;
j._____&
pi_______________________________________。
程序运行时屏幕显示的信息是:
2.正在运行的进程
本实验的程序中列出了用于进程信息查询的API函数GetProcessVersion()与GetVersionE*()的共同作用,可确定运行进程的操作系统的版本号。
步骤8:
在VisualC++窗口的工具栏中单击"
翻开〞对话框中找到并翻开实验源程序3-6.cpp。
清单3-6使用进程和操作系统的版本信息
//version工程
//利用进程和操作系统的版本信息的简单例如
voidmain()
//提取这个进程的ID号
DWORDdwIdThis=:
GetCurrentProcessId();
//获得这一进程和报告所需的版本,也可以发送0以便指明这一进程
DWORDdwVerReq=:
GetProcessVersion(dwIdThis);
WORDwMajorReq=(WORD)dwVerReq>
16);
WORDwMinorReq=(WORD)dwVerReq&
0*ffff);
dwIdThis
requiresOS:
wMajorReq<
wMinorReq<
std:
//设置版本信息的数据构造,以便保存操作系统的版本信息
OSVERSIONINFOE*osvi*;
ZeroMemory(&
osvi*,sizeof(osvi*));
osvi*.dwOSVersionInfoSize=sizeof(osvi*);
//提取版本信息和报告
GetVersionE*(reinterpret_cast<
LPOSVERSIONINFO>
osvi*));
RunningonOS:
osvi*.dwMajorVersion<
.〞
osvi*.dwMinorVersion<
//如果是NTS(WindowsServer2003)系统,则提高其优先权
if(osvi*.dwPlatformld==VER_PLATFORM_WIN32_NT&
&
osvi*.dwMajorVersion>
=5)
//改变优先级
SetPriorityClass(
GetCurrentProcess(),//利用这一进程
HIGH_PRIORITY_CLASS);
//改变为high
//报告给用户
TaskManagershouldnownowindicatethis〞
processishighpriority.〞<
步骤9:
pile3-6.cpp〞命令,再单击"
系统对3-6.cpp进展编译。
步骤10:
Build3-6.e*e〞命令,建立3-6.e*e可执行文件。
__不能正常运行,因为程序中出现许多语法和拼写方面的错误_______________________________________________________________________
步骤11:
E*ecuteProgram〞(执行程序)按钮,执行3-6.e*e程序。
运行结果:
当前PID信息:
___5310OS:
00___________________________________
当前操作系统版本:
__6.1_____________________________________________________
系统提示信息:
_TaskManagershouldnownowindicatethisprocessishighpriority.______
_______________________________________________________________________
清单3-6中的程序向读者说明了如何获得当前的PID和所需的进程版本信息。
为了运行这一程序,系统处理了所有的版本不兼容问题。
接着,程序演示了如何使用GetVersionE*()API函数来提取OSVERSIONINFOE*构造。
这一数据块中包括了操作系统的版本信息。
其中,"
OS:
5.0〞表示当前运行的操作系统是:
________________WindowsServer2003_______________________________
清单3-6的最后一段程序利用了操作系统的版本信息,以确认运行的是WindowsServer2003。
代码接着将当前进程的优先级提高到比正常级别高。
步骤12:
单击Ctrl+Alt+Del键,进入"
Windows任务管理器〞,在"
应用程序〞选项卡中右键单击"
3-6〞任务,在快捷菜单中选择"
转到进程〞命令。
Windows任务管理器〞的"
进程〞选项卡中,与"
3-6〞任务对应的进程映像名称是(为什么?
):
_____________VCSPAWN.E*E___________________
右键单击该进程名,在快捷菜单中选择"
设置优先级〞命令,可以调整该进程的优先级,如设置为"
高〞后重新运行3-6.e*e程序,屏幕显示有变化吗?
为什么?
______PID信息变为4488OS:
00_________________________
除了改变进程的优先级以外,还可以对正在运行的进程执行几项其他的操作,只要获得其进程句柄即可。
SetProcessAffinityMask()API函数允许开发人员将线程映射到处理器上;
SetProcessPriorityBoost()API可关闭前台应用程序优先级的提升;
而
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 进程 控制 描述
![提示](https://static.bdocx.com/images/bang_tan.gif)