前言
此书在最后的附录B中,有给出部分重难点部分的参考答案。会在最后放上图片。如果想要此书习题答案,可点以下链接:为一个压缩包,以图片形式,习题图片按章节排序,答案图片按书页排序。
《操作系统原理》孟庆昌等编著之课后部分习题+答案(图片版)-其它文档类资源-CSDN下载
但是其余习题,需此书读者在书中找到相应章节处得到答案。
所以,博主此系列文章,只是像做题一般,把未给出答案的部分题目(博主认为有需要写的)做出来,以当作复习,加深理解。
尽量保证正确(可能会把不是题目要求的但觉得重点的会考的也写上去),如果不同意见,可留言讨论。
其他章节内容链接:
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第一章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第二章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第三章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第四章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第五章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第六章
【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第七章
一、第二章 习题
1、解释以下术语:进程、进程控制块、进程映像、线程、进程的互斥和同步、临界区和临界资源、竞争条件、原语、信号量、管程、死锁、活锁、饥饿。(红色字体表示答案已有,见最下方图片)
答:(1)进程:程序在并发环境中的执行过程。(是操作系统进行资源分配的单位)
(2)线程:是进程执行运算的最小单位,执行处理机调度的基本单位。
(3)进程的互斥和同步:进程具有动态性和并发性。由于各个进程对资源的共享及完成一项共同的任务需要彼此会用,便产生了进程间的相互制约关系。进程间的相互关系主要表现如下三种:
一是互斥:各个进程彼此不知道对方的存在,逻辑上没有关系,由于竞争同一资源 而发生相互制约。
二是同步:各个进程不知道对方的名字,但通过对某些对象(或I/O缓冲区)的共同存取来协同完成一项任务。
三是通信:各个进程可以通过名字彼此之间直接进行通信,交换信息,合作完成一项工作。
(4)临界区:在每个进程中访问临界资源的那段程序。
临界资源:一次仅允许一个进程使用的共享资源。
(5)竞争条件:两个或多个进程同时访问和操纵相同的数据时,最后的执行结果取决于进程运行的精确时序的情况。
(6)原语:机器指令的延伸,往往是为完成某些特定的功能而编制的一段系统程序。
注意:原语操作,又称原子操作,即一个操作中的所有动作要么全做,要么全不做。
(7)信号量:(又称结构型信号量、计数信号量)一般是由两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值;另一个是指向PCB的指针。
注意:信号量的值:
大于0:表示当前可用资源的数量。
小于0:其绝对值表示等待使用该资源的进程个数,即在该信号量队列上排队的PCB的个数。
(8)管程:一个管程定义一个数据结构和能为并发进程在其上执行的一组操作,这组操作能使进程同步和改变管程中的数据。
一个管程由以下4部分组成:
一是管程名称;
二是局部于管程的共享数据的说明;
三是对数据进行操作的一组过程;
四是对该共享数据赋初值语句。
(9)死锁:若干进程竞争有限资源,且推进顺序不当,从而构成无限期循环等待的局面。
(10)活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试—失败—尝试—失败的过程。
(11)饥饿:(又称为“饿死”)在可预计的时间内,某个或某些进程永远得不到完成工作的机会,它们所需的资源总是被别的进程占有或抢占的状态。
(注意:死锁的进程必定处于阻塞状态,但饥饿进程不一定被阻塞,可以在就绪状态。)
3、PCB的作用是什么。
答:PCB是进程存在的唯一标志。
(1)操作系统根据PCB对进程实施控制和管理。
(2)进程的动态、并发等特征是通过PCB表现出来。
4、进程的基本状态有哪几种?试描绘进程状态转换图。
答:进程的基本状态有:运行态,就绪态,阻塞态。进程的状态转换图如下:
5、进程进入临界区的调度原则是什么?
答:(1)如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
(2)任何时候,处于临界区内的进程不可多于一个。
7、PCB表的组织方式主要有哪几种?分别简要说明。
答:有三种:
(1)线性方式:(最简单、最容易实现)OS预先确定整个系统中同时存在的进程的最大数目,比如 n,再静态分配空间,把所有进程的PCB都放在这个表中。
(2)链接方式:(经常用)OS按照进程的不同状态分别放在不同的队列中,从而形成就绪队列、阻塞队列、运行队列等。
(3)索引方式:利用索引表记载相应状态进程的PCB地址。(即系统建立几张索引表,各对应进程的不同状态。)
8、简述信号量的定义和作用。P、V操作原语是如何定义的?
答:信号量:
(1)定义:(又称结构型信号量、计数信号量)一般是由两个成员组成的数据结构,其中一个成员是整型变量,表示该信号量的值;另一个是指向PCB的指针。
(2)作用:表示系统中某类资源的数目。其值为:
大于0:表示当前可用资源的数量。
小于0:其绝对值表示等待使用该资源的进程个数,即在该信号量队列上排队的PCB的个数。
P、V操作原语:
(1)P操作:请求系统分配一个单位资源。
(2)V操作:释放出一个单位资源。
P(S) 的定义 | V(S) 的定义 |
(1)信号量的值减1,即S = S - 1; | (1)信号量的值加1,即S = S + 1; |
(2)S >= 0,则该进程继续执行; | (2)S > 0,则该进程继续执行; |
S < 0,则把该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进入等待。(直至其他进程在S上执行V操作,把它释放出来为止) | S < 0,则释放信号量队列的第一个PCB(即信号量指针项所指向的PCB)所对应的进程(把阻塞态改为就绪态),执行V操作的进程继续运行。 |
10、计算机系统中产生死锁的根本原因是什么?
答:根本原因是资源有限且操作不当。
11、产生死锁的四个必要条件是什么?一般对待死锁的方法有哪三种?
答:
产生死锁的四个必要条件 | 一般对待死锁的方法 |
(1)互斥条件 | (1)忽略死锁问题 |
(2)不可抢占条件 | (2)死锁的预防 |
(3)占有且申请条件 | (3)死锁的避免 |
(4)环路等待条件 | (4)死锁的检测和恢复 |
死锁的预防 | 方法 | 实现办法/说明 |
(1)破坏互斥条件 | 一般来说不能预防死锁 | |
(2)破坏不可抢占条件 | (1)预分资源策略(静态分配) (2)“空手”申请资源策略 | |
(3)破坏占有且申请条件 | 隐式抢占方式。(常用于资源状态易于保留和恢复的环境中) | |
(4)破坏环路等待条件 | (1)资源有序分配策略; (2)先弃大,再取小。 |
死锁的避免 (关键:确定资源分配的安全性) | 方法 | 实现办法/说明 |
(1)安全状态 | 存在安全序列,则系统状态安全,不会发生死锁 | |
(2)银行家算法 | 由Dijstra提出 |
死锁的检测和恢复 | 死锁检测 | (1)对单体资源类 |
(2)对多体资源类 | ||
从死锁中恢复 | (1)抢占资源 | |
(2)回退执行 | ||
(3)杀掉进程 |
12、高级进程通信有哪几类?各自是如何实现进程间通信的?
答:高级进程通信大致可归并为三类:共享存储器、管道文件和消息传递。
(1)共享存储器:在内存中分配一片空间作为共享存储区,需要进行通信的各个进程把共享存储区附加到自己的地址空间中,再像进行正常操作一样对共享区中的数据进程进行读或写操作。若用户不需要某个共享存储区,则可取消。
(2)管道文件:也称管道线,是连接两个命令的一个打开文件。一个命令用于向该文件中写入数据,称做写者;另一个命令用于从该文件中读出数据,称做读者。
(3)消息传递:以消息为单位在进程间进行数据交换,有直接通信方式和间接通信方式两种实现方式。
二、书中附录已有答案(见下图:习题+答案)
习题:
答案: