第4章习题及答案.docx

上传人:b****5 文档编号:4553176 上传时间:2022-12-06 格式:DOCX 页数:12 大小:107.84KB
下载 相关 举报
第4章习题及答案.docx_第1页
第1页 / 共12页
第4章习题及答案.docx_第2页
第2页 / 共12页
第4章习题及答案.docx_第3页
第3页 / 共12页
第4章习题及答案.docx_第4页
第4页 / 共12页
第4章习题及答案.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第4章习题及答案.docx

《第4章习题及答案.docx》由会员分享,可在线阅读,更多相关《第4章习题及答案.docx(12页珍藏版)》请在冰豆网上搜索。

第4章习题及答案.docx

第4章习题及答案

第四章习题及解答

4-3什么是进程?

进程与程序的主要区别是什么?

答:

进程是一个具有一定独立功能的程序关于某个数据集合的一次活动。

进程与程序的主要区别是:

(1)程序是指令的有序集合,是一个静态概念。

进程是程序在处理机的一次执行过程,是一个动态概念。

进程是有生命期的,因创建而产生,因调度而执行,因得到资源而暂停,因撤消而消亡;

(2)进程是一个独立的运行单元,是系统进行资源分配和调度的独立单元,而程序则不是。

(3)进程与程序之间无一一对应关系。

一个程序可以对应多个进程,一个进程至少包含一个程序。

4-4图4.2标明程序段执行的先后次序。

其中:

I表示输入操作,C表示计算操作,P表示打印操作,下角标说明是对哪个程序进行上述操作。

请指明:

(1)哪些操作必须有先后次序?

其原因是什么?

(2)哪些操作可以并发执行?

其原因又是什么?

答:

(1)①In、Cn和Pn之间有先后顺序要求,这是由于程序本身的逻辑要求。

②使用同一设备的不同的程序段,如C1…Cn,I1…In,P1…Pn,之间有先后顺序要求,这是由于设备某一时刻只能为一个程序服务。

(2)不同程序使用不同设备时,占用不同设备,无逻辑关系,可以并发执行,如I2和C1;I3、C2和P1。

4-9某系统进程调度状态变迁图如图4.31所示,请说明:

(1)什么原因会导致发生变迁2、变迁3、变迁4?

答:

发生变迁2的原因:

时间片到

发生变迁3的原因:

请求I/O或其他系统调用

发生变迁4的原因:

I/O完成或其他系统调用完成

(2)在什么情况下,一个进程的变迁3能立即引起另一个进程发生变迁1?

答:

一个进程的变迁3能立即引起另一个进程发生变迁的条件是,就绪队列非空。

(3)下列因果变迁是否可能发生?

若可能,需要什么条件?

a.2→1;b.3→2;c.4→1

答:

a.2→1不需要条件,一定会发生。

b.3→2不可能发生。

c.4→1可能发生,条件:

就绪队列为空,或在可剥夺调度方式下,转变为就绪状态的进程优先级最高。

4-10某系统jincheng状态除了3个最基本状态外,又增加了创建状态、完成状态、因等消息而转变为等待状态3种新的状态,试画出增加新状态后的进程状态变迁图,并说明发生每一个变迁的原因。

答:

进程状态变迁图:

 

进程状态变迁原因:

运行—>等待:

请求I/O;等待—>就绪:

请求完成;

运行—>就绪:

时间片到;就绪—>运行:

CPU空闲,进程调度程序工作;

创建—>就绪:

进程创建;运行—>等消息:

等待消息;

等消息—>就绪:

收到消息;运行—>完成:

任务完成

4-12n个并发进程共用一个公共变量Q,写出用信号灯实现n个进程互斥时的程序描述,给出信号灯值的取值范围,并说明每个取值的物理意义。

解:

(1)程序描述

main(){

intmutex=1;//公共变量Q的互斥信号灯

cobegin

P1;P2;…Pn;

coend

}

Pi(){

P(mutex);

使用Q;

V(mutex);

}

(2)信号灯值的取值范围:

[(n–1),1]

