第二章习题——进程的描述与控制

 

一、选择题

1、进程与程序的根本区别是(A)。

A.静态和动态特征                          B.是不是被调入到内存中

C.是不是存在三种基本状态            D.是不是占有处理机

进程与程序的区别:

(1)动态性:进程由创建而产生,由调度而执行,由撤销而消亡,进程有一定的生命周期;而程序只是一组有序的指令集合。

(2)并发性:多个进程实体能够在内存中同时运行;程序不能并发执行。

(3)独立性:进程是一个能独立运行独立接受调度的基本单位;程序只有建立PCB后才能作为一个独立的单位参与运行。

(4)异步性:异步性导致了进程的不可再现性,因为进程按照各自独立的、不可预知的速度向前推进。

2、操作系统是根据(  B)来对并发执行的进程进行控制和管理的。

A.进程放入基本状态                      B.进程控制块

C.多道程序设计                             D.进程的优先权

通过为每一个进程专门定义一个数据结构——进程控制块PCB来方便系统描述和管理进程。

3、某进程由于需要从磁盘上读入数据而处于等待状态。当系统完成了所需的读盘操作后,此时该进程的状态将(D)。

A.从就绪变为运行                          B.从运行变为就绪

C.从运行变为阻塞                          D.从阻塞变为就绪

进程的三种基本状态:

就绪:进程已经获得了除CPU以外的所有必要资源,只要获得了CPU便可立即执行。

执行:进程已经获得了CPU,其进程正在执行的状态。

阻塞:正在执行的进程由于IO请求、申请缓冲区失败等(如:访问临界资源)暂时无法继续执行的状态。

           引起进程阻塞的事件: 等待某操作的完成;新数据尚未到达;等待新任务的到达。

4、一个进程被唤醒意味着( B)。

A.该进程重新占有CPU                  B.进程状态变为就绪状态

C.它的优先权变为最大                   D.其PCB移至就绪队列的队首

一个进程唤醒的过程:需要借助于wakeup原语,首先把被阻塞的进程从等待改事件的队列中移除,将其PCB中的现行状态由阻塞改为就绪,然后将该PCB插入到就绪队列中。

5、进程从运行态到等待态可能是( A )。

A.运行进程执行了P操作               B.运行进程执行了V操作

C.进程时间片用完                          D.进程被调度

A:当p操作之前信号量的值为0的时候,执行p操作后信号量的值小于0,进入阻塞状态。

B:v操作是释放资源,会使得进程从阻塞状态变为就绪状态。

C:进程时间片用完会使得进程重执行状态变为就绪状态。

6、一个进程释放了一台打印机,有可能改变(C  )的状态。

A.自身进程                                    B.输入输出进程

C.另一个等待打印机的进程            D.所有等待打印机的进程

另外一个等待打印机的进程处于阻塞状态,获得打印机后将由阻塞状态变为就绪状态。

7、可能导致进程从运行状态变为就绪状态的事件为( D )。

A.等待I/O操作                              B.等待的事件发生

C.进程运行结束                             D.出现了比当前进程优先级高的进行

A:运行状态变为阻塞状态

B:运行状态变为阻塞状态

C:运行状态变为终止状态

D:运行状态变为就绪状态

8、必然会引起进程切换的事件为(B  )。

A.创建一个新的进程后进入就绪状态     B.一个进程从运行状态变为就绪状态

C.一个进程从阻塞状态变为就绪状态     D.以上说法都不对

 进程切换是指CPU调度不同的进程执行,当一个进程从运行状态变为就绪状态时,CPU调度另一个进程执行,引起进程切换

9、系统中有n(n>2)个进程,则不可能发生( C)。

A.  有1个运行进行和n-1个就绪进程,但没有进程处于等待状态

B. 有1个运行进程和1和就绪进程,剩下n-2个进程处于等待进行

C. 没有运行进程,1个就绪进程,剩下的n-1个进程处于等待状态

D.  没有就绪的进程和运行的进程,全部进程处于等待状态

C:没有运行进程说明CPU资源没有被利用,那么为什么还有进程等待着CPU资源不去利用呢?

10、下列状态的改变可以由进程自身决定的是( A )。

A.从运行到阻塞                                    B.从运行到就绪

C.从就绪到运行                                    D.从阻塞到就绪

A:申请资源失败

B:时间片用完

C:获得CPU资源

D:获得了等待的资源

