操作系统第二版第二章课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章进程和线程作业答案
1,2,4,6,7,10,11,12,14, 21
1.在操作系统中为什么要引入进程概念?它与程序的差别
和关系是怎样的?
答:由于多道程序的并发执行时共享系统资源,共同决定这些资源的状态,因此系统中各程序在执行过程中就出现了相互制约的新关系,程序的执行出现“走走停停”的新状态。用程序这个静态概念已经不能如实反映程序并发执行过程中的这些特征。为此,人们引入“进程(Process)”这一概念来描述程序动态执行过程的性质。
进程和程序是两个完全不同的概念。进程与程序的主要区别:
进程和程序之间存在密切的关系:进程的功能是通过程序的运行得以实现的,进程活动的主体是程序,进程不能脱离开具体程序而独立存在。
2.PCB的作用是什么?它是怎样描述进程的动态性质的?答:PCB是进程组成中最关键的部分。每个进程有惟一的进程控制块;操作系统根据PCB对进程实施控制和管理,进程的动态、并发特征是利用PCB表现出来的;PCB是进程存在的唯一标志。
PCB中有表明进程状态的信息,该进程的状态包括运行态、就绪态和阻塞态,它利用状态信息来描述进程的动态性质。
4. 用如图2-26所示的进程状态转换图能够说明有关处理机的大量内容。试回答:
①什么事件引起每次显著的状态变迁?
②下述状态变迁因果关系能否发生?为什么?
(A)2→1 (B)3→2 (C)4→1
答:(1)就绪→运行:CPU空闲,就绪态进程被调度程序选中
运行→阻塞:运行态进程因某种条件未满足而放弃CPU的占用。
阻塞→就绪:阻塞态进程所等待的事件发生了。
运行→就绪:正在运行的进程用完了本次分配给它的时间片(2)下述状态变迁
(A)2→1,可以。运行进程用完了本次分配给它的时间片,让出CPU,从就绪队列中选一个进程投入运行。
(B)3→2,不可以。任何时候一个进程只能处于一种状态,它既然由运行态变为阻塞态,就不能再变为就绪态。
(C)4→1,可以。某一阻塞态进程等到的事件出现了,而且此时就绪队列为空,该进程进入就绪队列后马上又被调度运行。
6. 什么是进程的互斥和同步?
答:
进程的互斥:逻辑上本来完全独立的若干进程,由于竞争同一个资源而产生的相互制约关系。
进程的同步:进程间共同完成一项任务时直接发生相互作用的关系,也就是说,这些具有伙伴关系的进程在执行时间次序上必须遵循确定的规律。
7. 什么是临界区和临界资源?进程进入临界区的调度原则是什么?
答:
一次仅允许一个进程使用的资源称为临界资源。
在每个进程中访问临界资源的那段程序叫做临界区。
进程进入临界区的调度原则:
①如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
②任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其他所有试图进入临界区的进程必须等待。
③进入临界区的进程要在有限时间内退出,以便其他进程能及时进入自己的临界区。
④如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。
10. 系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这三个进程间有什么样的制约关系?试用P,V 操作写出这些进程使用打印机的算法。
答:
(1) 这三个进程之间存在互斥的制约关系。因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用。
(2)设三个进程分别为A、B、C
mutex:用于互斥的信号量,初值为1。
①设A,B两个进程共用一个缓冲区Q,A向Q写入信息,B从Q读出信息,算法框图如图2-27所示。
②设A,B为两个并发进程,它们共享一个临界资源。其运行临界区的算法框图如图
答:(1) 这个算法不对。进程A,B共用一个缓冲区,同步关系。如果A先运行,且信息数量足够多,则缓冲区Q中的信息会被后来的冲掉,造成信息丢失,进程B不能从Q 中读出完整的信息。
改正:
进程A,B同步使用一个缓冲区,设立两个信号量:empty:缓冲区Q为空,初值为1;
full:缓冲区Q为满,初值为0;
(2) 这个算法不对。进程A,B并发的,它们共享一个临界资源,二者应互斥地使用该临界资源,在进入临界区时不存在A先B后的时序关系,而是哪个进程先到一步就先进入自己的临界区。
改正:A,B两个进程应互斥地进入临界区。为此,设立一个互斥信号量mutex,初值为1,算法框图如上所示。
12. 设有一台计算机,有两条I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上打印结果,问:
①系统要设几个进程来完成这个任务?各自的工作是什么
②这些进程间有什么样的相互制约关系?
③用P, V操作写出这些进程的同步算法。
答:这是一个典型的生产者,消费者问题
1)系统可设三个进程完成任务,第一个进程R,从卡片输入机中读入数据,并且把数据放入缓冲区B1中,第二个进程C 从B1缓冲区中取数据,加工处理后放入缓冲区B2中。第三个进程P将缓冲区B2的内容取出,在打印机上打印出来2)这三个进程之间是同步关系
R进程受C进程影响,B1放满信息后R进程要等待,等到C 进程将其中的信息全部取走,才能继续读入信息;C进程受R进程和P进程的约束,B1中信息放满后C进程才可从中取出它们,且B2被取空后C进程才可将加工结果送入其中;P 进程受C进程的约束,B2中信息放满后P进程才可从中取出它们,进行打印。
3)三个进程之间必须协调工作,需设置四个信号量:
B1empty:缓冲区B1空,初值为1;
B1full:缓冲区B1满,初值为0;