(3)mutex每个取值的物理意义:

mutex=1说明没有进程进入临界段执行;

mutex=0说明有一个进程进入临界段执行;

mutex=1说明有一个进程进入临界段执行,另有一个进程正在等待进入;

mutex=(n–1)说明有一个进程进入临界段执行,另有(n–1)个进程正在等待进入。

4-13图4.32(a)、(b)分别给出了两个进程流图。

试用信号灯的p、v操作分别实现图4.32(a)、(b)所示的两组进程之间的同步,并写出程序描述。

 

(a)(b)

图4.32

图(a)解:

main(){

ints12=0,s13=0,s14=0;//s12表示进程P2可否执行;s13表示进程P3可否执行;s14表示进程P4可否执行//

cobegin

P1;P2;P3;P4;

coend

}

P1(){

p1execute;

V(s12);

V(s13);

V(s14);

}

P2(){

P(s12);

p2execute;

}

P3(){

P(s13);

p3execute;

}

P4(){

P(s14);

p4execute;

}

图(b)

main(){

ints13=0,s23=0;//s13表示进程P1执行完成否;s23表示进程P2执行完成否//

cobegin

P1;P2;P3;

coend

}

P1(){

P1execute;

V(s13);

}

P2(){

P2execute;

V(s23);

}

P3(){

P(s13);

P(s23);

P3execute;

}

4-15如图4.34所示,get、copy和put三个进程共用两个缓冲区s和t(其大小每次存放一个记录),get进程负责不断地把输入记录输入缓冲区s中,copy进程负责从缓冲区s中取出记录复制到缓冲区t中,而put进程负责从缓冲区t中取出记录打印。

试用PV操作实现这三个进程之间的同步,并写出程序描述。

图4.34

解:

main(){

ints1=1,s2=0;//s1表示缓冲区S是否为空,s2表示是否已满//

ints3=1,s4=0;//s3表示缓冲区T是否为空,s4表示是否已满//

cobegin

get;

copy;

put;

coend

}

get(){

while

(1){

P(s1);

inputdatatobufferS;

V(s2);

}

}

copy(){

while

(1){

P(s2);

copydatafrombufferS;

V(s1);

P(s3);

inputcopy-datatobufferT;

V(s4);

}

}

put(){

while

(1){

P(s4);

outputdatatobufferS;

V(s3);

}

}

4-16什么是进程的互斥与同步?

同步和互斥这两个概念有什么联系和区别?

答:

在操作系统中,当某一进程正在访问某一存储区域时,就不允许其他进程读出或者修改该存储区的内容,否则,就会发生后果无法估计的错误。

进程之间的这种相互制约关系称为互斥。

所谓同步,就是并发进程在一些关键点上可能需要互相等待与互通消息,这种相互制约的等待与互通信息称为进程同步。

同步和互斥这两个概念都属于同步范畴,描述并发进程相互之间的制约关系。

同步是指并发进程按照他们之间的约束关系,在执行的先后次序上必须满足这种约束关系。

而互斥是同步的一种特例,是指并发进程按照他们之间的约束关系,在某一点上一个时刻只允许一个进程执行,一个进程做完了,另一个进程才能执行,而不管谁先做这个操作。

4-22什么是线程?

线程和进程有什么区别?

答:

线程也称为轻量级进程,它是比进程更小的活动单位,它是进程中的一个执行路径,一个进程可能有多个执行路径,即线程。

线程和进程的主要区别如下。

(1)线程是进程的一个组成部分,一个进程可以有多个线程,而且至少有一个可执行的线程。

(2)进程是资源分配的基本单位,它拥有自己的地址空间和各种资源;线程是处理机调度的基本单位,它只能和其他线程共享进程的资源,而本身并没有任何资源。

(3)进程的多个线程都在进程的地址空间内活动。

这样,在以线程为单位进行处理机调度和切换时,切换时间较短;而以进程为单位进行处理机调度和切换时,由于涉及到资源转移及现场保护等问题,将导致切换时间变长和资源利用率下降。

