1 / 15
文档名称:

实验一操作系统Windows“任务管理器”的进程管理.pdf

格式:pdf   大小:1,363KB   页数:15页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验一操作系统Windows“任务管理器”的进程管理.pdf

上传人:1781111**** 2024/5/11 文件大小:1.33 MB

下载得到文件列表

实验一操作系统Windows“任务管理器”的进程管理.pdf

相关文档

文档介绍

文档介绍:该【实验一操作系统Windows“任务管理器”的进程管理 】是由【1781111****】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【实验一操作系统Windows“任务管理器”的进程管理 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..任务管理器”的进程管理60分钟)?背景知识??实验目的??工具/准备工作??实验内容与步骤背景知识Windows2000的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。也可以使用多个参数评估正在运行的进程的活动,以及查看CPU和内存使用情况的图形和数据。其中:1)“应用程序”选项卡显示正在运行程序的状态,用户能够结束、切换或者启动程序。2)“进程”选项卡显示正在运行的进程信息。例如,可以显示关于CPU和内存使用情况、页面错误、句柄计数以及许多其他参数的信息。3)“性能”选项卡显示计算机动态性能,包括CPU和内存使用情况的图表,正在运行的句柄、线程和进程的总数,物理、核心和认可的内存总数(KB)等。实验目的通过在Windows任务管理器中对程序进程进行响应的管理操作,熟悉操作系统进程管理的概念,学****观察操作系统运行的动态性能。工具/准备工作在开始本实验之前,请回顾教科书的相关内容。需要准备一台运行Windows2000Professional操作系统的计算机。,单击Ctrl+Alt+Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。在本次实验中,你使用的操作系统版本是:_windowsXP当前机器中由你打开,正在运行的应用程序有:1)实验一-microsoftword2)操作系统电子书3)Microsoftword_:..5)__-qq空间-__Windows“任务管理器”的窗口由__4___个选项卡组成,分别是:1)应用程序__2)__进程_____3)__性能4)联网当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察):1)))))))):单击“进程”选项卡,一共显示了__40____个进程。请试着区分一下,其中:系统(SYSTEM)进程有___25___个,填入表3-1中。:..-1实验记录(SERVICE)进程有___4___个,填入表3-2中。表3-,填入表3-3中。表3-:..“任务管理器”中,“进程”选项卡增加了一个“用户名”栏目,WORKSERVICE、LOCALSERVICE和用户的不同进程类别。:单击要终止的进程,然后单击“结束进程”按钮。注意:终止进程时要小心。终止进程有可能导致不希望发生的结果,包括数据丢失和系统不稳定等。因为在被终止前,进程将没有机会保存其状态和数据。如果结束应用程序,您将丢失未保存的数据。如果结束系统服务,系统的某些部分可能无法正常工作。终止进程,将结束它直接或间接创建的所有子进程。例如,如果终止了电子邮件程序(如Outlook98)的进程树,那么同时也终止了相关的进程,。请将终止某进程后的操作结果与原记录数据对比,发生了什么:“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令。单击要增加显示为列标题的项目,然后单击“确定”。为对进程列表进行排序,可在“进程”选项卡上单击要根据其进行排序的列标题。而为了要反转排序顺序,可再次单击列标题。经过调整,“进程”选项卡现在显示的项目分别是:__印像名称用户名CPU内存使用USERI/O写…_______________________________________________________________________________________________________________________________________________通过对“查看”菜单的选择操作,可以在“任务管理器”中更改显示选项:·在“应用程序”选项卡上,可以按详细信息、大图标或小图标查看。·在“性能”选项卡上,可以更改CPU记录图,并显示内核时间。“显示内核时间”选项在“CPU使用”和“CPU使用记录”图表上添加红线。红线指示内核操作占用的CPU资源数量。,可单击“进程”选项卡,单击“查看”菜单,单击“选择列”-“基本优先级”命令,然后单击“确定”按钮。为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项。更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。记录操作后所体会的结果:__________本次试验总体较简单,但是有些烦杂但依然让我学会了很多东西。___________________________________________________________________________________________________________________________________________________:..________________________________________________________________________用户还可以给处理器指派进程,将程序或进程的执行限制在选定的处理器上,但这有可能导致总体性能的下降。:..进程的一生”120分钟)?背景知识??实验目的??工具/准备工作??()API函数开始,该函数的任务是在对象管理器子系统内初始化进程对象。每一进程都以调用ExitProcess()或TerminateProcess()API函数终止。通常应用程序的框架负责调用ExitProcess()函数。对于C++运行库来说,这一调用发生在应用程序的main()函数返回之后。()调用的核心参数是可执行文件运行时的文件名及其命令行。表3-4详细地列出了每个参数的类型和名称。表3-4CreateProcess()函数的参数参数名称使用目的LPCTSTR全部或部分地指明包括可执行代码的EXE文件的文件名lpApplivationNameLPCTSTR向可执行文件发送的参数mandLineLPSECURIITY_ATTRIB返回进程句柄的安全属性。主要指明这一句柄是否应该由UTESlpProcessAttributes其他子进程所继承LPSECURIITY_ATTRIB返回进程的主线程的句柄的安全属性UTESlpThreadAttributesBOOLbInheritHandle一种标志,告诉系统允许新进程继承创建者进程的句柄DWORD特殊的创建标志(如CREATE_SUSPENDED)的位标记dwCreationFlage向新进程发送的一套环境变量;如为null值则发送调用LPVOIDlpEnvironment者环境LPCTSTR新进程的启动目录lpCurrentDirectorySTARTUPINFOSTARTUPINFO结构,包括新进程的输入和输出配置的详lpStartupInfo情:..发送新应用程序的进程和主线程的句柄和TIONlpProcessInformationID可以指定第一个参数,即应用程序的名称,其中包括相对于当前进程的当前目录的全路径或者利用搜索方法找到的路径;mandLine参数允许调用者向新应用程序发送数据;接下来的三个参数与进程和它的主线程以及返回的指向该对象的句柄的安全性有关。然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为。经常使用的标志是CREATE_SUSPNDED,告诉主线程立刻暂停。当准备好时,应该使用ResumeThread()API来启动进程。另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口。这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。接着是CreateProcess()函数调用所需要的三个通常使用缺省值的参数。第一个参数是lpEnvironment参数,指明为新进程提供的环境;第二个参数是lpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前目录;第三个参数是STARTUPINFO数据结构所必需的,用于在必要时指明新应用程序的主窗口的外观。CreateProcess()的最后一个参数是用于新进程对象及其主线程的句柄和ID的返回值缓冲区。以PROCESS_INFORMATION结构中返回的句柄调用CloseHandle()API函数是重要的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止之前的任何未释放的资源。,则为正在系统中运行的进程。通常,这种进程使用主线程来指示它的存在。当主线程结束时,调用ExitProcess()API函数,通知系统终止它所拥有的所有正在运行、准备运行或正在挂起的其他线程。当进程正在运行时,可以查看它的许多特性,其中少数特性也允许加以修改。首先可查看的进程特性是系统进程标识符(PID),可利用GetCurrentProcessId()API函数来查看,与GetCurrentProcess()相似,对该函数的调用不能失败,但返回的PID在整个系统中都可使用。其他的可显示当前进程信息的API函数还有GetStartupInfo()和GetProcessShutdownParameters(),可给出进程存活期内的配置详情。通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName()和mandLine(),可以给出用在CreateProcess()中的参数以启动应用程序。在创建应用程序时可使用的另一个API函数是IsDebuggerPresent()。可利用API函数GetGuiResources()来查看进程的GUI资源。此函数既可返回指定进程中的打开的GUI对象的数目,也可返回指定进程中打开的USER对象的数目。进程的其他性能信息可通过GetProcessIoCounters()、GetProcessPriorityBoost()、GetProcessTimes()和GetProcessWorkingSetSize()API得到。以上这几个API函数都只需要具有PROCESS_QUERY_INFORMATION访问权限的指向所感兴趣进程的句柄。另一个可用于进程信息查询的API函数是GetProcessVersion()。此函数只需感兴趣进程的PID(进程标识号)。本实验程序清单3-6中列出了这一API函数与GetVersionEx()的共同作用,可确定运行进程的系统的版本号。()或者TerminateProcess()函数结束的。但最好使用前者而不要使用后者,因为进程是在完成了它的所有的关闭“职责”之后以正常的终止方式来调用前者的。而外部进程通常调用后者即突然终止进程的进行,由于关闭时的途径不太正常,有可能引起错误的行为。TerminateProcess()API函数只要打开带有PROCESS_TERMINATE访问权的进程对象,就可以终止进程,并向系统返回指定的代码。这是一种“野蛮”的终止进程的方式,但是有:..如果开发人员确实有机会来设计“谋杀”(终止别的进程的进程)和“受害”进程(被终止的进程)时,应该创建一个进程间通讯的内核对象——如一个互斥程序——这样一来,“受害”进程只在等待或周期性地测试它是否应该终止。1)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解Windows2000进程的“一生”。2)通过阅读和分析实验程序,学****创建进程、观察进程和终止进程的程序设计方法。工具/准备工作在开始本实验之前,请回顾教科书的相关内容。需要做以下准备:1)一台运行Windows2000Professional操作系统的计算机。2)计算机中需安装VisualC++。:Windows所创建的每个进程都是以调用__________CreateProcess()_________API函数开始和以调用____ExitProcess()_______或______TerminateProcess()________API函数终止。。该程序只是再一次地启动自身,显示它的系统进程ID和它在进程列表中的位置。:登录进入Windows2000Professional。步骤2:在“开始”菜单中单击“程序”-“”“MicrosoftVisualC++”命令,进入VisualC++窗口。步骤3:在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-。清单3-5创建子进程//reate项目#include<>#include<iostream>#include<>//创建传递过来的进程的克隆过程并赋于其ID值voidStartClone(intnCloneID){//提取用于当前可执行文件的文件名:..TCHARszFilename[MAX_PATH];::GetModuleFileName(NULL,szFilename,MAX_PATH);//EXE文件名和克隆IDTCHARszCmdLine[MAX_PATH];”%s”%d”,szFilename,nCloneID);//用于子进程的STARTUPINFO结构STARTUPINFOsi;::ZeroMemory(reinterpret_cast<void*>(&si),sizeof(si));=sizeof(si);//必须是本结构的大小//返回的用于子进程的进程信息PROCESS_INFORMATIONpi;//利用同样的可执行文件和命令行创建进程,并赋于其子进程的性质BOOLbCreateOK=::CreateProcess(szFilename,//产生这个EXE的应用程序的名称szCmdLine,//告诉其行为像一个子进程的标志NULL,//缺省的进程安全性NULL,//缺省的线程安全性FALSE,//不继承句柄CREATE_NEW_CONSOLE,//使用新的控制台NULL,//新的环境NULL,//当前目录&si,//启动信息&pi);//返回的进程信息//对子进程释放引用if(bCreateOK){::CloseHandle();::CloseHandle();}}intmain(intargc,char*argv[]){//确定进程在列表中的位置intnClone(0);if(argc>1){//从第二个参数中提取克隆ID::sscanf(argv[1],“%d”,&nClone);}//显示进程位置std::cout<<“ProcessID:“<<::GetCurrentProcessId()<<“,CloneID:“<<nClone<<std::endl;//检查是否有创建子进程的需要constintc_nCloneMax=25;if(nClone<C_nCloneMax){//发送新进程的命令行和克隆号StartClone(++nClone);}//在终止之前暂停一下(l/2秒)::Sleep(500);return0;}:..:”pile3-”命令,系统显示:?(build命令需要一个活动的项目工作空间。你是否希望建立一个缺省的项目工作空间?)单击“是”按钮确认。系统对3-。步骤5:编译完成后,单击“Build”菜单中的“Build3-”命令,建立3-。操作能否正常进行?如果不行,则可能的原因是什么?不能正常运行,因为程序中出现许多语法和拼写方面的错误__________________________________________________________________________步骤6:在工具栏单击“ExecuteProgram”(执行程序)按钮,或者按Ctrl+F5键,或者单击“Build”菜单中的“Execute3-”命令,执行3-。步骤7:按Ctrl+S键可暂停程序的执行,按Ctrl+Pause(Break)键可终止程序的执行。清单3-5展示的是一个简单的使用CreateProcess()API函数的例子。首先形成简单的命令行,提供当前的EXE文件的指定文件名和代表生成克隆进程的号码。大多数参数都可取缺省值,但是创建标志参数使用了:_______________CREATE_NEW_CONSOLE______________________________标志,指示新进程分配它自己的控制台,这使得运行示例程序时,在任务栏上产生许多活动标记。然后该克隆进程的创建方法关闭传递过来的句柄并返回main()函数。在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。CreateProcess()函数有________个核心参数?本实验程序中设置的各个参数的值是:;;;;;;;;&si________________________________________;&pi_______________________________________。程序运行时屏幕显示的信息是::部分程序在VisualC++环境完成编译、链接之后,还可以在Windows2000的“命令提示符”状态下尝试执行该程序,看看与在可视化界面下运行的结果有没有不同?为什么?()与:..:在VisualC++窗口的工具栏中单击“打开”按钮,在“打开”对话框中找到并打开实验源程序3-。清单3-6使用进程和操作系统的版本信息//version项目#include<>#include<iostream>//利用进程和操作系统的版本信息的简单示例voidmain(){//提取这个进程的ID号DWORDdwIdThis=::GetCurrentProcessId();//获得这一进程和报告所需的版本,也可以发送0以便指明这一进程DWORDdwVerReq=::GetProcessVersion(dwIdThis);WORDwMajorReq=(WORD)dwVerReq>16);WORDwMinorReq=(WORD)dwVerReq&0xffff);<<“,requiresOS:“<<wMajorReq<<wMinorReq<<std::endl;//设置版本信息的数据结构,以便保存操作系统的版本信息OSVERSIONINFOEXosvix;::ZeroMemory(&osvix,sizeof(osvix));=sizeof(osvix);//提取版本信息和报告::GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osvix));std::cout<<“RunningonOS:“<<<<“.”<<<<std::endl;//如果是NTS(Windows2000)系统,则提高其优先权if(==VER_PLATFORM_WIN32_NT&&>=5){//改变优先级::SetPriorityClass(::GetCurrentProcess(),//利用这一进程HIGH_PRIORITY_CLASS);//改变为high//报告给用户std::cout<<“TaskManagershouldnownowindicatethis”“processishighpriority.”<<std::endl;}}步骤9:单击“Build”pile3-”命令,再单击“是”按钮确认。系统对3-。步骤10:编译完成后,单击“Build”菜单中的“Build3-”命令,建立3-。操作能否正常进行?如果不行,则可能的原因是什么?_______不能正常运行,因为程序中出现许多语法和拼写方面的错误_________________________________________________________________________________步骤11:在工具栏单击“ExecuteProgram”(执行程序)按钮,执行3-。运行结果::..信息:______5310OS:00________________________________________当前操作系统版本::。为了运