欢迎来到天天文库
浏览记录
ID:18536757
大小:88.50 KB
页数:8页
时间:2018-09-18
《05春操作系统试卷点评》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2005春操作系统试卷点评近几年内,这将是我最后一次教OS,没准也是这辈子的最后一次了,不再出来害人了,也不会再出题了,试卷就完全公开了。任何人可以以任何形式随意使用这些题目、答案和点评,只要使用后告诉我一声就行。一、单选题(每题2分,共10分)(1)操作系统是()A.硬件B.软件C.中间件D.人件答案是B,这个很显然。不过回答C的人不是凡人,也得分。这道题充分体现了计算机学科很多概念不能机械描述的特点。中间件的普遍特点是粘合两个不同系统,并使这两个系统之间的耦合度降低。OS符合这个特点,所以说它是一种
2、中间件并不为过。OS的一些功能还要依赖CPU的“特别关照”实现,从这一点看,它也不能说就是纯软。我一直很讨厌名词解释、填空这样的题目,选择也不喜欢,就是因为这种机械的题目无法表达计算机的多样化特色。(2)下列事物不是操作系统的是()A.JVMB.CP/MC.MS-DOSD.UNIX答案是A。不过JVM某种程度上也具备了OS的特质,拿它做一个只跑java程序的OS也是可以的,但与其它三个纯种OS比起来,它是最佳答案。(3)下列语言中,不能用来编写操作系统的是()A.ASMB.JavaC.CD.C++答案是
3、B。虽然没学过汇编,可能没有人在课堂告诉你ASM是什么,但这是你应该知道的。就算你不知道,学过java应该也知道java的本质是不能用来编写OS的。但是,如果强词夺理地说,做一个java到本地代码的编译器,再扩上一些不在乎跨平台能力的功能库,没有什么语言不能做OS。语言只是一个描述而已,其能力体现在你赋予它什么。计算机科学真奇妙呀(4)下列资源一般不由操作系统管理的是()A.内存B.声卡C.CPUD.以上皆非答案是D。没啥可说的。有几个人选B,难道你连windows都没setup过?(5)下列说法中正确
4、的是()A.任何应用程序都不能绕过操作系统而直接与硬件交互B.没有操作系统的计算机是无法执行任何程序的C.设备驱动程序必须由设备厂商开发D.文件的长度与它占用的物理空间大小是一致的E.以上都不正确答案是E。基本来说,非常肯定的说法一定是错误的。计算机软件完全人造的东西,它的一切都是人为控制的,而不是由大自然或上帝主宰,所以一切皆有可能。A.如果OS允许,这是可以的,比如DOSB.操作系统本身就是程序。BIOS也是程序。更有很多应用程序是完全在硬件平台之上构建,没有OS支持的C.谁说M$不能写驱动程序?你
5、也能写驱动程序D.只在很少的情况下一致一、简答题(20分)1.进程VS线程!请说出两者的最大相同和最大不同。(4分)两者都可以并行执行(2),但线程之间可以共享更多的资源,进程则较难甚至不能共享资源(2)。有的人就是把进程是什么、线程是什么抄了上去,字没少写,但,你是让我来总结相同和不同吗?开卷考试考的是你的大脑,不是手指2.从操作系统角度看,最实际的直面死锁的方法是什么?为什么是它?从程序员角度看,举出一种可以避免死锁的办法。(4分)鸵鸟策略,即不理会它(1)。因为发生死锁的概率很低(1),而处理死锁
6、的算法都很复杂(1),得不偿失。避免死锁的方法很多,只要具体一点写就可以。3.如果没有CPU的“特别关照”,很多现代操作系统功能的实现都会效率很低甚至不可实现。请举出两个例子来证明这一观点。(4分)没有TSL指令,P、V的原语性很难实现;没有MMU、TLB,页面的地址转换会很慢;没有对R和M位的支持,页面置换算法很难实现;“特别关照”,就是说CPU特意为OS准备的东西。CPU速度快、DMA、中断、MMX、3DNOW等是CPU的通用功能,和OS无关4.一般一个操作系统要提供三类接口给不同类型的使用者,是哪
7、三类接口?各给什么类型的使用者?(4分)Shell,给操作人员;应用开发接口,也叫系统调用,给应用程序开发人员;系统开发接口,给在核心做开发的人,比如驱动程序开发者。5.产生死锁的4个必要条件是什么?(4分)这题是送分的,没有人在此题丢分。二、求解题(20分)1.下面的示意性代码片段摘自一个运行在用Round-Robin算法进行线程调度的操作系统上的程序。它建立了若干个同优先级的线程,其中一个线程执行thread_worker2(),其余线程执行thread_work1()。这里面当然肯定存在着竞争(R
8、aceCondition)。请举出一种因为竞争而导致错误的情况,并用P、V原语操作解决这里的竞争问题。(10分)intcounter=0;thread_worker1()//多个线程执行它{while(TRUE){object=CreateANewObj();//CreateANewObj()不访问任何全局资源AddToListTail(object);//把object加到链表的尾部counter=counter+1;}}thread_w
此文档下载收益归作者所有