(4)线程和进程一样,都有自己的状态和相应的同步机制,但是,由于线程没有自己单独的程序和数据空间,因而不能像进程那样将程序和数据交换到外存去。

(5)进程的调度和控制大多由操作系统的内核完成,而线程的控制既可以由操作系统内核完成,也可以由用户控制完成。

4-27试画出Linux系统的进程状态变迁,并说明这些变迁可能的原因。

答:

画出Linux系统的进程状态变迁如图所示。

 

(1)进程创建

当系统或用户需要创建一个新进程时,调用fork()系统调用,被创建的新进程被置为就绪状态TASK_RUNNING。

(2)进程调度

当调度时机来到时,进程调度程序从进程运行队列中选择优先级最高的进程,将其投入运行,设置状态为运行状态。

(3)被抢占

正在CPU上运行的进程,当其优先级低于处于就绪状态的某一个进程的优先级时,它被抢占而被迫让出CPU的控制权,此时,该进程的状态转为就绪状态。

(4)进程等待

若正在运行的进程因等待某一事件而暂时不能运行下去时,进入相应的等待队列,设置为等待状态。

(5)进程唤醒

当某个进程等待的原因撤销时,该进程被唤醒,将其从等待队列中移出,进入就绪队列。

(6)进程终止

当正在运行的进程完成其任务时,通过exit()系统调用终止自己而进入终止状态。

4-29某公园有一个长凳,其上最多可以坐5个人。

公园里的游客遵循以下规则使用长凳:

(1)如果长凳还有空间可以坐,就坐到长凳上休息,直到休息结束,离开长凳。

(2)如果长凳上没有空间,就转身离开。

试用信号灯的P、V操作描述这一场景。

答:

main(){

intcount=5;//长凳上可坐的人数

intmutex=0;//访问count的互斥信号灯

cobegin

guesti;//i=1,2,3,4……

coend

}

guesti{

P(mutex);

if(count==0){

V(mutex);

return;

}

count--;

V(mutex);

休息;

P(mutex);

Count++;

V(mutex);

}

4-316个进程合作完成一项计算任务的并发描述如图4-38所示,程序中,s1、s2、s3、s4、s5、s6分别是同步信号灯,x、y、z是共享数据变量。

试给出变量z的最终结果,并画出6个进程合作的进程流图。

 

答:

Z=12

4-32现有3个并发进程P1、P2和P3,如图4.39所示。

3个并发进程共享两个单缓冲区B1和B2。

进程P1负责不断从输入设备读数据,若读入的数据为正数,则直接送入B2,否则应先将数据送入B1,经P2取出加工后再送入B2,P3从B2中取信息输出。

请使用信号灯和P、V操作描述进程P1、P2、P3实现同步的算法。

答:

缓冲区B1设置信号灯s1、t1,s1表示缓冲区B1是否空闲,t1表示缓冲区B1是否有数据,缓冲区B2设置信号灯s2、t2,s2表示缓冲区B2是否空闲,t2表示缓冲区B2是否有数据。

Main()

{

Ints1=s2=1;

Intt1=t2=0;

Cobegin

P1();p2();p3();

Coend

}

4-34某商场有一个地下停车场,有N个停车位,车辆只能通过一个指定的通道进出停车场,通道处只能容一辆车通过,请设计信号灯和P、V操作给出进、出车辆两种进程的程序描述。

答:

main()

{

intcount1=count2=0;/*计数器*/

intmutex1=mutex2=1;/*两个计数器的互斥访问信号灯*/

intmutex=1;/*通道互斥访问信号灯*/

cobegin

in();

out();

coend

}

in()

{

P(empty);

P(mutex1);

Count1++;

ifcount1==0P(mutex);

V(mutex1);

开车进地下停车场;

P(mutex1);

count1--;

ifcount1==0V(mutex);

V(mutex1);

}

out()

{

P(mutex2);

Count2++;

ifcount2==0P(mutex);

V(mutex2);

开车出地下停车场;

P(mutex2);

Count2--;

ifcount2==0V(mutex);

V(mutex2);

V(empty);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1