进程管理习题及答案

进程管理习题及答案
进程管理习题及答案

进程管理习题答案

一.选择题

1.在进程管理中,当时进程从阻塞状态变为就绪状态.

A. 进程被进程调度程序选中 B.等待某一事件

C.等待的事件发生 D.时间片用完

答:C

2.分配到必要的资源并获得处理机时的进程状态是。

A.就绪状态 B.执行状态

C.阻塞状态 D.撤消状态

答:B

3.P、V操作是。

A.两条低级进程通信原语 B.两组不同的机器指令

C.两条系统调用命令 D.两条高级进程通信原语

答:A

4.对进程的管理和控制使用。

A.指令 B.原语

C.信号量 D.信箱通信

答:B

5.进程的并发执行是指若干个进程。

A.同时执行 B.在执行的时间上是重叠的

C.在执行的时间上是不可重叠的 D.共享系统资源

答:B

6.若P、V操作的信号量S初值为2,当前值为-1,则表示有等待进程。A.0个 B.1个 C .2个 D.3个

答:B

7.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是①;由运行状态变为阻塞状态的条件是②。

A.时间片用完 B.等待某事件发生

C.等待的某事件己发生 D.被进程调度程序选中

答,①D ②B

8.下列的进程状态变化中,变化是不可能发生的。

A.运行一就绪 B.运行一等待

C.等待一运行 D.等待一就绪

答:C

9.一个运行的进程用完了分配给它的时间片后,它的状态变为。

A.就绪 B.等待

C.运行 D.由用户自己确定

答:A

10.用P、V操作管理临界区时,信号量的初值应定义为。

A.一1 B.0 C.1 D.任意值

答:C

11.用V操作唤醒一个等待进程时,被唤醒进程的状态变为.

A.等待 B.就绪 C.运行 D.完成

答:B

12.进程间的同步是指进程间在逻辑上的相互关系。

A.联接 B.制约 C. 继续 D.调用

答:B

13.是一种只能进行P操作和V操作的特殊变量。

A.调度 B.进程 C.同步 D.信号量

答:D

14.下面对进程的描述中,错误的是。

A.进程是动态的概念 B.进程执行需要处理机

C.进程是有生命期的 D.进程是指令的集合

答:D

15.下面的叙述中正确的是。

A.操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同。B.为了避免发生进程死锁,各进程只能逐个申请资源。

C.操作系统用PCB管理进程,用户进程可以从此PCB中读出与本身运行状况有关的信息

D.进程同步是指某些进程之间在逻辑上的相互制约关系

答:D

16.进程控制就是对系统中的进程实施有效的管理,通过使用、进程撤销、进程阻塞、进程唤醒等进程控制原语实现。

A.进程运行 B.进程管理

C.进程创建 D.进程同步

答:C

17.操作系统通过对进程进行管理。

A.JCB B.PCB C.DCT D.CHCT

答:B

18.用P、V操作可以解决互斥问题。

A.一切 B.某些 C.正确 D.错误

答:A

19.通常,用户进程被建立后,。

A.便一直存在于系统中,直到被操作人员撤消

B.随着作业运行正常或不正常结束而撤消

C.随着时间片轮转而撤消与建立

D.随着进程的阻塞或唤醒而撤消与建立

答:B

20.一个进程被唤醒意味着。

A.该进程重新占有了CPU B.它的优先权变为最大

C.其PCB移至等待队列队首 D.进程变为就绪状态

答:D

21.下面所述步骤中,不是创建进程所必需的。

A.由调度程序为进程分配CPU B.建立一个进程控制块

C.为进程分配内存 D.将进程控制块链入就绪队列

答:A

22.多道程序环境下,操作系统分配资源以为基本单位。

A.程序 B.指令 C. 进程 D.作业

答:C

23.对于两个并发进程,设互斥信号量为mutex,若mutex=0,则。A.表示没有进程进入临界区

B.表示有一个进程进入临界区

C.表示有一个进程进入临界区,另一个进程等待进入

D.表示有两个进程进入临界区

答:B

24.两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来消息,或者建立某个条件后再向前执行,这种制约性合作关系被称为进程的。

A.同步 B.互斥 C.调度 D.执行

答:A

25.为了进行进程协调,进程之间应当具有一定的联系,这种联系通常采用进程间交换数据的方式进行,这种方式称为。

A.进程互斥 B.进程同步 C.进程制约 D.进程通信

答:D

26.设有5个进程共享一个互斥段,如果最多允许有3个进程同时进入互斥段,则所采用的互斥信号量的初值应是。

A.5 B.3 C.1 D.0

答:B

27.支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中不是引起操作系统选择新进程的直接原因。

A. 运行进程的时间片用完

B. 运行进程出错

C. 运行进程要等待某—事件的发生

D. 有新进程进入就绪状态

答:D

28.在多道程序设计系统中,多个计算问题同时装入计算机系统的主存储器。

A.并发执行 B.顺序执行

C. 并行执行 D.同时执行

答:A

29.引入多道程序设计技术后,处理器的利用率。

A.有所改善 B.极大地提高

C.降低了 D.无变化,仅使程序执行方便

答:B

30.从总体上说,采用多道程序设计技术可单位时间的算题量,但对每一个算

题,从算题开始到全部完成所需的时间比单道执行所需的时间可能要。A.增加,减少 B.增加,延长

C. 减少,延长 D.减少,减少

答:B

31.同一程序运行在不同的数据集上,创建了的进程。

A.同步 B.互斥

C. 相同 D.不同

答:D

二.填空题

1.进程的基本特征有①、②、独立性、异步性及结构特征。

答:①动态性②并发性

2.信号量的物理意义是当信号量值大于零时表示①;当信号量值小于零时其绝对值表示

②。

答:①可用资源的数目②因请求该资源而被阻塞的进程数目

3.临界资源的概念是①,而临界区是指②。

答:①一次仅允许一个进程访问的资源

②进程中访问临界资源的那段程序代码

4.进程在运行过程中有三种基本状态,它们是①、②、③。

答:①运行②就绪③等待(阻塞)

5.进程主要由①、②、③三部分内容组成,其中④是进程存在的唯一标志,而⑤部分也可以为其他进程共享。

答:①程序段②数据段③PCB ④PCB ⑤程序段

6.系统中各进程之间逻辑上的相互制约关系称为。

答:进程同步

7:若一个进程己进入临界区,其他欲进入临界区的进程必须。

答:等待

8.将进程的链接在一起就形成了进程队列。

答:PCB

9.用P、V操作管理临界区时,任何一个进程在进入临界区之前应调用①操作,在退出临界区时应调用②操作。

答:①P ②V

10.用信箱实现通信时,应有①和②两条基本原语。

答:①发送②接收

