操作系统原理是计算机及相关专业的重要基础课, 对学生理解计算机系统结构、进行高级程序开发等方面有着重要的理论指导作用。该课程对学生来说感觉理论性较强。
1.“以问题为导向,以学生为中心”为指导思想,突出学生应用知识思考和解决问题的能力是本教材的主线。通过典型例题解析启发学生的思维,加深对理论知识的理解。自测题全面且具代表性,对于重点、难点的问题既给出了解答又有解题分析。
2.通过自测题让学生独立思考,了解自己对知识的掌握程度,也可作为考研等的复习资料。实验内容包括:高响应比作业调度、时间片轮转进程调度、进程同步与互斥、内存分配与回收、FIFO页面置换算法、LRU页面置换算法、独占设备分配与回收、银行家算法,共8个实验。每个实验首先给出了明确的实验目标和实验内容,然后讲明实验原理并给出相应的知识点提示,*后给出参考程序和运行效果图。通过这些典型实验让学生对理论问题有更直观的认识和体验,激发他们学习的兴趣和创新的动力。
3.本书的作者都是讲解操作系统课程多年的一线教师,内容上吸收了众多相关资源的精华,同时结合教学中的实践经验合理地进行内容的取舍,使习题具有代表性,实验内容典型丰富而且有利于培养学生的创新应用能力。另外提供相应的PPT课件满足实验课堂教学、课后练习和学生自学的需要。
操作系统是计算机系统的重要组成部分,是用户使用计算机的基础,作为计算机专业的核心课程,不仅高等学校计算机相关专业的学生必须学习,从事计算机行业的人员也需要深入了解。由于操作系统具有概念性强、内容灵活、所涉及概念和算法比较抽象的特点,因此初学者往往找不到感觉,面对习题更是无从下手。此外,操作系统是一门实践性非常强的学科,只看书、做习题是绝对不够的,必须在实践和应用中加以深刻的体会。因此,在操作系统的教学中,除了课堂教学外,必须有一定学时的实验课。
作者在多年教学实践和科学研究的基础上,结合操作系统教学大纲、研究生入学考试要求和全国计算机技术与软件专业技术资格考试大纲,并在参考了国内外多种操作系统资料的基础上编写了本书。
本书与清华大学出版社出版的《操作系统原理》教材相配套,全书共分为9章,具体内容包括:操作系统引论、进程与线程、进程并发控制、内存管理、页式和段式内存管理、I/O管理、文件管理、死锁、实验指导。
前8章每一章的内容分为例题解析、课后自测题、自测题答案及分析三部分。通过例题解析启发学生的思考,引导学生如何去思考问题、解决问题。通过课后自测题学生可以进行自我检验,教师也可以对学生进行测试。自测题答案及分析部分给出了详细的解答并对难点问题进行了分析,有利于学生平时的学习,也可作为考研的复习资料。
第9章实验指导包括:高响应比作业调度、时间片轮转进程调度、进程同步与互斥、内存分配与回收、FIFO页面置换算法、LRU页面置换算法、独占设备分配与回收和银行家算法。每一个实验内容包括:实验目的和要求、实验内容、实验原理与提示、参考程序。通过实验可以对理论知识进行巩固和加深理解,也激发了学生的探索热情,促进学生进行创新的思考和应用,可以提出新的算法和方法来改进目前的操作系统。
本书第3、4章由于世东编写,第6~8章由王泓编写,第1、2、5章由孙笑微编写,第9章由于世东、王泓、孙笑微共同编写。东北大学于杨博士审阅了全稿并提出了许多有益的意见;沈阳工业大学牛连强教授在本书编写过程中给予了指点和帮助,在此谨向他们表示衷心的感谢。感谢清华大学出版社在本书的出版过程中给予的支持。
由于作者学识浅陋,见闻不广,书中必有不足之处,敬请读者提出批评、指正和建议。也欢迎大家与我们进行交流和探讨。
编者
2016年11月
第1章操作系统引论
1.1例题解析
1.2课后自测题
1.3自测题答案及分析
第2章进程与线程
2.1例题解析
2.2课后自测题
2.3自测题答案及分析
第3章进程并发控制
3.1例题解析
3.2课后自测题
3.3自测题答案及分析
第4章内存管理
4.1例题解析
4.2课后自测题
4.3自测题答案及分析
第5章页式和段式内存管理
5.1例题解析
5.2课后自测题
5.3自测题答案及分析
第6章I/O管理
6.1例题解析
6.2课后自测题
6.3自测题答案及分析
第7章文件管理
7.1例题解析
7.2课后自测题
7.3自测题答案及分析
第8章死锁
8.1例题解析
8.2课后自测题
8.3自测题答案及分析
第9章实验指导
9.1高响应比作业调度
9.2时间片轮转进程调度
9.3进程同步与互斥
9.4内存分配与回收
9.5FIFO页面置换算法
9.6LRU页面置换算法
9.7独占设备分配与回收
9.8银行家算法
参考文献
第3章
进程并发控制
3.1例 题 解 析
例题1进程间的互斥与同步表示了各进程间的。
A. 竞争与协作B. 相互独立与相互制约
C. 临界区调度原则D. 动态性与并发性
分析: 答案A。当多个进程都去访问非共享资源时就会产生竞争,需要互斥执行,通过临界区加以控制,当多个进程相互协作共同完成一个任务时,需要同步相关的信息以达到合作的目的。
例题2若执行信号量S操作的进程数为3,信号量S初值为2,当前值为-1,表示有个等待相关临界资源的进程。
A. 0B. 1C. 2D. 3
分析: 答案B。每当一个进程申请S信号量时,S的值就减1,当S的值为0时再申请的进程就需等待,负值的绝对值就表示在临界区等待的进程数。
例题3由于并发进程执行的随机性,一个进程对另一个进程的影响是不可预测的,甚至造成结果的不正确,。
A. 造成不正确的因素与时间有关
B. 造成不正确的因素只与进程占用的处理机有关
C. 造成不正确的因素与执行速度无关
D. 造成不正确的因素只与外界的影响有关
分析: 答案A。由于各进程的异步推进,进程之间的制约关系与时间有关,也即与进程的执行速度有关。
例题4下列机构中不能用于进程间数据通信的是。
A. 消息B. 共享存储区C. 信号量D. 管道
分析: 答案C。能传送大量数据的高级通信机制可归结为三大类: 共享存储器系统、消息传递系统以及管道通信系统。信号量主要用于进程的同步与互斥控制,不是为了数据通信。
例题5下面有关管程的说法,不正确的是。
A. 管程是一种进程同步机制
B. 管程是一种编程语言成分
C. 管程是一种系统调用
D. 管程比信号量更容易保证并行编程的正确性
分析: 答案C。使用信号量和PV操作实现进程同步时,对共享资源的管理分散于各个进程中,这样不利于系统对临界资源的管理,难以防止进程有意或无意地违反同步操作,且容易造成程序设计错误。因此提出管程的概念以解决上述问题,管程实质上是把临界区集中到抽象数据类型模板中,可作为程序设计语言的一种结构成分。
例题6什么是临界资源和临界区?一个进程进入临界区的调度原则是什么?
答: 不允许两个或两个以上进程同时访问的资源称为临界资源。进程执行访问临界资源的程序段称为临界区、临界段或互斥段。
能支持各进程互斥地执行临界区的调度机制必须满足下列要求。
(1) 在临界区中,每次只能允许一个进程进入。
(2) 一个进程在非临界区中的暂停运行不能影响其他进程。
(3) 一个进程如需要进入临界区,不能发生无限延迟的情况,既不会死锁,也不会饥饿。
(4) 当无进程在临界区时,必须让任何希望进入该程序段的进程无延迟地进入。
(5) 一个进程只能在临界区内停留有限的时间。
(6) 对于相关进程的运行速度和处理机的数量不做假设。
例题7进程之间存在哪几种制约关系?各是什么原因引起的?下列活动分别属于哪种制约关系?
(1) 图书馆借书。
(2) 两队举行篮球赛。
(3) 流水生产线。
(4) 乐队演奏。
(5) 购买火车票。
答: 有直接制约关系(即同步问题)和间接制约关系(即互斥问题); 同步问题是存在关系的进程之间的相互等待所产生的制约关系,互斥问题是进程间竞争使用资源所发生的制约关系。
(1) 属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。
(2) 既存在互斥关系,也存在同步关系。篮球只有一个,两队都要竞争; 但对于同一个队的队员之间需要相互协作才有可能取得比赛的胜利。
(3) 属于同步关系,生产线上各道工序的开始都依赖前道工序的完成。
(4) 属于同步关系,乐队中的每个成员需要相互协作共同完成乐曲演奏任务。
(5) 属于互斥关系,一张火车票只能卖给一个人。
例题8在生产者消费者问题中,如果将两个P操作即生产者程序流程中的P(buffers)和P(mutex)互换位置,结果会如何?
答: P(buffers)和P(mutex)互换位置后,因为mutex是生产者和消费者公用的信号量变量,生产者在执行完P(mutex)后,则mutex赋值为0,倘若当前无空闲缓冲区,buffers也为0,在执行了P(buffers)后,buffers为-1,该生产者进程就会进入阻塞状态,这样不仅其他的生产者进程会因mutex不能继续存放产品,并且消费者也因mutex不能取产品,从而无法释放缓冲区,使缓冲区始终为0,这样就形成了死锁。
例题9试用P、V操作描述下列理发师和顾客之间的同步问题。
某个理发师当没有顾客时,去睡觉; 当有顾客来理发,若理发师正在睡觉时,这个顾客会叫醒他,理发师给该顾客理发,理发期间若还有顾客到达则等待理发师依次理发,直到没有顾客到来,理发师又去睡觉。
分析: 将此题看作是N个生产者和一个消费者问题。顾客作为生产者,每到来一位,就应将计数器rc计数一次,以便让理发师理发至*后一位顾客,因此,顾客进程执行的*个语句便是rc=rc+1。而*个到来的顾客应负责唤醒理发师,理发师此时正在信号量wakeup上等待(P(wakeup)); 该信号量初值为0,由*个顾客执行V(wakeup)。若该顾客不是*个到达者,则在信号量wait上等待(P(wait)); 该信号量初值为0,等到理发师给前一位顾客理完发后执行V(wait),便给该顾客理发。以上过程循环往复,理发师每处理完一个顾客,就令计数器rc值减1,当rc=0时,便知此时无顾客,理发师可继续睡觉,等待下一个顾客的到达。为了保证对计数器rc互斥使用,还需要设置信号量mutex(初值为1)。
答: 用P、V操作描述理发师和顾客之间的同步问题:
wakeup, wait, mutex :Semaphore;
wakeup :=0;wait :=0;mutex :=1;
cobegin
顾客进程:
{
P(mutex);
rc= rc+1;
if(rc==1)
V(wakeup);
else
P(wait);
V(mutex);
理发;
}
理发师进程:
{
P(wakeup);
while (rc!=0)
{
理发;
P(mutex);
rc=rc-1;
if (rc!=0)
V(wait);
V(mutex);
}
}
coend
3.2课后自测题
一、 选择题
1. 并发性是指若干事件在发生。
A. 同一时刻B. 同一时间间隔内
C. 不同时刻D. 不同时间间隔内
2. 进程间的基本关系为。
A. 相互独立B. 同步与互斥
C. 信息传递与信息缓冲D. 并行执行与资源共享
3. 操作系统中P、V操作是一种。
A. 系统调用B. 进程通信原语C. 控制命令D. 软件模块
4. 两个进程合作完成一个任务,在并发执行中,一个进程要等待其合作伙伴发来信息或者建立某个条件后再向前执行,这种关系是进程间的关系。
A. 同步B. 互斥C. 竞争D. 合作
5. 一段不能由多处进程同时执行的代码称为。
A. 临界区B. 临界资源C. 锁操作D. 信号量操作
6. 临界区是指并发进程中。
A. 用于实现进程互斥的程序段B. 用于实现进程同步的程序段
C. 用于实现进程通信的程序段D. 与互斥的共享资源有关的程序段
7. 不能利用实现父子进程间的互斥。
A. 文件B. 外部变量C. 信号量D. 锁
8. 解决进程间同步与互斥问题常用的方法是使用。
A. 锁操作B. 存储管理C. 信号机构D. 信号量
9. 读者、写者是一个问题。
A. 互斥B. 半同步C. 全同步D. 共享
10. 如果系统只有一个临界资源,同时有很多进程要竞争该资源,那么系统发生死锁。
A. 一定会B. 一定不会
C. 不一定会D. 由进程数量决定
11. 在操作系统中,对信号量的s的P操作定义中,使进程进入相应等待队列的条件是。
A. s>0B. s=0C. s<0D. s≤0
12. N个进程访问一个临界资源,则设置的互斥信号量s的取值范围是。
A. 0~N-1B. 1~-(N-1)C. 1~N-1D. 0~-1
13. 临界区就是指。
A. 一段程序B. 一段数据区C. 一个缓冲区D. 一个共享资源
14. M个生产者,N个消费者共享长度为L的有界缓冲区,则对缓冲区互斥操作而设置的信号量的初值应设为。
A. LB. MC. ND. 1
15. 对于使用一个临界资源的两个并发进程,若互斥信号量等于1,则表示。
A. 没有进程进入临界区
B. 有一个进程进入了临界区
C. 有一个进程进入了临界区,另一个进程等待进入
D. 这两个进程都在等待进入临界区
16. 若信号量S的初值为2,当前值为-1,则表示有个等待进程。
A. 0B. 1C. 2D. 3
17. 类似于电子邮件系统的进程间的通信方法是通信。
A. 管道B. 共享存储区C. 信号量D. 消息
18. 在进程之间要传递大量的数据,效率高而且互斥与同步控制方便的方法是采用。
A. 管道B. 共享存储区C. 全局变量D. 信号量
19. 信箱通信是一种通信方式。
A. 低级B. 直接C. 间接D. 中级
20. 下列不属于管程的组成部分。
A. 对管程内数据结构进行操作的一组过程
B. 管程外过程调用管程内数据结构的说明
C. 管程内共享变量的说明
D. 共享变量初始化语句序列
21. 测试并设置指令testandset是一种。
A. 锁操作指令B. 互斥指令C. 判断指令D. 信号量指令
22. 关于管程与进程比较的论述中,正确的是。
A. 管程内定义的是公用数据结构,进程内定义的是私有数据结构
B. 管程作为操作系统或编程语言成分,与进程一样也具有生命周期,由创建而产生,由撤销而消亡
C. 管程能被系统中所有的进程调用
D. 管程和调用它的进程能够并行工作
23. 任何进程使用管程所管理的临界资源时,需要调用特定的才能互斥地进入管程,使用资源。
A. 系统调用B. 访管指令
C. 管程中的有关入口过程D. 同步操作原语
二、 填空题
1. 并发的实质是一个处理机在多个程序之间的。
2. 通常将并发进程之间的制约关系分为两类: 和。
3. P、V操作原语是对执行的操作,其值只能由P、V操作改变。
4. 若一个进程已经进入临界区,其他欲进入同一临界区的进程必须。
5. 一次仅允许一个进程访问的资源称为。
6. 进程访问临界资源的那段代码称为。
7. 在进程的同步和互斥问题中,可以用布尔变量实现。
8. 在操作系统中,使用信号量可以解决进程间的与问题。
9. 每执行一次Wait()操作,信号量的数值S减1。若,则该进程继续执行,否则进入状态。
10. 每执行一次Signal()操作,信号量的数值S加1。若,则该进程继续执行; 否则,从对应的队列中移出一个进程,该进程的状态将为。
11. 有m个进程共享一个同类临界资源,如使用信号量解决进程间的互斥问题,那么信号量的取值范围为。
12. 有m个进程共享n个同类临界资源,如使用信号量解决进程间的互斥问题,那么信号量的取值范围为。
13. 互斥信号量S的当前值为-2表示。
14. 某一时刻系统中共有6个进程,每个进程要使用一个相关临界资源。互斥信号量S的初值为3,当前值为-2,则表示有个进程正在访问相关临界资源,有个访问相关临界资源的进程进入了阻塞状态,有个进程还没有申请访问相关临界资源。
15. 信号量当前值大于零时其数值表示。
16. 有m个进程共享一个临界资源,若使用信号量机制实现对临界资源的访问,则信号量的初值应设为,其取值范围为
17. 利用信号量实现进程的,应为临界区设置一个信号量mutex,其初值为1,表示该资源尚未使用,临界区应置于和原语之间。
18. 操作系统中信号量的值与的使用情况有关,它的值仅能由来改变。
19. 操作系统中的一种同步与互斥机制,由共享资源的数据及其在该数据上的一组操作组成,该机制称为。
20. 一个进程要向另一个进程传送大量数据,如不考虑进程间的同步,效率*高的进程通信机制为。
21. 与Email类似的进程间数据通信机制是。
22. 在默认的情况下,大多数信号会导致接收进程。
23. 实现一个管程时,必须考虑的三个主要问题是互斥、和。
24. 信箱通信机制通常采用原语和原语。
……