11、用户可以通过(C)创建或终止一个进程。

A.函数调用                      B.指令                      C.系统调用                      D.命令

原语操作

12、两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息,或者建立某个条件后再向前执行,这种关系是进程间的(A )关系。

A.同步                             B.互斥                      C.合作                             D.竞争

进程同步的主要任务是,是对多个相关进程在执行次序上进行协调,使得并发执行的多个进程之间能够按照一定的规则共享资源。

13、进程间的同步和互斥,分别表示了进程间的(B )。

A.独立和制约                   B.协作和竞争            C.动态性和独立性            D.不同状态

进程同步时存在两种相互制约的关系:

(1)间接相互制约(竞争):由于共享系统资源如:CPU、IO设备。

(2)直接相互制约(合作):如:生产者和消费者问题。

14、操作系统在使用信号量解决同步和互斥问题中,若P、V操作的信号量S初始值为3,当前值为-2,则表示有( 2)个等待进程。

信号量值的意义:

例如:设某一个信号量的初始值为1,进行一次p操作后变为0,此时,已经没有资源了,但是没有进程处于阻塞;

           进行第二次操作后,变为-1,表示已经没有资源了,并且另外一个进程处于阻塞状态;

           初始值1表示可用资源数量。

15、有3个进程共享同一个程序段,而每次只允许两个进程进入该程序段,若用P、V操作同步机制,则信号量S的取值范围是( -1,0,1,2)。

为了保证每次只允许两个进程进入该程序段需要设置信号量的初始值为2。

所以:当没有进程进入时信号量的值为2;一个进程进入1;两个进入0,;三个进入-1(阻塞)

16、设某资源关联的信号量初值为3,当前值为1,若M表示资源可以用的数量,N表示等待资源的进程数,则M、N分别是( B )。

A.0、1                             B.1、0                      C.1、2                      D.2、0

当前值为1代表一个可用,没有进程在等待资源。

如果有进程在等待资源的话,信号量的当前值应该为小数。

17、执行V操作时,当信号量的值(C),应释放一个等待该信号量的进程。

A.小于0                           B.大于0                    C.小于等于0             D.大于等于0

p操作的作用是申请资源,即将资源数减1,然后判断资源数是否小于0,若小于0,则进入阻塞状态。

v操作的作用是归还资源,将所申请的资源数加一,然后判断资源数是否小于等于0,若小于等于0说明有进程阻塞在当前资源上,唤醒一个阻塞的进程。

18、对两个并发进程,其互斥信号量为mutex,若mutex=0,则表明(C)

A.没有进程进入临界区                         

B.有两个进程进入临界区

C.一个进程进入临界区但没有进程处于阻塞状态

D.一个进入临界区一个出去等待进入临界区的状态

等于零说明没有资源了,但是没有进程处于阻塞状态。

19、信箱通信是一种( B)。

A.直接通信                      B.间接通信               C.低级通信               D.信号量

是一种间接通信方式,需要某种中间实体来完成。

20、下面说法正确的是(C)。

A.不论是系统支持的线程还是用户级线程,其切换都需要内核的支持

B.线程是资源分配的单位,进程是调度和分派的单位

C.不管系统中是否有线程,进程都是拥有资源的独立单位

D.在引入线程的系统中,进程仍是资源调度和分配的基本单位

A:用户级线程是与内核无关的P79

B:进程:

(1)拥有资源的基本单位。

(2)可独立调度和分派的基本单位。

     线程:

(1)线程本身拥有少量资源,它可以共享所属进程的资源。

(2)独立运行和调度的基本单位。

C:线程本身拥有少量资源,它可以共享所属进程的资源。

D:引入线程后,进程仍然是资源分配的单位,线程是调度和分派的单位。

21、下列选项中,会导致用户从用户态切换到内核态的操作是(B)

ⅰ.整数除以零

ⅱ.sin函数调用 

ⅲ.read函数调用

A. ⅰ和ⅱ                   B. ⅰ和ⅲ                    C. ⅱ和ⅲ                    D. ⅰ、ⅱ和ⅲ

用户态切换到内核态的三种方式: 系统调用、  异常 、外围设备中断

二、综合应用题

1、进程之间存在哪些制约关系?下列活动属于哪些制约关系?

进程之间存在着直接制约和间接制约两种制约关系,其中直接制约(同步)是由于进程间的相互合作而引起的(生产者、消费者问题),而间接制约(互斥)则是由于进程间共享临界资源而引起的。P48

