操作系统实验指导书(6)

2019-01-04 23:12

:: ZeroMemory(&pe, sizeof(pe)); pe.dwSize=sizeof(pe); // 按所有进程循环

BOOL bMore=::Process32First(hSnapshot,&pe); while (bMore) {

// 打开用于读取的进程

HANDLE hProcess=::OpenProcess(

PRPCESS_QUERY_INFORMATION, // 指明要得到信息 FALSE, // 不必继承这一句柄 Pe.th32ProcessID); if(hProcess!=NULL) {

//找出进程的时间

FILETIME ftCreation,ftExit,ftKernelMode,ftUserMode; ::GetProcessTimes( hProcess, &ftCreation, &ftExit,

// 所感兴趣的进程 // 进程的启动时间(绝对的) // 结束时间(如果有的话) // 在内核模式下消耗的时间 // 在用户模式下消耗的时间

&ftKernelMode, &ftUserMode);

// 计算内核模式消耗的时间百分比

DWORD dwPctKernel=::GetKernelModePercentage( ftKernelMode; ftUserMode);

// 在内核模式下消耗的时间 // 在内核模式下消耗的时间

// 向用户显示进程的某些信息

std::cout<<‖Process ID:‖ <

::CloseHandle(hProcess); }

// 转向下一个进程

bMore=::Process32Next(hSnapshot,&pe); } }

清单2-4的程序首先利用Windows 2000的新特性,即工具帮助库来获得当前运行的所有进程的快照。然后应用程序进入快照中的每一个进程,得到其以PROCESSNTRY32结构

<<‖, % in kernel mode:‖ << dwPctKernel << std:: endl;

23

表示的属性,这一结构用来向OpenProcess () API函数提供进程句柄和GetProcessTimes() API来查询得到有关时间的。接下来,一个定制的帮助函数取得了几个返回的数值,然后计算进程在内核模式下消耗的时间占总时间的百分比。程序的其余部分比较简单,只是将有关信息显示给用户,清除进程句柄,然后继续循环,直到所有进程都计算过为止。 步骤4:在―命令提示符‖窗口运行CL.exe产生2-4.exe文件:

C:\\>CL 2-4.cpp 运行结果:

实验总结

24

2.3 Linux系统进程管理

2.3.1 背景知识

在本实验中,我们将使用Linux命令来标识和控制系统进程。Linux操作系统使用进程管理作业,进程由系统或者用户初始化。用户在Linux环境下执行的作业大多数都会启动一个进程。进程可以启动或者派生一个子进程,这样创建了一个进程层次结构或者进程树,类似于具有父子关系的文件系统层次结构。

可以使用ps(进程状态)命令工作,监控系统进程,使用kill命令终止不想要的进程。

2.3.2 实验目的

1) 回顾系统进程的概念,加深对Linux/Unix进程管理的理解。 2) 回顾ps命令和选项。 3) 列出当前shell中的进程。 4) 列出运行在系统中的所有进程。 5) 根据命令名搜索特定的进程。 6) 确定一个进程,终止它。 7) 使用kill命令终止进程。 8) 根据用户查找和终止进程。 9) 根据命令名终止进程。

2.3.3 工具/准备工作

在开始本实验之前,请回顾教科书的相关内容。 需要做以下准备:

1) 由指导老师分配的登录用户ID(如user2)和口令。 2) 一台远行Red Hat Linux操作系统的计算机。

2.3.4 实验内容与步骤

步骤1:登录进入GNOME。

在Linux登录框中填写指导老师分配的用户名和口令.登录Linux系统。 步骤2:访问命令行。

单击红帽子,在―GNOME帮助‖菜单中单击―系统工具‖、―终端‖,打开―终端‖窗口。 步骤3:回顾系统进程概念。

每个运行的程序都会创建一个进程,进程分配到一个唯一的进程标识符(PID)。PID被系统用于标识和跟踪进程,直到进程结束。操作系统内核管理所有进程的初始化和终止。每一个进程都要求系统资源(例如CPU时间和RAM空间)在其中工作。当进程启动的时候,操作系统把系统资源分配给每个进程,当进程终止的时候,系统回收这些资源。在Linux系统启动的时候。首先启动的两个进程是sched(调度)和init(初始化),它们管理着其他进程。Linux系统中有几种不同类型的进程:

25

守护进程:由Linux内核启动的进程,为了特定目的而存在。例如,lpsched守护进程存在只是为了处理打印作业。

父进程:派生其他进程的进程是父进程。一个叫做init的守护进程是第一个调用的进程。每一个进程,除了init之外.都有一个父进程。

子进程:由其他进程派生出来的进程叫子进程。

孤儿进程:在进程返回输出之前,它的父进程结束了,这样的进程叫做孤儿进程。 僵进程:子进程没有带着输出返回给父进程。这样的进程在系统中变成了丢失的进程。 使用此前的信息,完成以下填空:

1) Linux系统中,几乎每一个启动的进程.都会由内核分配一个惟一的_______________进程标识符,用于跟踪从进程启动到进程结束。

2) 当启动新进程的时候,内核也给它们分配系统资源,如________________和______________。

3) 永远不向父进程返回输出的进程叫做________________________。 4) 由父进程派生出来的进程叫做___________进程。 5) ___________________进程是一个派生另一个进程的进程。 6) 运行用于提供服务的Linux系统进程是_________________。

7) 如果父进程在了进程之前结束,它创建了一个________________进程。 步骤4:问顾ps命令和信息。

ps命令用于列出当前系统中运行的进程。

如果一个进程耗时太长,或者看上去好像已经终止了,表现为一个终端窗口不再响应或挂起,通常需要使用ps查看系统中的进程。通过列出进程,可以查看初始化进程的命令或程序的名字,以及所有它派生出来的子进程。通过多次执行ps命令,查看进程的时间—进程占用的CPU时间,可以检查一个进程是否还在运行。如果时间短再增长,那么进程可能已经终止了。如果进程占用太长的时间或者已经停止,可以使用ps命令检查进程的进程ID(PID),然后杀死进程。

ps命令的输出将显示PID号和与其相关的命令或程序。PID号通常用于终止一个进程。ps命令(ps [-options])的二个主要选项如表2-4所示。

表2-4 ps命令选项

ps选项 ps ps -e ps -f ps-u userid 意义 无选项 每一个 完全 用户 功能 显示当前shell或终端窗口中,当前用户的进程信息 显示系统中每一个进程的信息 产生一个完全列表,给出每个进程的所有可用信息 显示特定用户的所有进程 基本的ps命令显示在当前shell中的进程信息,用户只能够查看在这个终端窗口中初始化的进程。输入ps命令,将结果填入表2-5中。

表2-5 实验记录

PID TTY 26

TIME CMD

从当前终端窗口中,练习使用给出的每个选项的ps命令。

输入ps -f命令,显示运行在系统中的某个进程的完全信息,填入表2-6中。

表2-6 实验记录

UID PID PPID C STIME TTY TIME CMD ps -f命令输出的各栏标题如表2-7所示。

表2-7 ps-f栏标题

值 UID PID PPID C STIME TTY TIME CMD 初始化进程的用户ID 进程的进程标识号。PID可以用来杀死进程 进程的父进程标识号 进程的优先级 进程的启动时间 控制进程终端的终端类型 进程使用的CPU 时间的数量 命令名守护进程(执行的程序的名字) 描述 步骤5:列出系统中运行的所有进程。

输入ps -ef命令,显示运行在系统中的各个进程的信息。执行该命令,并与ps –f命令的输出结果对照,一致吗,有何不同?

__________________________________________________________________________________________________________________________________________________________

注意分析当前终端窗u中的输出结果 1) 显示了多少个进程?

___________________________________________________________________________2) 进程ID的PID是什么?

___________________________________________________________________________ 3) 启动进程的命令(cMD)是什么?

___________________________________________________________________________ 4) 请观察,什么命令的PID号是1?

___________________________________________________________________________ 5) 再次运行ps –ef命令,计算进程的数目:

27


操作系统实验指导书(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《机械制造技术基础》教案-2010

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: