《计算机操作系统(第三版)汤小丹第2章.doc》由会员分享,可在线阅读,更多相关《计算机操作系统(第三版)汤小丹第2章.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机操作系统(第三版 西电) 复习提纲及重点习题注意:1)“本章要点”部分,用红字标注的不是期末考试出题范围。2)“习题部分”用蓝字标注的是重点习题,期末考试50%的题目是这些习题的原题。红字标注的习题期末考试不考,仅供考研的同学参考。3)大部分习题答案只给出要点,同学们可以自行适当补充,但一定要简明扼要。4)如“本章要点”部分用红字标注的非考试内容,在“习题”部分有相关的重点习题,则对该部分内容只需做该习题即可。-第二章 要点这一章和第3章是本课程最重要的两章。2.1 进程的基本概念 本小节重点内容是进程的概念、进程的三种状态及转换(围绕P38图2-5理解)、进程控制块FCB的概念及作用、
2、进程就绪队列和阻塞(等待)队列的概念。其它内容作一般性的了解即可。2.2 进程控制掌握原语的概念。其它内容作一般性的了解即可。2.3 进程同步这一小节是至关重要的,也是相当难的。(1)P47-50,临界资源问题、临界区的概念、同步机制应遵循的规则。 (2)P50,整型信号量原语的含义,及其缺点。(3)P51,记录型信号量原语的含义,特点,及其优点(与整形信号量对比)。(4)P52-53 AND型信号量和信号量集,一般性了解。(5)P53 2.3.3 信号量的应用,一般性了解。(6)P55 管程,一般性了解。2.4 经典进程的同步问题 熟练掌握用记录型信号量解生产者消费者、哲学家进餐、读者-写者
3、问题。其它解法(AND信号量、信号量集、管程等)可以不看。 2.5 进程通信:一般性了解。2.6 线程 概念性的掌握什么是线程、线程与进程主要的异同、线程的状态、内核线程、用户线程。对于软件班和数学班的同学,上述概念将结合实验考核,二学历班的同学无此要求。教材习题1 什么是前驱图?为什么要引入前驱图?答:P35。前驱图是一个有向无循环图,用于描述进程之间执行的前后关系。引入前驱图可以比较直观的描述多道程序进程之间的不确定(异步)关系。2 试画出下面四条语句的前驱图: S1: a=x+y; S2: b=z+1; S3: c=a-b; S4: w=c+1 答:参考P36图2-4。根据变量赋值的顺序
4、,有 (S1 , S2)-S3-S43. 程序并发执行为什么会产生间断性特征?答:P36。因为程序在并发执行过程中存在相互制约性(同步要求),另外进程时而要求使用CPU、时而I/O也会造成进程间断。 4. 程序并发执行为何会失去封闭性和可再现性?答:P37。多个进程共享系统中的各种共享资源(可以表示为共享变量或共享内存),一方面资源状态可由多个进程来改变,另一方面处置不当可能引起共享变量出错(需要互斥来解决),即存在资源共享性使程序失去封闭性;而失去了封闭性导致程序失去可再现性。 5. 在操作系统中为什么要引入进程概念?它会产生什么样的影响?a.为了使程序在多道程序环境下能并发执行,并能对并发
5、执行的程序加以描述,而引入了进程概念。b.影响:OS通过管理进程,使程序的并发执行得以实行. 6. 试从动态性,并发性和独立性上比较进程和程序?a 动态性是进程最基本的特性,程序是静态实体;b 并发性是进程的重要特征,程序是不能并发执行的.c 独立性是指进程实体是一个能独立运行的基本单位,同时也是系统中独立获得资源和独立调度的基本单位.而对于未建立任何进程的程序,都不能作为一个独立的单位参加运行. 7. 试说明PCB的作用?为什么说PCB是进程存在的唯一标志?答:P41a. PCB是进程实体的一部分(进程实体包括PCB、程序代码、数据),是操作系统中最重要的记录型数据结构,PCB中记录了操作系
6、统所需的用于描述进程情况及控制进程运行所需的全部信息.b在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,系统是根据进程的PCB而感知到该进程的存在的,所以说,PCB是进程存在的唯一标志. 8试说明进程在三个状态之间转换的典型原因答:结合P38图2.5说明。主要原因是请求I/O和I/O完成、CPU调度。9. 为什么要引入挂起状态?该状态具有哪些性质?答:P39。挂起是进程在就绪队列上等待,进程挂起时不接受CPU调度。a. 引入挂起状态是由于5种需要: 终端用户的需要,父进程的需要,操作系统的需要,对换的需要和负荷调节的需要.b. 处于挂起状态的进程虽在就绪队列中,但不能接收处理机调度
7、。 10 在进行进程切换时,所要保存的处理机状态信息主要有哪些?答:P42第一段。 11 试说明引起进程创建的主要事件.12 试说明引起进程撤消的主要事件.答:P44-45。13 在创建一个进程时,需完成的主要工作是什么?答:P44操作系统发现请求创建新进程事件后;1)申请空白PCB;2)为新进程分配资源;3)初始化进程控制块;4)将新进程插入就绪队列. 14 在撤消一个进程时,需完成的主要工作是什么?答:P45 “2进程的终止过程”15 试说明引起进程阻塞或被唤醒的主要事件是什么?答:P4616 进程在运行过程中存在哪两种形式的制约?试举例说明之答:P48第1-2段。1)直接制约:进程共享独
8、占式资源的互斥制约(比如互斥使用打印机);2)间接制约:进程之间存在合作关系带来的同步制约(比如生产者消费者问题)3)互斥也可以看作是一种特殊的同步。补充习题:什么是临界资源和临界区?a. 一次仅允许一个进程使用的资源成为临界资源,这种资源可以用共享变量代表,这种资源必须是互斥使用的。b. 在每个进程中,访问临界资源的那段程序称为临界区。 17. 为什么进程在进入临界区之前,应先执行进入区代码,在退出临界区后又执行退出区代码?答:P50。为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,如果未被访问,该进程便可进入临界区对资源进行访问,并
9、设置正被访问标志,如果正被访问,则本进程不能进入临界区,实现这一功能的代码成为进入区代码;在退出临界区后,必须执行退出区代码,用于恢复未被访问标志。使用信号量,则进入区代码为P(S),“退出区”代码为V(S),S初值为1 18 同步机构应遵循哪些基本准则?为什么?答:P50a. 空闲让进.b. 忙则等待.c. 有限等待.d. 让权等待. 上述准则适合于进程的同步和互斥。记录型信号量实现了上述原则。19 试从物理概念上说明记录型信号量wait和 signal答:P51。Wait操作又叫P操作,signal操作又叫V操作。20. 你认为整型信号量机制和记录型信号量机制,是否完全遵循了同步机构的四条
10、准则?答:P50-51。a. 在整型信号量机制中,未遵循让权等待的准则,存在“忙等”现象。b. 记录型信号量机制完全遵循了同步机构的四条准则。 21 如何利用信号量机制来实现多个进程对临界资源的互斥访问?并举例说明之。答:P50的伪代码 Repeat Entry sectionCritical section /对共享资源(临界资源)的访问Exit section Remainder section /不访问共享资源的其他代码 Until false说明了多个进程对临界资源的互斥访问的解决思路,具体的,可设一记录型信号量S,初值为1,用P(S)替代Entry section,V(S)替代Exi
11、t section 在教材生产者消费者和读者写者的例子中都能看到上述用法。22 试写出相应的程序来描述图2-17所示的前驱图(图略)答:参考P54-55“2利用信号量实现前驱关系”(考研的同学应把这部分内容看一下)。这也是信号量对进程同步的一种用法,信号量初值为0。23. 在生产者消费者问题中,如果缺少了signal(full)或signal(empty),对执行结果会有何影响?答:缓冲区满后,生产者进程被阻塞(进入关于信号量empty的等待队列),由于消费者取走产品后不执行signal(empty), 被阻塞的生产者进程继续被阻塞,即便缓冲区有空位也不能生产。缓冲区空后,消费者进程被阻塞(进
12、入关于信号量full的等待队列),由于生产者生产后不执行signal(full), 被阻塞的消费者进程继续被阻塞,即便缓冲区有产品也不能消费。 24. 在生产者消费者问题中,如果将两个wait操作即wait(full)和wait(mutex)互换位置;或者是将signal(mutex)与signal(full)互换位置结果会如何?答:首先,教材P58是生产者消费者问题的最佳解,它支持多个生产者进程和多个消费者进程并发,而不仅仅是一个生产者进程和一个消费者进程并发。(1)如果将(消费者的)两个wait操作即wait(full)和wait(mutex)互换位置,后果是:a.影响了多个消费者的并发性
13、,当一个消费者进行了wait(mutex),其它消费者因得不到mutex被阻塞,即便缓冲区有多个产品也不允许取。形象的说,教材的解法允许多个消费者同时逛商店,但拿产品时一个一个消费者拿;而颠倒wait(full)和wait(mutex)顺序后,商店一次只能允许一个顾客进入,等顾客拿完产品出门后,另一位顾客才能进去。b. 可能造成死锁。假如某消费者执行wait(mutex)后没被阻塞,但接着执行wait(full)后被阻塞了, 要等待生产者的signal (full)才能解除阻塞,而生产者可能因消费者提前使mutex=0而被阻塞,无法执行signal (full),这样就造成死锁。c 可能还有其
14、它后果。(2)将(生产者的)signal(mutex)与signal(full)互换位置,似乎不会影响并发性,也不会造死锁,个人认为这也是一种正确的写法。 这道题我给出的答案仅供参考。25. 我们为某临界区设置一把锁W,当W=1时,表示关锁;W=0时,表示锁已打开.试写出开锁原语和关锁原语,并利用它们去实现互斥. 答: 先看教材P50的伪代码 Repeat Entry sectionCritical section Exit section Remainder section Until false说明了多个进程对临界资源的互斥访问的解决思路,在前面的第21题中,讨论了可设一记录型信号量S,初
15、值为1,用P(S)替代Entry section,V(S)替代Exit section。 还有一种办法是教材P75介绍的“互斥锁”,其思路很简单:将Critical section想象成只允许一个进程进入的小黑屋,小黑外有一把锁,当进程发现锁是开着的,可以进入小黑屋,然后关上锁不让其它进程进入,出来时把锁打开给其它进程进入的机会。 锁可以看作是(小黑屋外的)共享变量W,对W有两个操作:unlock(W) ,lock(W),这两个操作必须也是原子操作,其理由与信号量必须是原子操作一样。开锁原语: unlock(W)W=0;关锁原语: lock(W) if(W=1) do no_op; W=1;利
16、用开关锁原语实现互斥,用lock(W);替代Entry section,unlock(W)替代Exit section即可。var W:=0;process : repeatlock(W);critical sectionunlock(W);remainder sectionuntil false; 锁比信号量简单,但只能用于进程互斥,不能用于同步。 26试修改下面生产者消费者问题解法中的错误答:按P58的正确解法修改即可。 27 试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法.答:先看P62哲学家进餐问题的解及可能出现死锁的原因(出现了循环等待)。根据P105死锁的四个必要条件
17、,只要破除其中一个必要条件即可。下面的解的思路是:偶数哲学家现拿左面的筷子,后拿右面的,奇数哲学家正相反,这样就破除了循环等待,使死锁不可能发生。设初始值为1的信号量cI表示I号筷子被拿(I=1,2,3,4,.,2n),其中n为自然数.Beginif I mod 2=1 then /如为奇数哲学家 P(cI);P(cI-1 mod 5);Eat;V(cI-1 mod 5);V(cI);else /如为偶数哲学家P(cI-1 mod 5);P(cI);Eat;V(cI);V(cI-1 mod 5);End 28 在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出
18、数据进行计算.试写出利用信号量机制实现两者共享单缓冲的同步算法.答:解法与生产者消费者问题一样。这个题目的用意在于给出生产者消费者问题的一个实际应用-多进程的单缓冲通信。生产者消费者是非常重要、有广泛实际价值的问题。29画图说明管程由哪几部分组成?为什么要引入条件变量?答:见P56图2-13管程由三部分组成:局部于管程的共享变量说明;对该数据结构进行操作的一组过程;对局部于管程的数据设置初始值的语句.因为调用wait原语后,使进程等待的原因有多种,为了区别它们,引入了条件变量.30 如何利用管程解决生产者消费者问题?答:见P60。考研的同学无需看这道题,只需会使用记录型信号量解进程同步问题即可
19、,管程、信号量集、AND信号量只需从概念上了解一下即可,无需做大题。31 什么是AND型信号量?。32 什么是信号量集?。答:考研的同学只需从概念上了解一下即可,无需做大题33试比较进程间的低级通信工具与高级通信工具.答:P65。信号量是低级的进程通信工具,优点是速度快(教材认为效率低是片面的),缺点是难以使用,通信对用户不透明(所有的操作都必须由程序员来实现),而且必须借助共享内存才能通信。而高级通信工具则可弥补这些缺陷,用户可直接利用操作系统所提供的一组高级通信命令,高效地传送大量的数据。34当前有那几种高级通信机制?答:P65-66a. 共享存储器系统通信方式(低级);b. 消息传递系统
20、通信方式(高级);c. 管道通信方式(高级). d. RPC(远程过程调用),教材没有介绍。RPC允许一台机器远程呼叫另一台机器上的过程(或函数),这是网络时代最常见的高级通信机制,JAVA的RMI, RMI-IIOP 微软的COM+RPC .net remoting,以及CORBA, web Service等分布式通信(和组件)技术都是从RPC发展起来的。35 消息队列通信机制有哪几方面功能?答:P69-71。主要有消息缓冲区、发送原语、接受原语。36 为什么要在OS中引入线程?答:这道题比较重要,参见P72。因为进程既是资源分配的基本单位、又是CPU调度的基本单位,负担沉重,引入线程后,线
21、程变成了CPU调度的基本单位,线程创建、切换、撤销的开销较小,有利于提高系统性能。37 试说明线程有哪些属性?答:P73-74“3线程的属性”38试从调度性,并发性,拥有资源及系统开销几个方面,对进程和线程进行比较.答:P72“2线程与进程的比较”a. 在引入线程的OS中,把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位;b. 在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间,亦可并发执行,因而使OS具有更好的并发性;c. 进程始终是拥有资源的一个独立单位,线程自己不拥有系统资源,但它可以访问其隶属进程的资源;d. 在创建,撤消和切换进程方面,进程的开
22、销远远大于线程的开销. 39 为了在多线程OS中实现进程之间的同步与通信,通常提供了哪几种同步机制?答:P75。互斥锁、条件变量、信号量。对于用户级线程还可以提供管程机制。实际上线程的同步机制与进程的同步机制几乎相同。40 用于实现线程同步的私有信号量和公有信号量有何区别?答:参见P76。私有信号量只归一个进程所有,可被该进程所属的线程共享,OS可能不知道私有信号量的存在。公有信号量正相反。41 什么是用户级线程和内核级线程?.答:P77。内核级线程是依赖于OS内核的,它存在于用户进程和系统进程中,它们的创建,撤消和切换都由OS内核实现;用户级线程仅存在于用户级中,它们的创建,撤消和切换不利用系统调用来实现,因而与内核无关,内核并不知道用户级线程的存在。JAVA线程是用户级的。42 试说明用户级线程的实现方式43 试说明内核支持级线程的实现方式 答:P78-81。考研的同学只需了解P80 图2-16,用户线程与OS内核间一对一、多对一、多对多的映射即可。