考研操作系统进程管理三.docx
《考研操作系统进程管理三.docx》由会员分享,可在线阅读,更多相关《考研操作系统进程管理三.docx(31页珍藏版)》请在冰点文库上搜索。
考研操作系统进程管理三
考研操作系统-进程管理(三)
(总分:
160.00,做题时间:
90分钟)
一、选择题
(总题数:
24,分数:
48.00)
1.在单处理机系统中,处于运行状态的进程()。
A.只有一个B.可以有多个
C.不能被挂起D.必须在执行完后才能被撤下
A. √
B.
C.
D.
本题目考查单处理机进程执行的特点。
在单处理机中,任何时刻只有一个进程可以占用处理机执行,因此应该选择A。
2.一个进程被唤醒意味着()。
A.该进程重新占有了CPUB.进程状态变为就绪
C.它的优先权变为最大D.其PCB移至就绪队列的队首
A.
B. √
C.
D.
本题目考查进程的状态转换。
进程被唤醒后由阻塞态转换为就绪态,进入就绪队列排队。
因此应该选择B。
3.进程从运行状态变为等待状态的原因是()。
A.输入或输出事件发生B.时间片到
C.输入或输出事件完成D.某个进程被唤醒
A. √
B.
C.
D.
本题目考查引起进程阻塞的原因。
当进程启动输入输出设备时,就会自动进入阻塞状态等待,当I/O操作完成后,再由中断处理程序将该进程唤醒。
因此应该选择A。
4.操作系统中有一组常称为特殊系统调用,它不能被系统中断,在操作系统中称为()。
A.初始化程序B.原语C.子程序D.控制模块
A.
B. √
C.
D.
本题目考查原语的概念。
原语是原子操作,在执行过程中不允许被中断。
原语在管态下执行。
因此应该选择B。
5.进程和程序的本质区别是()。
A.存储在内存和外存B.顺序和非顺序执行机器指令
C.分时使用和独占使用计算机资源D.动态和静态特征
A.
B.
C.
D. √
本题目考查进程和程序的本质区别。
进程的实质是程序的一次执行过程,是动态的;而程序只是一组有序指令的集合,本身并无运动的含义,是静态的。
这是它们本质上的区别。
因此应该选择D。
6.下面对临界区的论述中,正确的是()。
A.临界区是指进程中用于实现进程互斥的那段代码
B.临界区是指进程中用于实现进程同步的那段代码
C.临界区是指进程中用于实现进程通信的那段代码
D.临界区是指进程中访问临界资源的那段代码
A.
B.
C.
D. √
本题目考查临界区的概念。
临界区是指进程中访问临界资源的那段代码,因此应该选择D。
7.下列各项步骤中,()不是创建进程所必需的步骤?
A.建立一个进程控制块PCBB.由CPU调度程序为进程调度CPU
C.为进程分配内存等必要的资源D.将PCB链入进程就绪队列
A.
B. √
C.
D.
本题目考查创建进程的步骤。
创建一个新的进程时的步骤是:
(1)需申请一个空白PCB;
(2)为新进程分配资源;(3)初始化PCB;(4)将新进程插入就绪队列。
因此应该选择B。
8.进程状态由就绪状态转化到运行状态是由()引起的。
A.中断事件B.进程状态转换C.进程调度D.程序被创建为进程
A.
B.
C. √
D.
本题目考查进程的基本状态转换。
处于就绪态的进程经过进程调度则会获得CPU执行,从而转化为执行态。
因此应该选C。
9.进程从运行态到等待态可能是由于()。
A.进程调度程序的调度B.现运行进程执行了P操作
C.现运行进程执行了V操作D.现运行进程时间片用完
A.
B. √
C.
D.
本题目考查进程的基本状态转换。
进程调度程序只能使由就绪态转化为执行态;运行的进程执行V操作则会唤醒等待态的进程;现运行的进程时间片用完则进入就绪队列排队;只有现运行的进程执行了P操作时,如果信号量的值小于0,则进入阻塞队列等待。
因此应该选B。
10.一个进程的基本状态可以从其他两种基本状态转变过来,这个基本状态一定是()。
A.执行状态B.阻塞状态C.就绪状态D.完成状态
A.
B.
C. √
D.
本题目考查进程的基本状态转换。
执行态只能由就绪态转换而来;进程在执行时发生某些事件而无法继续执行时才转入阻塞状态;当进程执行完毕则进入完成状态;处于阻塞状态的进程在其所期待的事件发生时,则有阻塞状态转入就绪状态,正在执行的进程时间片用完,或在优先权优先的抢占式调度方式的系统中,当有更高优先权的进程就绪时,则会抢占正在执行的进程的处理机,从而使其从执行状态转换为就绪状态。
因此应该选C。
11.进程申请打印输出完成向系统发出中断后,进程的状态变化为()。
A.从就绪到执行B.从执行到等待
C.从等待到就绪D.从执行到就绪
A.
B.
C. √
D.
本题目考查进程的基本状态转换。
当处于阻塞的进程所期待的事件发生时,则由等待状态转换为就绪状态。
因此应该选C。
12.下列选项中,降低进程优先级的合理时机是()。
A.进程的时间片用完B.进程刚完成I/O,进入就绪队列
C.进程长期处于就绪队列中D.进程从就绪状态转为运行态
A. √
B.
C.
D.
本题目考查进程的基本状态转换。
完成I/O进入就绪队列的进程尚未执行,不能降低其优先级;长期处于就绪队列的进程应提高其优先级;进程刚刚转入运行态,也不应降低其优先级;当进程的时间片用完,调度程序需要调度其他程序进入处理机执行,此时降低进程优先级是合理的。
因此应该选A。
13.设与某资源关联的信号量初值为3,当前值为1。
若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别是()。
A.0、1B.1、0C.1、2D.2、0
A.
B. √
C.
D.
本题目考查信号量的物理含义。
根据信号量的物理含义:
S.value>0时表示有S.value个资源可用;S.value==0表示无资源可用;S.value<0则|S.value|表示等待队列中的进程个数。
信号量的当前值为1,则表示该资源的可用个数为1,没有等待该资源的进程。
因此应该选B。
14.设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示()。
A.一个进程进入了临界区,另一个进程等待
B.没有一个进程进入临界区
C.两个进程都进入了临界区
D.两个进程都在等待
A. √
B.
C.
D.
本题目考查互斥信号量的物理含义。
mutex为互斥信号量,则初值为1,当前值为-1,则表示已经有一个进程执行了P操作进入临界区,而另外一个进程执行P操作使mutex的值变为-1,从而进入阻塞队列等待。
因此应该选A。
15.当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为()。
A.>0B.<0C.>=0D.<=0
A.
B.
C.
D. √
本题目考查P、V操作的定义。
根据V操作的定义,进程执行V操作时,先使信号量的值加1,如果信号量的值小于等于0,则唤醒一个等待在该信号量上的进程。
因此应该选D。
16.若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是()。
A.3,2,1,0B.3,2,1,0,-1
C.4,3,2,1,0D.2,1,0,-1,-2
A.
B. √
C.
D.
本题目考查信号量的取值范围。
程序段最多允许三个进程进入,则表示资源的数目为3,因此,信号量初值为3,每进入一个进程,信号量的值减1,当信号量的值减为0时,表示三个进程均进入程序段,此时若再有一个进程请求进入执行P操作,则信号量的值减为-1,进程阻塞。
一共有四个进程,所以信号量的值最小为-1。
因此信号量的值取值范围为3,2,1,0,-1。
因此应该选B。
17.并发进程之间()。
A.彼此无关B.必须同步
C.必须互斥D.可能需要同步或互斥
A.
B.
C.
D. √
本题目考查进程之间有两种制约关系。
并发进程之间有两种制约关系:
直接相互制约和间接相互制约关系,直接制约关系决定进程之间需要互斥,间接制约关系决定进程之间需要同步。
因此应该选D。
18.下列哪种方法不能实现进程之间的通信()?
A.共享文件B.数据库C.全局变量D.共享内存
A.
B.
C. √
D.
本题目考查进程通信的方法。
全局变量是一个进程内各个函数共享的变量,进程之间的使用同一个变量称为共享变量。
因此,全局变量不能实现进程之间的通信。
因此应该选C。
19.在支持多线程的系统中,进程P创建的若干个线程不能共享的是()。
A.进程P的代码段B.进程P中打开的文件
C.进程P的全局变量D.进程P中某线程的栈指针
A.
B.
C.
D. √
本题目考查线程的特点。
引入线程的系统中,一个进程中的各个线程可以共享其隶属进程的资源,包括一个进程的代码段、数据段及所拥有系统资源,如已打开的文件、I/O设备等。
而为了保证线程的独立运行,每个线程都应该包含独立的堆栈和CPU寄存器状态,这些是不能共享的。
因此应该选D。
20.有两个并发执行的进程P1和P2,共享初值为1的变量x。
P1对x加1,P2对x减1。
加1和减1操作的指令序列分别如下所示。
//加1操作//减1操作
LoadR1,x//取x到寄存器中LoadR2,x
IncRldecR2
Storex,R1//将R的内容存入xStorex,R2
两个操作完成后,x的值()。
A.可能为-1B.只能为1
C.可能为0、1、2D.可能为-1、0、1、2
A.
B.
C. √
D.
本题目考查进程并发执行的顺序。
若进程P1和P2顺序执行时,无论P1先执行,还是P2先执行,其结果均为1;若进程P1和P2在并发执行时其指令序列交替执行,P1执行到IncR1后,P2执行,P2完成后,P1再接着执行,则其结果为2;若P2先执行到DecR2后,P1执行,P1完成后,P2再接着执行,在其结果为0。
因此应该选C。
21.系统中共有5个用户进程,且当前CPU在用户态下执行,则最多可有()个用户进程处于就绪状态。
A.2B.3C.4D.5
A.
B.
C. √
D.
本题目考查进程的基本状态。
当前CPU在用户态下执行,说明一定有一个用户程序在占用CPU,处于执行态,因此,最多有4个进程处于就绪状态。
因此应该选C。
22.系统中共有5个用户进程,且当前CPU在核心态下执行,最多可有()个用户进程处于阻塞状态。
A.2B.3C.4D.5
A.
B.
C.
D. √
本题目考查进程的基本状态。
当前CPU在核心态下执行,说明没有用户程序占用CPU,因此,最多可以有5个进程处于阻塞状态。
因此应该选D。
23.进程控制块是描述进程状态和特性的数据结构,一个进程()。
A.可以有多个进程控制块
B.可以和其他进程共用一个进程控制块
C.可以没有进程控制块
D.只能有唯一的进程控制块
A.
B.
C.
D. √
本题目考查进程PCB的概念。
PCB是进程存在的唯一标志,每个进程有且只有一个PCB。
因此应该选D。
24.下列关于进程和线程的叙述中,正确的是()。
A.不管系统是否支持线程,进程都是资源分配的基本单位
B.线程是资源分配的基本单位,进程是调度的基本单位
C.系统级线程和用户级线程的切换都需要内核的支持
D.同一进程中的各个线程拥有各自不同的地址空间
A. √
B.
C.
D.
本题考查线程的基本概念及进程和线程的区别。
在不支持线程的操作系统中,进程既是资源分配的基本单位,也是调度的基本单位;在拥有线程的操作系统中,线程是调度的基本单位,而进程是资源分配的基本单位。
系统级线程的切换需要内核的支持,用户级线程的切换不需要内核的支持。
同一进程中的线程共享同一物理内存空间。
因此应该选择A。
二、综合应用题
(总题数:
14,分数:
112.00)
25.如果信号量S的初值是5,现在信号量的值是-5,那么系统中的相关进程至少执行了几个P(S)操作?
与信号量S相关的处于阻塞状态的进程有几个?
如果要使信号量S的值大于0,应该进行怎样的操作?
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(
(1)因为每执行一次P操作S的值减1,5-(-5)=10,在这期间有可能有进程执行V操作,使S的值加1,所以至少执行了10次P(S)。
(2)5个。
(3)6个V(S)或5个以上。
)
本题考查对信号量概念的理解,主要根据信号量的物理意义进行解答。
26.设A、B为两个并发进程,它们共享一个临界资源,其执行临界区的算法框图如图2.10所示。
试判断该算法是否有错?
请说明理由。
如果有错,请改正。
Sl、S2的初值为0,CSA、CSB为临界区。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(该算法有错。
一方面,首次访问临界资源必须是A进程,如果A进程永不要求访问临界资源,则不会执行V(S1),那么B进程永远得不到操作临界资源的机会;另一方面,如果A进程首次访问了临界资源,那么接下来,只能两个进程交替使用临界资源,如果有一个进程不再访问临界资源,则另一个进程下次将得不到操作临界资源的机会。
所以问题在于:
本应进行互斥控制,却使用的是同步控制。
改正如下:
设置信号mutex
mutex:
=1;
Cobegin
A进程:
Begin
repeat
p(mutex);
CSA;
V(mutex);
untilfalse
End
B进程:
Begin
repeat
P(mutex);
CSB;
V(mutex);
untilfalse
End
Coend)
本题目考查进程同步算法的判断。
27.一组合作进程,执行顺序如图2.11所示。
请用P、V操作实现进程间的同步操作。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(semaphorea=b=c=d=e=f=g=h=0;
P1(){…;V(a);V(b);}
P2(){p(a);…;v(c);v(d);}
P3(){P(b);…;v(e);v(f);}
P4(){P(c);P(e);…;v(g);}
P5(){P(d);P(f);…;v(h);}
P6(){P(g);P(h);…;})
本题目考查利用信号量实现前趋关系。
28.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看做一个进程,请回答下列问题:
(1)用P、V操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,利用P、V操作写出能正确并发执行的进程。
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(
(1)定义一信号量S,初始值为20。
S>0,S的值表示可继续进入售票厅的人数;
S=0,表示售票厅中已有20名顾客(购票者);
S<0,|S|的值为等待进入售票厅的人数。
(2)COBEGIN
Pi(i=1,2,….)
{
P(S);
进入售票厅:
购票:
退出:
V(S);
}
COEND
(3)S的最大值为20;
S的最小值为20-N。
)
本题目考查进程的同步问题。
29.在公共汽车上,司机负责开车、停车和驾驶,售票员负责门的开门、关门和售票。
基本操作规则是只有停车后,售票员才能开门,只有售票员关门后,司机才能开车。
汽车初始状态处于行驶之中。
当只有1个司机、2个售票员、2个门、每个售票员负责一个门时的协调操作。
请使用P、V原语实现售票员与司机之间的协调操作,说明每个信号量的含义、初值和值的范围。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(确定P、V操作的位置:
司机操作中,是否关前门?
没关则等待,这是一个P操作,P(Door1);是否关后门?
没关则等待,这是一个P操作,P(Door2);
司机操作中,设立启动标志,通知前、后门售票员可以售票,这是两个V操作,V(T1),V(T2);
司机操作中,设立停车标志,通知前、后门售票员可以开门,这是两个V操作,V(S1),V(S2);
前门售票员售票操作中,汽车是否启动?
没启动则等待,这是一个P操作,P(T1)。
前门售票员开门操作中,是否停车?
没停则等待,这是一个P操作,P(S1);
前门售票员关门操作中,设立关门标志,这是一个V操作,V(Door1);
后门售票员售票操作中,汽车是否启动?
没启动则等待,这是一个P操作,P(T2)。
后门售票员开门操作中,是否停车?
没停则等待,这是一个P操作,P(S2);
后门售票员关门操作中,设立关门标志,这是一个V操作,V(Door2);
由于汽车初始状态处于行驶之中,所以Door1=Door2=0,T1=T2=0(不严格),S1=S2=0,所有信号量的取值范围都是-1~1。
SemaphoreDoor1=Door2=1;
SemaphoreS1=S2=0;
SemaphoreT1=T2=1;
main()
{
cobegin
driver();busserver1();busserver2();
coend
}
driver()
{dowhileT
{P(Door1);p(Door2);
启动车辆;
V(T1);V(T2);
正常行车;
到站停车;
V(S1);V(S2);
}
}
busserver1()
{dowhileT
{
P(T1);
售票;
p(S1);
开前门;
关前门;
V(Door1);
}
}
busserver2()
{dowhileT
{
p(T2);
售票;
P(S2);
开后门;
关后门;
V(Door2);
}
})
本题目考查进程的同步问题。
司机的启动、停车操作需要与两个售票员的关门、售票、开门操作同步。
30.设A、B两个火车站之间是单轨连接的,现有许多列车同时到A站,需经A站到达B站,列车出B站后又可分路行驶(如图2.12)。
为保证行驶安全,请设计一个自动调度系统保证系统安全。
提示:
可用P、V操作设计。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(设A、B两个火车站之间的单轨段为临界段CAB,P、V操作程序为:
main()
{
SemaphoreS=1;
Cobegin
ProcessPi
{
P(S)
通过CAB;
V(S);
}
Coend
})
本题目考查进程互斥。
由题意可知,A、B两个火车站之间的单轨段为临界资源,需互斥使用。
31.生产围棋的工人不小心将相等数量的黑子和白子混合装在一个盒子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:
PA专拣黑子,PB专拣白子;每次只拣一个子,当一个进程拣子时,不许另一个进程去拣子;当一个进程拣子后,必须让另一个进程拣子。
试回答:
(1)两个进程间是同步还是互斥?
(2)写出用P、V定义的信号量及其初值。
(3)写出P、V管理的两个并发进程的程序。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(
(1)同步关系。
(2)两个信号量:
S1允许拣黑子;S2允许拣白子;初值为:
0、1或1、0。
(3)程序如下:
main()
{
SemaphoreS1,S2;
S1=1;S2=0;
cobegin
processPA();
processPB();
coend
}
processPA()
{
while
(1)
{
P(S1);
拣黑子;
V(S2);
}
}
processPB()
{
while
(1)
{
P(S2);
拣白子;
V(S1);
}
})
本题目考查进程同步。
由题意可知,这个问题是两个进程的简单同步问题。
32.三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。
P1每次用“produce()”生成一个正整数并用“put()”送入缓冲区某一空单元中;P2每次用“getodd()”从该缓冲区中取出一个奇数并用“countodd()”统计奇数个数;P3每次用“geteven()”从该缓冲区中取出一个偶数并用“countieven()”统计偶数个数。
请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。
要求用伪代码描述。
(分数:
8.00)
__________________________________________________________________________________________
正确答案:
(Semaphores1=0,s2=0,empty=N,mutex=1;
main()
{
cobegin
P1();P2();P3();
coend
}
P1()
{
x=produce();
P(empty);
P(mutex);
Put()
if(x%2==0)V(s2);
elseV(s1);
V(mutex);
}
P2()
{
P(s1)
P(mutex);
Getodd();
Countodd()=countodd()+1;
V(mutex);
V(empty);
}
P3()
{
P(s2)
P(mutex);
Geteven();
Counteven():
=counteven()+1;
V(mutex);
V(empty);)
本题目考查进程的同步与互斥。
本题目是苹果一橘子问题(例14)的变形。
进程P1可以看做是生产者,进程P2和P3可看做是消费者,进程P1和P2、P3共享大小为N的缓冲区。
进程P1、P2和P3需互斥使用缓冲区,P1进程需要与P2进程、P3进程同步。
定义信号量S1控制P1与P2之间的同步;S2控制P1与P3之间的同步;empty控制生产者与消费者之间的同步;mutex控制进程间互斥使用缓冲区。
33.一个理