11.在多道程序系统中,进程之间存在着的不同制约关系可以划分为两类:①与②。③指进程间具有的一定逻辑关系;④是指进程间在使用共享资源方面的约束关系。

答:①同步②互斥③同步④互斥

12.有m个进程共享同一临界资源,若使用信号量机制实现对临界资源的互斥访问,则信号量值的变化范围是。

答:1至-(m-1)

13.设系统中有n(n>2)个进程,且当前不再执行进程调度程序,试考虑下述4种情况:

①没有运行进程,有2个就绪进程,n个进程处于等待状态。

②有1个运行进程,没有就绪进程,n一1进程处于等待状态。

⑨有1个运行进程,有1个就绪进程,n一2进程处于等待状态。

④有1个运行进程,n一1个就绪进程,没有进程处于等待状态。

上述情况中,不可能发生的情况是。

答:①

14.在一个单处理机系统中,若有5个用户进程,且假设当前时刻为用户态,则处于就绪状态的用户进程最多有①个,最少有②个。

答:①4 ②0

15.操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是。

答:S<0

16.下面关于进程的叙述不正确的是。

①进程申请CPU得不到满足时,其状态变为等待状态。

②在单CPU系统中,任一时刻至多有一个进程处于运行状态。

③优先级是进行进程调度的重要依据,一旦确定不能改变。

④进程获得处理机而运行是通过调度而实现的。

答:③

17.信箱逻辑上分成①和②两部分。①中存放有关信箱的描述。②由若干格子组成,

每格存放一信件,格子的数目和大小在创建信箱时确定。

答:①信箱头②信箱体

18.当多个进程等待分配处理机时,系统按一种规定的策略从多个处于状态的进

程中选择一个进程,让它占有处理机,被选中的进程就进入了状态。答:就绪、执行

19.若使当前运行的进程总是优先级最高的进程,应选择进程调度算法。答:抢占式(剥夺式)

20.操作系统中用于完成一些特定功能的、不可中断的过程称为。

答:原语

三.简答题

1.在操作系统中为什么要引入进程概念?它与程序的关系是怎样的?

答:在操作系统中,由于多道程序并发执行时共享系统资源,共同决定这些资源的状态,因此系统中各程序在执行过程中就出现了相互制约的新关系,程序的执行出现“走走停停”的新状态。这些都是在程序执行的动态过程中发生的。用程序这个静态概念已不能如实反映程序并发执行过程中的这些特征。为此,人们引入“进程”这一概念来描述程序动态执行过程的性质。

进程和程序是既有联系又有区别的两个概念,进程不能脱离具体程序而虚设,程序规定了相应进程所要完成的动作。它们的主要区别如下:

(1)程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念;进程是程序在处理机上的一次执行过程,它是一个动态概念。

(2)程序的存在是永久的,而进程则是有生命期的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。

(3)程序仅是指令的有序集合。而进程则由程序、数据和进程控制块组成。

(4)在传统的操作系统中,进程是资源分配和调度运行的基本单位,而程序不是。

(5)进程与程序之间不是一一对应的,即同一程序同时运行于若干不同的数据集合上,它将属于若干个不同的进程;而一个进程至少对应执行一个程序。

2.为了实现并发进程间的合作和协调工作,以及保证系统的安全,操作系统在进程管理方面应做哪些工作?

答:(1)进程控制:系统必须设置一套控制机构来实现进程创建、进程撤消以及进程在运行过程中的状态转换。

(2)进程同步:系统必须设置同步机制来实现对所有进程的运行进行协调,协调的方式包括进程的互斥和进程的同步。

(3)进程通信:多道程序环境下可能需要诸进程合作完成一个任务,这些进程相互间需要通过交换信息来协调各自工作的进度。因此系统必须具有进程之间通信

(交换信息)的能力。

(4)进程调度:系统必须能够在处理机空闲时,按一定算法从就绪进程队列中选择一个就绪进程,把处理机分配给它,并为之设置运行的现场使其投入运行。3.在操作系统中引入线程概念的主要目的是什么?

答:减少程序并发执行时所需付出的时空开销,提高程序执行的并发度。特别有利于共享存储器的多处理机系统,和更加适合c/s模型。

4.在一个单CPU的多道程序设计系统中,若在某一时刻有N个进程同时存在,那么处于运行态、等待态和就绪态进程的最小和最大值分别可能是多少?

答:若多道程序设计系统中,在某一时刻有N个进程同时存在,则处于运行态的进程最少0个,最大1个;处于就绪态的进程最少0个,最大N—1个;处于等待态的进程最少0个,最大N个。

5.进程之间存在哪几种相互制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?

(1)若干同学去图书馆借书;

(2)两队举行篮球比赛;

(3)流水线生产各道工序;

(4)商品生产和社会消费

答:进程之间的制约关系分为直接制约关系(即同步)和间接制约关系(即互斥)。同步是因合作进程之间协调彼此的工作而控制自己的执行速度,即因相互合作、相互等待而产生的制约关系;而互斥是进程之间竞争临界资源而禁止两个以上的进程同时进入临界区所发生的制约关系。

(1)属于互斥关系,因为一本书只能借给一个同学。

(2)属于互斥关系,篮球只有一个,两队都要争夺。

(3)居于同步关系,各道工序的开始都依赖前一道工序的完成。

(4)属于同步关系,商品没生产出来则消费无法进行,商品没有消费完则无须再生产。

6.为了让用户进程互斥地进入临界区,可以把整个临界区实现成不可中断的过程,即让用户具有屏蔽所有中断的能力。每当用户程序进入临界区的时候,屏蔽所有中断;当出了临界区的时候,再开放所有中断。你认为这种方法有什么缺点。

答:用户进程进入临界区时屏蔽所有中断,应当也包括系统程序。若屏蔽的是用户进程,的确可以保护临界资源,但若系统所发出的中断也被屏蔽,则会引起错误,因为系统的中断往往与当前运行的程序无关,却可能是一些重要的硬件中断,如电源故障等,故不可盲目屏蔽所有中断;又或者当时发出故障中断的中断源恰好是该临界资源,则更应该及时响应处理。

7.设有n个进程共享一个互斥段,对于如下两种情况:

(1)如果每次只允许一个进程进入互斥段;

(2)如果每次最多允许m个进程(m

试问:所采用的互斥信号量初值是否相同?信号量的变化范围如何?

答:(1)信号量的初值为1。信号量的变化范围是1,0,-1,…,-(n-1)。

(2)信号量的初值为m。信号量的变化范围是:m,m-1,…,1,0,…,-(n-m)。四.应用题

1.若程序A和B单独执行时分别需要1小时和1.5小时,其中CPU工作时间分别为18分钟和27分钟。若采用多道程序设计方法,让A和B并行工作,假定CPU利用率达到50%,另加15分钟系统开销,请问系统效率能提高多少?

解:在多道系统中,程序A和B共用的CPU时间为:(18十27)/50%=90分钟

系统效率提高=(A和B单独执行的时间总和-多道方式下总时间)/A和B单独执行的时间总和,即((60十90)-(90十15))/(60十90)=45/150=30%2.在测量控制系统中,数据采集任务把所采集的数据送入一单缓冲区;计算任务从该单缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步算法。

解:在本题中,应设置两个信号童sf,se,信号量sf表示缓冲区中是否有可供打印的

计算结果,其初值为o;信号量se用于表示缓冲区有无空位置存放新的信息,其初值为1。

本题的同步描述如下:

int se=1;

int sf=0;

main( )

{

cobegin

get ( ) ;

compute ( );

coend

}

get ( )

{

while (采集工作未完成)

{

采集一个数据;

p(se);

将数据送入缓冲区;

v(sf);

}

}

compute ( )

{

while (计算工作未完成)

{

p(sf);

从缓冲区中取出数据;

v(se);

进行数据计算;

}

}

3.下图给出了四个进程合作完成某一任务的前趋图,试说明这四个进程间的同步关系并用P、V操作描述它。

解:上图说明任务启动后Sl先执行。当S1结束后,S2、S3可以开始执行。S2、S3完成后,S4才能开始执行。为了确保这一执行顺序,设三个同步信号量b2、b3、b4分别表示进程S2、S3、S4是否可以开始执行,其初值均为0。这四个进程的同步描述如下:

int b2=0;

int b3=0;

int b4=0;

main ( )

{

cobegin

s1 ( );

s2 ( );

s3 ( );

s4 ( );

coend

}

s1 ( )

{

v(b2);

v(b3);

}

s2 ( )

{

p(b2);

v(b4);

}

s3 ( )

{

p(b3);

v(b4);

}

s4 ( )

{

p(b4);

p(b4); /*因在s2和s3完成后均对b4作了v操作,因此这里要用两个p操作*/

}

4.某系统的进程状态转换图如下,请说明:

(1)引起各种状态转换的典型事件有哪些?

(2)当我们观察系统中某些进程时,能够看到某一进程产生的一次状态转换能引起另一进程作一次状态转换。在什么情况下,当一个进程发生转换3时能立即引起另一个进程发生转换l?

(3)试说明是否会发生下述因果转换:

2 l

3 2

4 1

答:(1)在本题所给的进程状态转换图中.存在四种状态转换。当进程调度程序从就绪队列中选取一个进程投入运行时引起转换1;正在执行的进程如因时间片用完而被暂停执行就会引起转换2;正在执行的进程因等待的事件尚未发生而无法执行(如进程请求完成I/O)则会引起转换3;当进程等待的事件发生时(如I/O完成)则会引起转换4。

(2)如果就绪队列非空,则一个进程的转换3会立即引起另一个进程的转换1。这是因为一个进程发生转换3意味着正在执行的进程由执行状态变为阻塞状态,这时处理机空闲,进程调度程序必然会从就绪队列中选取一个进程并将它投入运行,因此只要就绪队列非空,一个进程的转换3能立即引起另一个进程的转换1。

(3)所谓因果转换指的是有两个转换,一个转换的发生会引起另一个转换的发生,前一个转换称为因,后一个转换称为果,这两个转换称为因果转换。当然这种因果关系并不是什么时候都能发生,而是在一定条件下才会发生。

2 1:发生转换2时,就必然引起另一进程的转换1。因为当发生转换2时,正在执行的进程从执行状态变为就绪状态,进程调度程序必然会从就绪队列中选取一个进程投入运行,即发生转换1。

32:某个进程的转换3决不可能引起另一进程发生转换2。这是因为当前执行进程从执行状态变为阻塞状态.不可能又从执行状态变为就绪状

态。

41:当处理机空闲且就绪队列为空时,某一进程的转换4就会引起该进程的转换1。因为此时处理机空闲,一旦某个进程发生转换4,就意味

着有一个进程从阻塞状态变为就绪状态,因而调度程序就会将就绪队列

中的此进程投入运行。

5.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:

(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

(2)根据所定义的信号量,把应执行的P、V操作填入下面横线上,以保证进程能够正确地并发执行。

(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。

答:(1)定义一信号量S,初始值为20,其意义如下:

S>0 S的值表示可继续进入售票厅的人数

S=0 表示售票厅中已有20名顾客(购票者)

S<0 |S|的值为等待进入售票厅的人数

(2)根据所定义的信号量,把应执行的P、V操作填入下面横线上,以保证进程能够正确地并发执行。

COBEGIN PROCESS Pi(i=1,2,……)

begin;

P(S)

进入售票厅;

购票;

退出;

V(S)

end;

COEND

(3)S的最大值为20;S的最小值为20-n

6.理发店里有一位理发师,一把理发椅和N把供等候理发的顾客坐的椅子.如果没有顾客,则理发师便在理发椅上睡觉.当一个顾客到来时,他必须先唤醒理发师.如果顾客到来时理发师正在理发,则如果有空椅子,可坐下来等;否则离开。

解:定义信号量如下:

Var Sn: semaphore; {位子数目,初值为n}

S: semaphore; {理发师睡觉,初值为1}

mutex: semaphore; {初值为1}

用P、V操作实现如下:

顾客进程 i:

P(Sn);{门外观望}

P(mutex);

进门;

V(mutex);

V(S); {if(sn==n-1) v(s); }

等候;

理发;

V(Sn)

P(mutex);

出门;

V(mutex);

理发师进程:

Repeat

P(S);

P(mutex);

叫人理发;

V(mutex);

理发;

Until false;

7.试写出用加锁原语和开锁原语实现两个进程关于临界资源的操作的描述。

答:Program test

begin

s:=0 (表示该资源可用)

cobegin (1)

A: begin

加锁原语;

临界区A;

开锁原语;

end

B: begin

加锁原语;

临界区B;

开锁原语;

end

conend

end

8. 桌子上有一只盘子,每次只能放入一只水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,一个儿子专等吃盘中的桔子,一个女儿专等吃盘中的苹果。请利用P、V操作实现他们之间的同步。

解:在本题中,应设置三个信号量s、so、sa,信号量s表示盘子是否为空,其初值为1;信号量so表示盘中是否有桔子,其初值为0;信号量sa表示盘中是否有苹果,其初值为0。同步描述如下:

int s=1;

int sa=0;

int so=0;

main ( )

{

cobegin

father ( );

son ( );

daughter ( );

coend

}

father ( )

{

p(s);

将水果放入盘中;

if(放入的是桔子) v(so);

else v(sa);

}

son ( )

{

p(so);

从盘中取出桔子;

v(s);

吃桔子;

}

daughter ( )

{

p(sa);

从盘中取出苹果;

v(s);

吃苹果;

}

9.桌子上有一只盘子,最多可容纳两个水果,每次只能放人或取出一个水果。爸爸专向盘子中放苹果(apple),妈妈专向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用Pv操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。

解:盘子为互斥资源,因可以放两个水果,empty初值为2;再设信号量mutex 初值为1,控制对盘子的互斥访问;apple表示盘中苹果个数,表示盘中桔子个数,初值均为0。

parbegin

Father: begin

L1: p(empty);

P(mutex);

放苹果;

V(mutex);

V(apple);

Goto L1;

End;

Mother: begin

L2: P(empty);

P(mutex);

放桔子;

V(mutex);

V(orange);

Goto L2;

End;

Daughter: begin

L3: p(apple);

P(mutex);

取苹果;

V(mutex);

V(empty);

Goto L3;

End;

Son: begin

L4: P(orange);

P(mutex);

取桔子;

V(mutex);

V(empty);

Goto L4;

End;

Parend

10.现为某临界资源设一把锁w,当w=1时,表示关锁,w=0时,表示锁已打开,试写出开锁和关锁的原语,并说明如何利用它们去控制对该临界资源的互斥访问?

解:①开锁原语unlock(w)如下:

unlock(w): w:=0

关锁原语lock(w)如下:

Lock(w): while w=1 do skip;w:=1;

②可设临界段cs放在两者之间来实现互斥,即

Lock(w);

精选文库

cs;

unlock(w)

windows进程管理实验报告

实验报告 课程名称:操作系统 实验项目:windows进程管理 姓名: 专业:计算机科学与技术 班级: 学号:

计算机科学与技术学院 计算机系 2019 年 4 月 23 日

实验项目名称: windows进程管理 一、实验目的 1. 学习windows系统提供的线程创建、线程撤销、线程同步等系统调用; 2. 利用C++实现线程创建、线程撤销、线程同步程序; 3. 完成思考、设计与练习。 二、实验用设备仪器及材料 1. Windows 7或10, VS2010及以上版本。 三、实验内容 1 线程创建与撤销 写一个windows控制台程序(需要MFC),创建子线程,显示Hello, This is a Thread. 然后撤销该线程。 相关系统调用: 线程创建: CreateThread() 线程撤销: ExitThread() 线程终止: ExitThread(0) 线程挂起: Sleep() 关闭句柄: CloseHandle() 参考代码: ; } 运行结果如图所示。 完成以下设计题目: 1. 向线程对应的函数传递参数,如字符串“hello world!”,在线程中显示。 2. 如何创建3个线程A, B, C,并建立先后序执行关系A→B→C。

实验内容2 线程同步 完成父线程和子线程的同步。父线程创建子线程后进入阻塞状态,子线程运行完毕后再唤醒。 相关系统调用: 等待对象 WaitForSingleObject(), WaitForMultipleObjects(); 信号量对象 CreateSemaphore(), OpenSemaphore(), ReleaseSemaphore(); HANDLE WINAPI CreateSemaphore( _In_opt_ LPSECURITY_ATTRIBUTES lpSemaphoreAttributes _In_ LONG lInitialCount, _In_ LONG lMaximumCount, _In_opt_ LPCTSTR lpName ); 第一个参数:安全属性,如果为NULL则是默认安全属性 第二个参数:信号量的初始值,要>=0且<=第三个参数 第三个参数:信号量的最大值 第四个参数:信号量的名称 返回值:指向信号量的句柄,如果创建的信号量和已有的信号量重名,那么返回已经存在的信号量句柄参考代码: n"); rc=ReleaseSemaphore(hHandle1,1,NULL); err=GetLastError(); printf("Release Semaphore err=%d\n",err); if(rc==0) printf("Semaphore Release Fail.\n"); else printf("Semaphore Release Success. rc=%d\n",rc); } 编译运行,结果如图所示。

Windows下的进程管理和监控器分解

操作系统安全课程设计报告Windows下的进程管理和监控器

目录 操作系统安全课程设计报告 0 一、概述 (2) 1.设计主要完成的任务 (2) 2.解决的主要问题 (2) 二、设计的基本概念和原理 (2) 1.概念 (2) 2.原理 (2) 三、总体设计 (3) 1.功能模块 (3) 2.流程图 (3) 四、详细设计 (4) 主要功能的代码实现: (4) 五、完成的情况以及使用说明 (22) 六、总结 (33) 七、参考文献 (34)

一、概述 1.设计主要完成的任务 设计一个Windows或Linux下的进程管理与监控程序,要求该程序完成以下功能: (1)可获取当前正在运行的所有进程,包括进程PID、进程名称、CPU使用情况、当前用户名、内存占用量等; (2)能进一步获取各进程的所有线程情况; (3)能通过命令终止某个进程的执行,终止时能将其子孙进程全部终止; (4)要求界面友好。 2.解决的主要问题 我们的电脑需要我们去了解它的运行状况,掌握和管理它的进程,并对其异常情况给予操作和控制,任务管理器就像是我们了解和控制自己电脑运作的一个窗口,通过这个窗口我们可以了解到电脑所有进程运行状况,并对运行的进程加于管理和控制。本管理器设计比较简洁,操作灵活,使用简单,可以为我们管理和控制计算机的进程提供了一个简便的方法,是我们控制本计算机进程和了解计算机进程情况的良好助手。 二、设计的基本概念和原理 1.概念 在本实验中,启动进程管理器后,可以通过”获取进程”功能来获得本计算机启动的进程,以及与该进程相关的信息,其中包括的信息有:进程映像名称,进程开启的线程数,进程的PID以及进程的优先数,我们可以通过这些信息来了解计算机中每个进程的使用状况。同时我们可以在进程管理器上选中一个要终止的的进程,点击“终止进程”功能按钮,该进程被终止执行并退出进程列表,其中还包括了自动刷新的功能,此按钮实现的功能正如我们电脑任务管理器的“进程”功能,当电脑执行程序不能通过关闭窗口进行正常的关闭时,可以借助此办法来关闭进程。我们还可以通过这个进程管理器来启动新的进程,当我们要在进程管理器里启动新的进程时,只要点击“启动新进程”按键,则会弹出“打开进程”对话框,我们可以通过对话框里的“浏览”窗口选择要打开的新进程,这是任务管理器里没有实现的功能,通过这个功能我们在管理计算机时变得更加灵活方便,也使进程管理的功能更加完善。在退出此进程管理器时候,只要选择“退出”功能按钮则可关闭进程管理器,快速退出管理器的界面。 2.原理

第二章进程管理答案

第二章进程管理 一、单项选择题 1、顺序程序和并发程序的执行相比,()。 A.基本相同 B. 有点不同 C.并发程序执行总体上执行时间快 D.顺序程序执行总体上执行时间快 2、在单一处理机上,将执行时间有重叠的几个程序称为()。 A.顺序程序 B. 多道程序 C.并发程序 D. 并行程序 3、进程和程序的本质区别是()。 A.存储在内存和外存 B.顺序和非顺序执行机器指令 C.分时使用和独占使用计算机资源 D.动态和静态特征 4、在下列特性中,不是进程的特性的是()。 A. 异步性 B. 并发性 C. 静态性 D. 动态性 5 A 6 A. 7 A. 8 A. 9 A. 10 A. 11 A. 12。 A. 13 A. 14 A. 15 A. 16、在操作系统中,对信号量S的P原语操作定义中,使进程进入相应阻塞队列等待的条件是()。 A. S>0 B. S=0 C. S<0 D. S≠0 17、信号量S的初值为8,在S上执行了10次P操作,6次V操作后,S的值为()。 A.10 B.8 C.6 D.4 18、在进程通信中,使用信箱方式交换信息的是()。 A.低级通信B.高级通信C.共享存储器通信D.管道通信 19.( )必定会引起进程切换。A.一个进程被创建后进入就绪态B.一个进程从运行态变成等待态c.一个进程从运行态变成就绪态 D.一个进程从等待态变成就绪态 20、操作系统使用( )机制使计算机系统能实现进程并发执行,保证系统正常工作。 A.中断B.查询c.同步D互斥 21.对于一个单处理器系统来说,允许若干进程同时执行,轮流占用处理器.称它们为()的。 A.顺序执行 B.同时执行c.并行执行D.并发执行

进程管理实验报告

实验2过程管理实验报告学生号姓名班级电气工程系过程、过程控制块等基本原理过程的含义:过程是程序运行过程中对数据集的处理,以及由独立单元对系统资源的分配和调度。在不同的数据集上运行程序,甚至在同一数据集上运行多个程序,是一个不同的过程。(2)程序状态:一般来说,一个程序必须有三种基本状态:就绪、执行和阻塞。然而,在许多系统中,过程的状态变化可以更好地描述,并且增加了两种状态:新状态和终端状态。1)就绪状态,当一个进程被分配了除处理器(CPU)以外的所有必要资源时,只要获得了处理器,进程就可以立即执行。此时,进程状态称为就绪状态。在系统中,多个进程可以同时处于就绪状态。通常,这些就绪进程被安排在一个或多个队列中,这些队列称为就绪队列。2)一旦处于就绪状态的进程得到处理器,它就可以运行了。进程的状态称为执行状态。在单处理器系统中,只有一个进程在执行。在多处理器系统中,可能有多个进程在执行中。3)阻塞状态由于某些事件(如请求输入和输出、额外空间等),执行进程被挂起。这称为阻塞状态,也称为等待状态。通常,处于阻塞状态的进程被调度为-?这个队列称为阻塞队列。4)新状态当一个新进程刚刚建立并且还没有放入就绪队列中时,它被称为新状态。5)终止状态是

什么时候-?进程已正常或异常终止,操作系统已将其从系统队列中删除,但尚未取消。这就是所谓的终结状态。(3)过程控制块是过程实体的重要组成部分,是操作系统中最重要的记录数据。控制块PCB记录操作系统描述过程和控制过程操作所需的所有信息。通过PCB,一个不能独立运行的程序可以成为一个可以独立运行的基本单元,并且可以同时执行一个进程。换句话说,在进程的整个生命周期中,操作系统通过进程PCB管理和控制并发进程。过程控制块是系统用于过程控制的数据结构。系统根据进程的PCB来检测进程是否存在。因此,进程控制块是进程存在的唯一标志。当系统创建一个进程时,它需要为它创建一个PCB;当进程结束时,系统回收其PCB,进程结束。过程控制块的内容过程控制块主要包括以下四个方面的信息。过程标识信息过程标识用于对过程进行标识,通常有外部标识和内部标识。外部标识符由流程的创建者命名。通常是一串字母和数字。当用户访问进程时使用。外部标识符很容易记住。内部标识符是为了方便系统而设置的。操作系统为每个进程分配一个唯一的整数作为内部标识符。通常是进程的序列号。描述性信息(process scheduling message)描述性信息是与流程调度相关的一些有关流程状态的信息,包括以下几个方面。流程状态:表

《Linux操作系统》实验五-作业任务和进程管理

《Linux操作系统》 实验报告 实验五:作业任务和进程管理

一、实验目的 (1) 掌握UNIX系统作业、任务和进程管理的任务,了解Linux系统进程管理的图形界面; (2) 了解UNIX的系统进程间通信机制,掌握信号操作和终止进程的命令。 (3) 了解任务和作业管理命令at和batch; (4) 掌握UNIX系统的进程定时启动管理命令crontab; (5) 了解进程的挂起,掌握fg,bg等命令。 二、实验环境 一台装有Windows操作系统PC机,上装有虚拟机系统VMWare,实验过程通过VMWare系统启Linux系统工作。 三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果) 1)进程管理与查询 (1)进程状态查询 1.ps –ef | more #显示所有进程及启动参数 2. ps –ajx | more #以作业方式显示进行信息

3. ps –el | more #以长格式显示所有进程信息 4.pstree –p 5.pstree -a

(2)终止进程的执行 1.终止某一已知PID进程:ps –9 PID(1)#PID由用户自己选择 2.在当前终端上执行命令:man ps 3、换一终端在其运行:ps –e | grep man #确定进程PID

4.终止进程执行:kill –9 PID #PID是上命令查询的结果 4.终止所的同名进程 终止上例中的man命令:killall man或 killall –9 man 分别至少在2个不同终端上登录,然后在其中的一个终端上分别执行以下命令,并观察和分析原因。 killall bash killall –9 bash 执行killall -9 bash命令时,终端窗口关闭 (3) 进程的挂起及前后台调度 在一个终端上起动命令man man,在不退出man命令的情况下按下组合键Ctrl+Z,观察反映。 答:先退出当前页面,返回进入终端时的页面 先后执行命令jobs和fg命令,并观察反映。

进程管理实验报告

进程的控制 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new

program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。 3 .实验步骤 (1)gedit创建进程1.c (2)使用gcc 1.c -o 1编译并./1运行程序1.c #include #include #include #include void mian(){ int id; if(fork()==0) {printf(“child id is %d\n”,getpid()); } else if(fork()==0) {printf(“child2 id %d\n”,getpid()); } else {id=wait(); printf(“parent id is %d\n”,getpid()); }

Linux操作系统进程管理的分析与应用

Linux操作系统进程管理的分析与应用(1)发布时间:2006.05.19 07:12来源:LinuxSir作者:北南南北目录 1、程序和进程; 1.1 进程分类; 1.2 进程的属性; 1.3 父进程和子进程; 2、进程管理; 2.1 ps 监视进程工具; 2.1.1 ps参数说明; 2.1.2 ps 应用举例; 2.2 pgrep 3、终止进程的工具 kill 、killall、pkill、xkill; 3.1 kill 3.2 killall 3.3 pkill 3.4 xkill 4、top 监视系统任务的工具; 4.1 top 命令用法及参数; 4.2 top 应用举例; 5、进程的优先级: nice和renice; 6、关于本文; 7、后记; 8、参考文档; 9、相关文档; 1、程序和进程; 程序是为了完成某种任务而设计的软件,比如OpenOffice是程序。什么是进程呢?进程就是运行中的程序。 一个运行着的程序,可能有多个进程。比如 https://www.360docs.net/doc/ab13334327.html, 所用的WWW服务器是apache服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请求httpd服务,

apache服务器将会创建有多个httpd进程来对其进行服务。 1.1 进程分类; 进程一般分为交互进程、批处理进程和守护进程三类。 值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自动激活启动或超级管理用户root来启动。比如在Fedora或Redhat中,我们可以定义httpd 服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd, /etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。 [root@localhost ~]# chkconfig --level 35 httpd on 由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问 https://www.360docs.net/doc/ab13334327.html, ,https://www.360docs.net/doc/ab13334327.html, 的httpd服务器都在运行,等待着用户来访问,也就是等待着任务处理。 Linux操作系统进程管理的分析与应用(2)发布时间:2006.05.19 07:12来源:LinuxSir作者:北南南北 1.2 进程的属性; 进程ID(PID):是唯一的数值,用来区分进程; 父进程和父进程的ID(PPID); 启动进程的用户ID(UID)和所归属的组(GID); 进程状态:状态分为运行R、休眠S、僵尸Z; 进程执行的优先级; 进程所连接的终端名; 进程资源占用:比如占用资源大小(内存、CPU占用量); 1.3 父进程和子进程; 他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进程并不一定终止。比如httpd服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止而终止。 在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定安全运行;

第二章_进程管理习题修改汇总

一、选择题 1.在进程管理中,当 C 时,进程从阻塞状态变为就绪状态。 A.进程被进程调度程序选中 B.等待某一事件 C.等待的事件发生 D.时间片用完 2.分配到必要的资源并获得处理机时的进程状态是 B 。 A.就绪状态 B.执行状态 C.阻塞状态 D.撤消状态 3.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是 D 。 A.时间片用完 B.等待某事件发生 C.等待的某事件已发生 D.被进程调度程序选中4.进程的三个基本状态在一定条件下可以相互转化,进程由运行状态变为阻塞状态的条件是 B 。 A.时间片用完 B.等待某事件发生 C.等待的某事件已发生 D.被进程调度程序选中5.下列的进程状态变化中, C 变化是不可能发生的。 A.运行→就绪B.就绪→运行C.等待→运行D.等待→就绪 6.一个运行的进程用完了分配给它的时间片后,它的状态变为A 。 A.就绪 B.等待 C.运行 D.由用户自己确定7.操作系统通过 B 对进程进行管理。 A. JCB B. PCB C. DCT D. CHCT 8.一个进程被唤醒意味着 D 。 A. 该进程重新占有了CPU B. 它的优先权变为最大 C. 其PCB移至等待队列队首 D. 进程变为就绪状态 9.多道程序环境下,操作系统分配资源以 C 为基本单位。 A. 程序 B. 指令 C. 进程 D. 作业 10. 从下面的叙述中选出一条正确的叙述: (1)操作系统的一个重要概念是进程,不同的进程所执行的代码也不同。

(2)操作系统通过PCB来控制和管理进程,用户进程可从PCB 中读出与本身运行状态相关的信息。 (3)当进程由执行状态变为就绪状态时,CPU现场信息必须被保存在PCB中。 (4)当进程申请CPU得不到满足时,它将处于阻塞状态。(5)进程是可与其他程序并发执行的程序在一个数据集合上的运行过程,所以程序段是进程存在的唯一标志。 11. 从下面的叙述中选出4条正确的叙述: (1)一个进程的状态发生变化总会引起其它一些进程的状态发生变化。 (2)进程被挂起(suspend)后,状态变为阻塞状态。 (3)信号量的初值不能为负数。 (4)线程是CPU调度的基本单位,但不是资源分配的基本单位。(5)在进程对应的代码中使用wait、signal操作后,可以防止系统发生死锁。 (6)管程每次只允许一个进程进入。 (7)wait、signal操作可以解决一切互斥问题。 (8)程序的顺序执行具有不可再现性。 二、是非题 1.进程是动态的概念 2.进程执行需要处理机 3.进程是有生命期的

实验三-进程管理

实验三进程管理 一、实验目的 1.熟悉和理解进程和进程树的概念,掌握有关进程的管理机制 2.通过进程的创建、撤销和运行加深对进程并发执行的理解 3.明确进程与程序、并行与串行执行的区别 4.掌握用C 程序实现进程控制的方法 二、实验学时 2学时 三、实验背景知识 所涉及的系统调用 1、exec( )系列(exec替换进程映像) 系统调用exec( )系列,也可用于新程序的运行。fork( )只是将父进程的用户级上下文拷贝到新进程中,而exec( )系列可以将一个可执行的二进制文件覆盖在新进程的用户级上下文的存储空间上,以更改新进程的用户级上下文。exec( )系列中的系统调用都完成相同的功能,它们把一个新程序装入内存,来改变调用进程的执行代码,从而形成新进程。如果exec( )调用成功,调用进程将被覆盖,然后从新程序的入口开始执行,这样就产生了一个新进程,新进程的进程标识符id 与调用进程相同。 exec( )没有建立一个与调用进程并发的子进程,而是用新进程取代了原来进程。所以exec( )调用成功后,没有任何数据返回,这与fork( )不同。exec( )系列系统调用在UNIX系统库unistd.h中,共有execl、execlp、execle、execv、execvp五个,其基本功能相同,只是以不同的方式来给出参数。 #include int execl(const cha r *pathname, const char *arg, …); int execlp(const char *, const char *arg, …); int execle(const char *pathname, const char *arg, …, const char *envp[ ]); int execv(const char *pathname, char *const argv[ ]); int execvp(const char *, char *const argv[ ]); 参数: path参数表示你要启动程序的名称包括路径名。 arg参数表示启动程序所带的参数,一般第一个参数为要执行命令名,不是带路径且arg必须以NULL结束。 返回值:成功返回0,失败返回-1 注:上述exec系列函数底层都是通过execve系统调用实现. 1)带l 的exec函数:execl,execlp,execle,表示后边的参数以可变参数的形式给出且都以一个空指针结束。 #include

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

第二章-进程管理习题及答案

