资源描述
第二章练习
一、 选择题
1. 进程依靠( )从阻塞状态过渡到就绪状态。
A、程序员的命令 B、系统服务
C、等待下一个时间片到来 D、“合作”进程的唤醒
2、某进程在运行过程中需要等待从磁盘上读入数据,此时该进程的状态将( )。A. 从就绪变为运行; B.从运行变为就绪;
C. 从运行变为阻塞; D.从阻塞变为就绪;
3、进程控制块是描述进程状态和特性的数据结构,一个进程( )。
A、可以有多个进程控制块; B、可以和其他进程共用一个进程控制块;
C、可以没有进程控制块; D、只能有惟一的进程控制块。
4.如果有N个进程共享同一互斥段,而且每次最多允许M个(M<N)进程进入该互斥段,则信号量的初值应设置为( )
A. N B. M C. 1 D. 0
5、进程状态从就绪状态到运行状态的转化工作是由()完成的
A、作业调度 B、中继调度 C、进程调度 D、设备调度
6、在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区,所谓临界区是指( ):
A、一个缓冲区 B、 一段数据区 C、同步机制 D、一段程序
7.实现进程同步时,每个消息与一个信号量对应,进程( )可把不同的消息发送出去
A. 在不同信号量上调用P操作 B. 在同一信号量上调用P操作
C. 在不同信号量上调用V操作 D. 在同一信号量上调用V操作
8.若信号量S的初值为2,当前值为-2,则表示当前系统中存在着( )个进程。
A. 1 B. 2 C. 3 D. 4
9.( )在下面关于线程的叙述中,正确的是:
A. 不管系统中是否还有线程,进程都是拥有资源的独立单位
B. 不论是系统支持线程还是用户级线程,其切换都需要内核的支持
C. 线程是资源的分配单位,进程是调度和分派的单位
D. 在引入线程的系统中,进程仍是资源分配和调度分派的基本单位
二、 填空题
1、程序的____________执行是现代操作系统的基本特征之一,为了更好地描述这一特征而引入了____________这一概念。
2、进程至少有三种基本状态:____________、____________和____________。
3、进程被创建后,最初处于_________状态,然后经_________选中后进入执行状态。
4、进程的同步和互斥反映了进程间____________和____________的关系。
5、用于进程控制的原语主要有________、________、_________和________。
6、操作系统中信号量的值与____________的使用情况有关,它的值仅能由____________来改变。
7、每执行一次P操作,信号量的数值S减1。若S>=0,则该进程____________;若S<0,则该进程____________。
8、每执行一次V操作,信号量的数值S加1。若____________,则该进程继续执行;否则,从对应的______队列中移出一个进程并将_______状态赋予该进程。
9、利用信号量实现进程的____________,应为临界区设置一个信号量mutex,其初值为1,表示该资源尚未使用,临界区应置于________和_______原语之间。
三、进程同步练习
1 、某工厂有两个生产车间和一个装配车间,两个生产车间分别生产A、B两种零件,装配车间的任务是把A、B两种零件组装成产品。两个生产车间每生产一个零件后都要分别把它们送到装配车间的货架F1和F2上,F1存放A、F2存放B,F1、F2的容量均为10。装配工人每次从货架上取一个零件A和B后组装成产品。请用P、V操作进行正确的管理。
2、把学生和监考老师都看作进程,学生有N人, 教师1人。考场门口每次只能进出一个人,进考场原则是先来先进。当N个学生都进入考场后, 教师才能发卷子。学生交卷后可以离开考场, 教师要等收上来全部卷子并封装卷子后才能离开考场。
(1) 问共需设置几个进程?
(2) 试用P、V操作解决上述问题中的同步和互斥关系。
进程同步练习
1、解答:
(1) var puta,geta,putb,getb,mutex1,mutex2 :semaphore=10,0,10,0,1,1;
(2)COBEGIN
PROCESS P1
begin ;
生产一个零件A
P(puta) ;
P(mutex1)
放到货架F1;
V(mutex1)
V(geta) ;
end ;
PROCESS P2
begin ;
生产一个零件B
P(putb) ;
P(mutex2)
放到货架F2;
V(mutex2)
V(getb) ;
end ;
PROCESS C
begin ;
P(geta) ;
P(mutex1) ;
从货架F1取零件A;
V(mutex1) ;
V(puta);
P(getb);
P(mutex2) ;
从货架F2取零件B;
V(mutex2)
V(putb) ;
装配零件A和B;
end ;
COEND
2、解答:
解:semaphore S_Door; // 能否进出门,初值1
semaphore S_StudentReady; // 学生是否到齐,初值为0
semaphore S_ExamBegin; // 开始考试,初值为0
semaphore S_ExamOver; // 考试结束,初值为0
int nStudentNum = 0; // 学生数目
semaphore S_Mutex1 //互斥信号量,初值为1
int nPaperNum = 0; // 已交的卷子数目
semaphore S_Mutex2 //互斥信号量,初值为1
void student( )
{
P(S_Door);
进门;
V(S_Door);
P(S_Mutex1);
nStudentNum ++; // 增加学生的个数
if(nStudentNum == N) V(S_StudentReady);
V(S_Mutex1);
P(S_ExamBegin); // 等老师宣布考试开始
考试中…
交卷;
P(S_Mutex2);
nPaperNum ++; // 增加试卷的份数
if(nPaperNum == N) V(S_ExamOver);
V(S_Mutex2);
P(S_Door);
出门;
V(S_Door);
}
void teacher( )
{
P(S_Door);
进门;
V(S_Door);
P(S_StudentReady);//等待最后一个学生来唤醒
发卷子;
for(i = 1; i <= N; i++) V(S_ExamBegin);
P(S_ExamOver); // 等待考试结束
封装试卷;
P(S_Door);
出门;
V(S_Door);
}
展开阅读全文