(1)若干学生去图书馆借同一本书

 间接制约关系(互斥),因为书是临界资源,需要采用互斥的方式来实现对该资源的共享。

(2)两队进行篮球比赛

  间接制约关系(互斥),因为篮球是临界资源。

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

 直接制约(同步),一个工序生产后才能开始下一个工序。

 (4)商品生产和消费

  直接制约(同步),生产后才能消费。

 2、某组相互合作的进程,其前趋图如下所示,信号量a,b,c,d,e,f 的初始值为0,请用P、V 操作实现进程间的同步操作。p57

 

 

 3、桌子上有一只盘子,每次只能向其中放入一个水果。爸爸专门向盘子中放苹果,妈妈专门向盘子中橘子,儿子专门等吃盘子中的橘子,女儿专门等吃盘子中的苹果。只有盘子为空时,爸爸或妈妈就可向盘子中放一个水果;仅当盘子中有自己需要的水果时,儿子或女儿可以从盘子中取出。请利用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步和互斥关系。

 盘子是临界资源,要实现互斥访问,需要设置一个信号量,用f表示,苹果a,橘子o,盘子的状态(空或满)e。

semphone f=1,e=1,a=0,o=0;
processDad(){
    wait(e);//先判断盘子是否有空间 ,没有的话就不能向下进行了 
    wait(f);//判断盘子是否被占用,即是否有其他人在操作 
    setApple();//放置苹果 
    signal(a);//苹果加一 
    signal(f);//释放盘子资源 
} 

processMom(){
    wait(e);//先判断盘子是否有空间 ,没有的话就不能向下进行了 
    wait(f);//判断盘子是否被占用,即是否有其他人在操作 
    setOrange();//放置橘子 
    signal(o);//橘子加一 
    signal(f);//释放盘子资源 
}

processSon(){
    wait(o);//先判断盘子是否有橘子 ,没有的话就不能向下进行了 
    wait(f);//判断盘子是否被占用,即是否有其他人在操作
    eatOrange();//拿走橘子 
    signal(e);//盘子空间加一 
    signal(f);//释放盘子资源 
} 

processDaughter(){
    wait(a);//先判断盘子是否有苹果 ,没有的话就不能向下进行了 
    wait(f);//判断盘子是否被占用,即是否有其他人在操作
    eatApple();//拿走苹果 
    signal(e);//盘子空间加一 
    signal(f);//释放盘子资源 
}

注意:需要设置一个信号量来实现对盘子的互斥访问,每一个进程执行对盘子的p操作后,只要盘子还有资源,就可以继续进行,否则表示盘子已经被占用了,该进程进入阻塞状态。

4、某博物馆最多可以容纳1000人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:

参观者进程:

{

进门;

……

参观;

……

出门;

}

请添加必要的信号量和P、V操作以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。 

semophone empty=1000,mutex=1;//empty表示空闲位置的数量 
p(empty);//因为是先执行进门操作,所以需要先对容量进行判断 
p(mutex);//占用临界资源 
进门; 
v(mutex);//释放 
p(mutex);//占用 
出门; 
v(mutex);//释放 
v(empty);//空间加一 

5、有一只最多能装2只兔子的铁笼子,猎人仅能向笼子中放入兔子(每次只能放入1只),若笼子是满的,则猎人必须等待;饭店老板仅能从笼子中取兔子(每次只能取出1只),若笼子是空的则他也必须等待。假设初始时笼子是空的。使用P、V操作实现猎人和饭店老板进程之间的同步与互斥。要求写出完整的过程,并对信号量赋初值。

semophone mutex=1,empty=2,full=0;
Hunter(){
    p(empty);//先判断是否有空间 
    p(mutex);//猎人和用户要实现对笼子的互斥访问 
    v(mutex);//释放笼子资源 
    v(full);//空间减一 
}

Boss(){
    p(full);//先判断笼子里是否有兔子 
    p(mutex);//猎人和用户要实现对笼子的互斥访问 
    v(mutex);//释放笼子资源 
    v(empty);//空间加一 
} 

总结:对于信号量问题,一般都是(1)先判断空间的数量(信号量empty、full),然后需要(2)对临界资源(信号量mutex)是否被占用进行判断。

猜你喜欢

转载自www.cnblogs.com/zhai1997/p/11997773.html