第二章进程管理习题及答案 一、填空题 1.进程的静态描述由三部分组成:① 、② 和③ 。 【答案】①PCB、②程序部分、③相关的数据结构集 【解析】PCB是系统感知进程的唯一实体。进程的程序部分描述了进程所要 完成的功能,而数据结构集是程序在执行时必不可少的工作区和操作对象。后两 部分是进程完成所需功能的物质基础。 2.进程存在的标志是。 【答案】进程控制块PCB 【解析】系统根据PCB感知进程的存在和通过PCB中所包含的各项变量的变化,掌握进程所处的状态以达到控制进程活动的目的。 3.① 是现代操作系统的基本特征之一,为了更好地描述这一特征而 引入了 ② 这一概念。 【答案】①程序的并发执行,②进程 【解析】程序的并发执行和资源共享是现代操行系统的基本特征。程序的并 发执行使程序失去了程序顺序执行时所具有的封闭性和可再现性。在程序并发执 行时,程序这个概念不能反映程序并发执行所具有的特性,所以引入进程概念来 描述程序并发执行所具有的特点。 4.给出用于进程控制的四种常见的原语① 、② 、③ 和④ 。【答案】①创建原语、②撤消原语、③阻塞原语、④唤醒原语 【解析】进程控制是系统使用一些具有特定功能的程序段来创建、撤消进程 以及完成进程各状态间的转换,从而达到多个过程高效率地并行执行和协调,实 现资源共享的目的。把那些在管态下执行的具有特定功能的程序段称为原语。 5.进程被创建后,最初处于① 状态,然后经② 选中后进入③ 状态。 【答案】①就绪,②进程调度程序,③运行 【解析】进程的从无到有,从存在到消亡是由进程创建原语和撤消原语完成的。被创建的进程最初处于就绪状态,即该进程获得了除处理机以外的所有资源,处于准备执行的状态;从就绪状态到运行状态的转换是由进程调度程序来完成的。 6.进程调度的方式通常有① 和② 方式两种。 【答案】①可剥夺、②非剥夺 【解析】所谓可剥夺方式,是指就绪队列中一旦有优先级高于当前运行进程 的优先级的进程存在时,便立即发生进程调度,转让处理机。而非剥夺方式则是指:即使在就绪队列中存在有优先级高于当前运行进程的进程,当前进程仍将继 续占有处理机,直到该进程完成或某种事件发生(如I/O事件)让出处理机。 7.轮转法主要是用于① 的调度算法,它具有较好的② 时间, 且对每个进程来说都具有较好的③ 性。

操作系统-进程管理实验报告

实验一进程管理 1.实验目的: (1)加深对进程概念的理解,明确进程和程序的区别; (2)进一步认识并发执行的实质; (3)分析进程争用资源的现象,学习解决进程互斥的方法; (4)了解Linux系统中进程通信的基本原理。 2.实验预备内容 (1)阅读Linux的sched.h源码文件,加深对进程管理概念的理解; (2)阅读Linux的fork()源码文件,分析进程的创建过程。 3.实验内容 (1)进程的创建: 编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。 源代码如下: #include #include #include #include #include int main(int argc,char* argv[]) { pid_t pid1,pid2; pid1 = fork(); if(pid1<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid1 == 0){ printf("b\n"); } 1/11

else{ pid2 = fork(); if(pid2<0){ fprintf(stderr,"childprocess1 failed"); exit(-1); } else if(pid2 == 0){ printf("c\n"); } else{ printf("a\n"); sleep(2); exit(0); } } return 0; } 结果如下: 分析原因: pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!因此,这三个进程哪个先执行,哪个后执行,完全取决于操作系统的调度,没有固定的顺序。 (2)进程的控制 修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 将父进程的输出改为father process completed 2/11

实验一 进程管理

