操作系统实验 实验1进程描述与控制Word格式文档下载.docx
《操作系统实验 实验1进程描述与控制Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统实验 实验1进程描述与控制Word格式文档下载.docx(38页珍藏版)》请在冰豆网上搜索。
当前机器中由你打开,正在运行的应用程序有:
1)Microsoft_Word
Windows“任务管理器”的窗口由4个选项卡组成,分别是:
1)应用程序
2)进程
3)性能
4)用户
当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察):
1)映像名称
2)用户名
3)CPU
4)内存使用
(1)使用任务管理器终止进程
步骤1:
单击“进程”选项卡,一共显示了__48个进程。
请试着区分一下,其中:
系统(SYSTEM)进程有___23___个,填入表3.1中。
表3.1实验记录
映像名称
用户名
CPU
内存使用
Jqs.exe
SYSTEM
1.4M
Sqlserver.exe
3.8M
Msmdsrv.exe
6.3M
Svchost.exe
4.4M
注:
在Windows2000中,“用户名”需要自己判断。
这一点,在WindowsXP中有了改进。
服务(SERVICE)进程有_5_个,填入表3.2中。
表3.2实验记录
LOCALSERVICE
4.6M
alg.exe
3.7M
NETWORKSERVICE
4.5M
3.2M
Sqlservr.exe
用户进程有__1__个,填入表3.3中。
表3.3实验记录
MicrosoftOfficeWord
0.5%
20.2M
提示:
在WindowsXP的“任务管理器”中,“进程”选项卡增加了一个“用户名”栏目,其中区分了SYSTEM、NETWORKSERVICE、LOCALSERVICE和用户的不同进程类别。
步骤2:
单击要终止的进程,然后单击“结束进程”按钮。
注意:
终止进程时要小心。
终止进程有可能导致不希望发生的结果,包括数据丢失和系统不稳定等。
因为在被终止前,进程将没有机会保存其状态和数据。
如果结束应用程序,您将丢失未保存的数据。
如果结束系统服务,系统的某些部分可能无法正常工作。
终止进程,将结束它直接或间接创建的所有子进程。
请将终止某进程后的操作结果与原记录数据对比,发生了什么:
___cpu占用率变低,内存占用率变低
(2)显示其他进程记数器
在“进程”选项卡上单击“查看”菜单,然后单击“选择列”命令。
单击要增加显示为列标题的项目,然后单击“确定”。
为对进程列表进行排序,可在“进程”选项卡上单击要根据其进行排序的列标题。
而为了要反转排序顺序,可再次单击列标题。
请记录:
经过调整,“进程”选项卡现在显示的项目分别是:
____________________________________________________________________
________________________________________________________________________
通过对“查看”菜单的选择操作,可以在“任务管理器”中更改显示选项:
·
在“应用程序”选项卡上,可以按详细信息、大图标或小图标查看。
在“性能”选项卡上,可以更改CPU记录图,并显示内核时间。
“显示内核时间”选项在“CPU使用”和“CPU使用记录”图表上添加红线。
红线指示内核操作占用的CPU资源数量。
(3)更改正在运行的程序的优先级
要查看正在运行的程序的优先级,可单击“进程”选项卡,单击“查看”菜单,单击“选择列”>
“基本优先级”命令,然后单击“确定”。
为更改正在运行的程序的优先级,可在“进程”选项卡上右键单击您要更改的程序,指向“设置优先级”,然后单击所需的选项。
更改进程的优先级可以使其运行更快或更慢(取决于是提升还是降低了优先级),但也可能对其他进程的性能有相反的影响。
操作完成后你的体会是:
每个进程都是有多个线程组成的,进程终止,线程随之终止,释放内存;
多处理器计算机上,用户还可以给处理器指派进程,将程序或进程的执行限制在选定的处理器上,但这有可能导致总体性能的下降。
3.实验总结
程序以进程的方式在计算机内运行,各个进程都会占用cpu,但每个进程
不会一直霸占着cpu,而是每个进程会分配很短的时间给cpu,当时间一到cpu会执行下一个进程,因此计算机给我们的感觉是多个程序同时执行,其实不然
4.实验评价(教师)
3.1.3阅读与思考:
手机操作系统介绍(之一)
1.WindowsMobile系列手机操作系统
WindowsMobile系列操作系统是在微软计算机的Windows操作系统上变化而来的,因此,它们的操作界面非常相似,熟悉计算机Windows系列操作系统的朋友一看到WindowsMobile系列的操作系统就一般会认得它是出于微软之手。
WindowsMobile系列操作系统具有功能更强大,多数具备了音频、视频文件播放、上网冲浪、MSN聊天、电子邮件收发等功能。
而且,支持该操作系统的智能手机多数都采用了英特尔嵌入式处理器,主频比较高,另外,采用该操作系统的智能手机在其它硬件配置(如内存、储存卡容量等)上也较采用其它操作系统的智能手机要高出许多,因此性能比较强劲,操作起来速度会比较快。
但是,此系列手机也有一定的缺点,如因配置高、功能多而产生耗电量大、电池续航时间短、硬件采用成本高等缺点。
WindowsMobile系列操作系统包括SmartPhone以及PocketPCPhone两种平台。
PocketPCphone主要用于掌上电脑型的智能手机,而SmartPhone则主要为单手智能手机提供操作系统。
(1)SmartPhone操作系统
MicrosoftSmartphone是微软基于MicrosoftWindowsCE内核开发的、为智能手机提供的一种操作系统,与使用手写笔来进行操作的智能手机不同的是,基于该操作系统的手机无需借助手写笔,只需用手机提供的键盘就能完成几乎所有的操作,因此,使用该操作系统的手机用户只需一只手操作即可。
基于Smartphone操作系统的智能手机与其它微软操作系统的智能手机在功能上并没有很大区别,多数具有MP3播放、MSN聊天、电子邮件收发等功能,无需借助手写笔来进行操作,携带方便。
目前支持该操作系统的智能手机有神达Mio8390和多普达565等.
(2)PocketPCPhone操作系统
PocketPCPhone是最为常见的微软智能手机操作系统,目前市面上绝大多数基于微软操作系统的智能手机都采用了这一操作系统,例如联想ET180、ET560、多普达696、大显CU928、多普达等智能手机。
与微软Smartphone不同的是,该操作系统主要借助手写笔来完成大部分的操作。
2.Symbian开放式操作系统
Symbian操作系统提供了灵活的应用界面(UI)框架,不但使开发者得以快速掌握必要的技术,同时还使手机制造商能够推出不同界面的产品。
Symbian系统手机可以采用多种应用界面形式:
一类在设计上很类似当前最常见的手机,即主要通过键盘进行输入的手机;
另一类是使用手写笔进行操作;
还有一类是既有键盘又有触摸屏的手机,它具有较大的屏幕和较小的键盘。
不同的输入方式和外观设计会对各款手机的主要用途产生很大的影响。
应用界面在要求上是由手机和市场决定的。
有了Symbian操作系统,手机制造商和第三方开发者就可以为上述各类手机开发出独具特色的应用界面,例如:
(1)采用数字键盘的手机(Symbians60)
此类手机需要灵活的应用界面,方便用户使用导航键(Joystick)、软按键或转点通键(Jogdial)操作,诺基亚3650和N-Gage也就是代表他们采用了Series60应用界面。
如诺基亚6600;
诺基亚7610;
诺基亚6670等。
(2)采用触摸式屏幕的手机(SymbianUIQ)
这类手机主要采用了UIQ界面,其中以索尼爱立信P802、P908为代表。
UIQ是一种可定制的基于手写笔输入的应用界面,很适合支持具有丰富多媒体功能的手机。
(3)采用完整键盘和超大彩色屏幕的手机(Symbians80)
此类手机为那些需要在办公室以外编辑信息和查看业务数据的用户提供了先进的移动通信功能。
诺基亚9300—9500个人通讯器系列是此类应用界面的典型代表。
(待续)
资料来源:
中国软件网(
3.2WindowsXP编程
3.2.1WindowsXP编程初步
WindowsXP可以识别的应用程序包括控制台应用程序、GUI应用程序和服务应用程序。
控制台应用程序可以创建GUI,GUI应用程序可以作为服务来运行,服务也可以向标准的输出流写入数据。
不同类型应用程序间的惟一重要区别是其启动方法。
WindowsXP是以NT的技术构建的,它提供了创建控制台应用程序的能力,使用户可以利用标准的C++工具,如iostream库中的cout和cin对象,来创建小型应用程序。
当系统运行时,WindowsXP的服务通常要向系统用户提供所需功能。
服务应用程序类型需要ServiceMail()函数,由服务控制管理器(SCM)加以调用。
SCM是操作系统的集成部分,负责响应系统启动以开始服务、指导用户控制或从另一个服务中来的请求。
其本身负责使应用程序的行为像一个服务。
通常,服务登录到特殊的LocalSystem账号下,此账号具有与开发人员创建的服务不同的权限。
当令C++编译器创建可执行程序时,编译器将源代码编译成OBJ文件,然后将其与标准库相链接。
产生的EXE文件是装载器指令、机器指令和应用程序的数据的集合。
装载器指令告诉系统从哪里装载机器代码。
另一个装载器指令告诉系统从哪里开始执行进程的主线程。
在进行某些设置后,进入开发者提供的main()、ServiceMain()或WinMain()函数的低级入口点。
机器代码中包括有控制逻辑,它所做的事包括跳转到WindowsAPI函数,进行计算或向磁盘写入数据等。
Windows允许开发人员将大型应用程序分为较小的、互相有关系的服务模块,即动态链接库(DLL)代码块,在其中包含应用程序所使用的机器代码和应用程序的数据。
3.2.2练习与实验
在本节“练习与实验”中,通过对WindowsXP编程,进一步熟悉操作系统的基本概念,较好地理解WindowsXP的结构。
需要准备一台运行WindowsXPProfessional操作系统的计算机,且该计算机中需安装VisualC++6.0专业版或企业版。
安装VisualC++时,请注意选择“系统变量”复选框,否则会影响到下面CL命令的使用。
(1)简单的控制台应用程序
我们先来创建一个名为“Hello”的应用程序。
登录进入WindowsXPProfessional。
在“开始”>
“所有程序”>
“附件”菜单中单击“记事本”命令,将清单3-l中的程序键入记事本中,并把代码保存为Hello.cpp。
清单3-1一个简单的WindowsXP控制台应用程序
//hello项目
#include<
iostream>
voidmain()
{
std:
:
cout<
<
“Hello,WindowsXP”<
std:
endl;
}
步骤3:
“附件”菜单中单击“命令提示符”命令,进入Windows“命令提示符”窗口,并利用简单的标准命令行:
C:
\>
CLHello.cpp
来创建可执行的Hello.EXE。
操作能否正常进行?
如果不行,则可能的原因是什么?
___能
步骤4:
运行Hello.EXE程序。
运行结果(如果运行不成功,则可能的原因是什么?
):
_
(2)GUI应用程序
在下面的实验中,C++编译器创建一个GUI应用程序,代码中包括了WinMain()方法,这是GUI类型的应用程序的标准入口点。
“附件”菜单中单击“记事本”命令,将清单3-2中的程序键入记事本中,并把代码保存为3-2.cpp。
在本书相关的实验素材可以从科学出版社网站()的下载区下载。
其中包含了在各个实验中用到的所有程序的源代码,这些源程序均通过调试运行,实验时可直接将文件输入。
希望这有助于提高实验的效率。
清单3-2WindowsXP的GUI应用程序
//msgbox项目
windows.h>
//标准的include
//告诉连接器与包括MessageBoxAPI函数的user32库进行连接
#pragmacomment(lib,“user32.lib”)
//这是一个可以弹出信息框然后退出的筒单的应用程序
intAPIENTRYWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
:
MessageBox(
NULL,//没有父窗口
“Hello,Windows2000”,//消息框中的文本
“Greetings”,//消息框标题
MB_OK);
//其中只有一个OK按钮
//返回0以便通知系统不进入消息循环
return(0);
也可以利用任何其他文本编辑器键入程序代码,如果这样,例如使用WORD来键入和编辑程序,则应该注意什么问题?
___注意中文字符;
在“命令提示符”窗口运行CL.EXE,产生3-2.EXE文件:
CL3-2.cpp
在清单3-2的GUI应用程序中,首先需要Windows.h头文件,以便获得传送给WinMain()和MessageBox()API函数的数据类型定义。
接着的pragma指令指示编译器/连接器找到User32.LIB库文件并将其与产生的EXE文件连接起来。
这样就可以运行简单的命令行命令CL3-2.CPP来创建这一应用程序,如果没有pragma指令,则MessageBox()API函数就成为未定义的了。
这一指令是VisualStudioC++编译器特有的。
接下来是WinMain()方法。
其中有四个由实际的低级入口点传递来的参数。
hInstance参数用来装入与代码相连的图标或位图一类的资源,无论何时,都可用GetModuleHandle()API函数将这些资源提取出来。
系统利用实例句柄来指明代码和初始的数据装在内存的何处。
句柄的数值实际上是EXE文件映像的基地址,通常为0x00400000。
下一个参数hPrevInstance是为向后兼容而设的,现在系统将其设为NULL。
应用程序的命令行(不包括程序的名称)是lpCmdLine参数。
另外,系统利用nCmdShow参数告诉应用程序如何显示它的主窗口(选项包括最小化、最大化和正常)。
最后,程序调用MessageBox()API函数并退出。
如果在进入消息循环之前就结束运行的话,最后必须返回0。
运行结果(试将其中的信息与清单3-1程序的运行结果进行比较):
_________________________________________
(3)进程对象
操作系统将当前运行的应用程序看作是进程对象。
利用系统提供的惟一的称为句柄(HANDLE)的号码,就可与进程对象交互。
这一号码只对当前进程有效。
本实验表示了一个简单的进程句柄的应用。
在系统中运行的任何进程都可调用GetCurrentProcess()API函数,此函数可返回标识进程本身的句柄。
然后就可在Windows需要该进程的有关情况时,利用这一句柄来提供。
将清单3-3.cpp程序键入记事本中,并把代码保存为3-3.cpp。
清单3-3获得和使用进程的句柄
清单3-4利用句柄查出进程的详细信息
//proclist项目
tlhelp32.h>
//当在用户模式和内核模式下都提供所耗时间时,在内核模式下进行所耗时间的64位计算的帮助方法
DWORDGetKernelModePercentage(constFILETIME&
ftKernel,
constFILETIME&
ftUser)
//将FILETIME结构转化为64位整数
ULONGLONGqwKernel=(((ULONGLONG)ftKernel.dwHighDateTime)<
32)+
ftKernel.dwLowDateTime;
ULONGLONGqwUser=(((ULONGLONG)ftUser.dwHighDateTime)<
ftUser.dwLowDateTime;
//将消耗时间相加,然后计算消耗在内核模式下的时间百分比
ULONGLONGqwTotal=qwKernel+qwUser;
DWORDdwPct=(DWORD)(((ULONGLONG)100*qwKernel)/qwTotal);
return(dwPct);
//以下是将当前运行进程名和消耗在内核模式下的时间百分数都显示出来的应用程序
//对当前系统中运行的进程拍取“快照”
HANDLEhSnapshot=:
CreateToolhelp32Snapshot(
TH32CS_SNAPPROCESS,//提取当前进程
0);
//如果是当前进程,就将其忽略
//初始化进程入口
PROCESSENTRY32pe;
ZeroMemory(&
pe,sizeof(pe));
pe.dwSize=sizeof(pe);
//按所有进程循环
BOOLbMore=:
Process32First(hSnapshot,&
pe);
while(bMore)
//打开用于读取的进程
HANDLEhProcess=:
OpenProcess(
PROCESS_QUERY_INFORMATION,//指明要得到信息
FALSE,//不必继承这一句柄
pe.th32ProcessID);
//要打开的进程
if(hProcess!
=NULL)
//找出进程的时间
FILETIMEftCreation,ftExit,ftKernelMode,ftUserMode;
GetProcessTimes(
hProcess,//所感兴趣的进程
&
ftCreation,//进程的启动时间(绝对的)
ftExit,//结束时间(如果有的话)
ftKernelMode,//在内核模式下消耗的时间
ftUserMode);
//在用户模式下消耗的时间
//计算内核模式消耗的时间百分比
DWORDdwPctKernel=:
GetKernelModePercentage(
ftKernelMode,//在内核模式上消耗的时间
ftUserMode);
//在用户模式下消耗的时间
//向用户显示进程的某些信息
“ProcessID:
”<
pe.th32ProcessID
<
“,EXEfile:
”<
pe.szExeFile
“,%inkernelmode:
dwPctKernel
//消除句柄
CloseHandle(hProcess);
//转向下一个进程
bMore=:
Process32Next(hSnapshot,&
清单3-4程序首先利用WindowsXP的新特性,即工具帮助库来获得当前运行的所有进程的快照。