实验一进程管理 1. 实验目的 ⑴加深对进程概念的理解,明确进程和程序的区别; ⑵进一步认识并发执行的实质; ⑶分析进程争用资源的现象,学习解决进程互斥的方法; ⑷了解Linux系统中进程通信的基本原理。 2. 实验准备 ⑴阅读Linux的sched.h源码文件,加深对进程管理的理解。 ⑵阅读Linux的fork.h源码文件,分析进程的创建过程。 3. 实验内容 ⑴进程的创建 编写一段程序,使用系统调用fork ( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程显示字符“b”和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 ⑵进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 如果在程序中使用系统调用lockf ( )来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。 ⑶软中断通信 编制一段程序实现进程的软中断通信。要求:使用系统调用fork ( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上发来的中断信号(既按Del键);当捕捉到中断信号后,父进程系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal (SIGINT, SIG_IGN) 和signal (SIGQUIT, SIG_IGN),观察执行结果,并分析原因。 4. 实验指导

实验 进程管理与系统监视

实验报告 学院:专业:班级:成绩: 姓名:学号:组别:组员: 实验地点:实验日期:指导教师签名: 实验8项目名称:进程管理 1、实验目的 理解进程管理的基本原理方法,掌握在Linux系统中查看进程状态、控制进程以及调整进程优先级等基本方法。 2、实验内容 2.1 进程管理的基本概念 什么是进程管理?要理解这个概念,就必须理解什么是进程。进程是在《操作系统原理》课程中的一个核心概念。进程(Process)是程序的一个执行过程。进程需要占用各种系统资源,包括CPU、内存等,需要读写各类文件,调用各种系统功能。自然,从进程的创建到撤销,操作系统会为它安排一切。不过,操作系统的安排是根据固定的算法所进行,纵使这些算法能根据当前情况不断调整,但不可能预先知道你的需要,然后让某个进程在特定某个时间挂起,让某个进程的优先级升高等等。因此,进程管理是指根据当前实际需求,对进程加以特定的控制。 作为一个管理员,定时查看当前系统中各个进程的具体状态,捕捉各种进程运行的异常,合理分配各类资源,特别是CPU资源给不同的进程,对各类进程有计划地控制等等,都属于进程管理的内容。系统为管理员提供了一系列的工具和命令,以让管理员完成管理工作。 2.2进程管理的基本方法 2.2.1查看进程状态 获知进程状态是进程管理的第一步。UNIX系统为进程留了许多接口、命令和工具。最典型的是/proc文件系统。这是一个特殊的文件系统。在此文件系统中,每个目录对应于一个进程,目录的名称即为进程的PID号。进入某个进程对应的目录,里面有若干文件,这些文件记录了该进程当前运行的各种相关状态信息。应用程序可通过对这些文件打开并读取(部分甚至还能通过写文件控制进程)来获取进程信息。 例子:查看/proc文件系统 #cd /proc/ #ls

实验一进程管理实验

实验一linux进程的创建与控制 【实验目的】 1、加深对进程概念的理解,明确进程和程序的区别; 2、进一步认识并发执行的实质; 3、分析进程争用资源的现象,学习解决进程互斥的方法; 【实验环境】 编程环境:TC或者VC 操作系统软件:linux 【准备知识】 一.基本概念 1、进程的概念;进程与程序的区别。 2、并发执行的概念。 3、进程互斥的概念。 二.系统调用 系统调用是一种进入系统空间的办法。通常,在OS的核心中都设置了一组用于实现各 种系统功能的子程序,并将它们提供给程序员调用。程序员在需要OS提供某种服务的时候,便可以调用一条系统调用命令,去实现希望的功能,这就是系统调用。因此,系统调用就像 一个黑箱子一样,对用户屏蔽了操作系统的具体动作而只是控制程序的执行速度等。各个不同的操作系统有各自的系统调用,女口windows API,便是windows的系统调用,Linux的系 统调用与之不同的是Linux由于内核代码完全公开,所以可以细致的分析出其系统调用的机制。 三.相关函数。 1 fork()函数 fork()函数创建一个新进程。 其调用格式为:int fork(); 其中返回int取值意义如下: 正确返回:等于0 :创建子进程,从子进程返回的ID值; 大于0 :从父进程返回的子进程的进程ID值。

错误返回:等于一1创建失败。 2 wait()函数 wait()函数常用来控制父进程与子进程的同步。在父进程中调用wait()函数,则父进程被阻塞,进入等待队列,等待子进程结束。当子进程结束时,会产生一个终止状态字,系统会向父进程发出SIGCHLD言号。当接到信号后,父进程提取子进程的终 止状态字,从wait()函数返回继续执行原程序。 其调用格式为:#i nclude #i nclude / (pid_t) wait(i nt *statloc) ; 正确返回:大于0:子进程的进程ID值; / 等于0:其它。 错误返回:等于一1调用失败。 3 exit()函数 exit() 函数是进程结束最常调用的函数,在main()函数中调用return,最终也是调用exit()函数。这些都是进程的正常终止。在正常终止时,exit()函数返回进程 结束状态。 其调用格式为:#in elude <> void exit(i nt status) ; 其中status为进程结束状态。 4 kill()函数 \ kill()函数用于删除执行中的程序或者任务。 其调用格式为:kill(i nt PID,i nt IID) ; 其中:PID是要被杀死的进程号,IID为向将被杀死的进程发送的中断号。 关于Linux下的C语言编程 1 )编辑器可使用vi 2 )编译器使用gee 格式:gee optio n file name 例如:gee -o main 主要的option -o指定输出文件名(不指定则生成默认文件) 其它的参数见帮助(man gee)

最新整理Linux操作系统的进程管理详解

L i n u x操作系统的进程管理详解 L i n u x操作系统中进程的管理是很重要的一部分,下面由学习啦小编为大家整理了L i n u x操作系统的进程管理详解的相关知识,希望对大家有帮助! L i n u x操作系统的进程管理详解 对于L i n u x的进程的管理,是通过进程管理工具实现的,比如p s、k i l l、p g r e p等工具; L i n u x操作系统的进程管理/1、 p s监视进程工具; p s为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用t o p工具; 1.p s的参数说明; p s提供了很多的选项参数,常用的有以下几个; l长格式输出; u按用户名和启动时间的顺序来显示进程; j用任务格式来显示进程; f用树形格式来显示进程; a显示所有用户的所有进程(包括其它用户); x显示无控制终端的进程; r显示运行中的进程;

w w避免详细参数被截断; 我们常用的选项是组合是a u x或l a x,还有参数f 的应用; p s a u x或l a x输出的解释; U S E R进程的属主; P I D进程的I D; P P I D父进程; %C P U进程占用的C P U百分比; %M E M占用内存的百分比; N I进程的N I C E值,数值大,表示较少占用C P U时间; V S Z进程虚拟大小; R S S驻留中页的数量; W C H A N T T Y终端I D S T A T进程状态 D U n i n t e r r u p t i b l e s l e e p(u s u a l l y I O) R正在运行可中在队列中可过行的; S处于休眠状态; T停止或被追踪;

进程管理实验报告

进程管理实验报告 1 .实验目的 通过进程的创建、撤消和运行加深对进程概念和进程并发执行的理解,明确进程与程序之间的区别。 【答:进程概念和程序概念最大的不同之处在于: (1)进程是动态的,而程序是静态的。 (2)进程有一定的生命期,而程序是指令的集合,本身无“运动”的含义。没有建立进程的程序不能作为1个独立单位得到操作系统的认可。 (3)1个程序可以对应多个进程,但1个进程只能对应1个程序。进程和程序的关系犹如演出和剧本的关系。 (4)进程和程序的组成不同。从静态角度看,进程由程序、数据和进程控制块(PCB)三部分组成。而程序是一组有序的指令集合。】2 .实验内容 (1) 了解系统调用fork()、execvp()和wait()的功能和实现过程。 (2) 编写一段程序,使用系统调用fork()来创建两个子进程,并由父进程重复显示字符串“parent:”和自己的标识数,而子进程则重复显示字符串“child:”和自己的标识数。 (3) 编写一段程序,使用系统调用fork()来创建一个子进程。子进程通过系统调用execvp()更换自己的执行代码,新的代码显示“new program.”。而父进程则调用wait()等待子进程结束,并在子进程结束后显示子进程的标识符,然后正常结束。

(3)运行并查看结果 child’s pid=2894 child’s pid=2994 parent’s pid=2849 child’s pid=2897 child’s pid=2897 parent’s pid=2849 child’s pid=2894 child’s pid=2994 parent’s pid=2849 (4)gedit创建进程2.c 使用gcc 2.c -o 2编译并./2运行程序2.c#include #include #include #include #include(6)运行并查看结果 new program ! -rw-r–r--. 1 root root 2456 Apr 14 2019 /etc/passwd child peocess PID:29035 4 .思考 (1) 系统调用fork()是如何创建进程的?

实验一、进程调度实验报告

实验一、进程调度实验报告

广东技术师范学院实验报告 学院:计算机科学学 院 专业: 计算机科学与 技术(师范) 班级:成绩: 姓名:学号:组别:组员: 实验地点:实验日期:指导教师签名: 实验名称:实验一、进程调度实验 一、实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解 二、实验类别 综合性实验。综合高级语言编程、进程调度模型、进程调度算法及数据结构等多方面的知识 三、实验内容和步骤 1.编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法对五个进程进行调度。 “最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。 静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等 该题根据老师给的代码用Visual C++运行,结果以及分析如下: 预习情况操作情况考勤情况数据处理情况

结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程cc 最先调度进程cc的状态为运行态,需要执行的时间为10当前就绪队列状态为:进程aa先级比较高,处于就绪队列前面,而进程bb先级是三者中最低的,所以处于就绪队列的最后。而此时这两个进程的状态都为就绪态。

结果分析:当进程cc了一个时间片之后而它已占用CPU时间已达到所需要的运行时间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优先级大的进程进入运行状态,则该次进入运行态的是进程aa 按照这种方式一直运行下去: 直到:

相关文档
最新文档