当前位置:文档之家› 广工哲学原理课后答案

广工哲学原理课后答案

2012 操作系统复习提纲本来想搞好在共享的!没时间了!大家凑合着用吧!立业教材名称:《操作系统之哲学原理》Please remember the title of the book during your preparation for the exam.核心考点:1.微内核操作系统2.进程管理3.线程模型,两种线程模型,与线程管理模型实现相关的各种概念4.多道编程的好处,程序道数和吞吐量的关系,响应时间计算(不同的调度策略)5.信号量、管程的非编程题6.页式管理7.同步/互斥喂金鱼问题8.死锁算法,银行家算法,哲学家就餐问题9.锁的实现10.页面替换算法11.段页式管理12.磁盘参数计算13.FAT文件系统14.索引文件系统15.文件系统相关的概念:文件夹、内存映射文件、访问效率、保证文件系统一致性的手段Chapter 1:练习2,7-2问题:你对操作系统和用户程序之间有什么看法?诠释你的想法。

答:在操作系统的上面是虚拟界面,其下面是物理机器。

而物理机器下面是硬件,虚拟界面上面就是用户程序。

显然,操作系统为用户程序提供了很好的虚拟界面,而应用程序很好滴在正界面上运行。

1)本质上而言,OS也是个程序,用户程序也是个程序,两者扮演者调用与被调用的关系。

这样理解,操作系统通过虚拟界面为用户程序提供各种服务,用户程序在运行过程中不断地使用OS提供个各种服务来完成自己的任务。

这样而言,是用户程序调用OS提供的各种服务。

2)而另一种角度看,OS是主程序,用户程序是子程序。

启动OS后,OS将控制交给了用户程序,用户程序执行完后将控制交回给OS,这样而言,是操作系统调用主程序用户程序执行完后在返回操作系统。

3)对于两种截然相反的观点,没有对错,只有好坏,这也是人造科学的主要特点。

对次,我认为,OS和用户程序的关系不单是一种简单的调用与被调用的关系,还是一种相互协调的调用。

形成一种非常复杂的动态关系。

-2问题:有人认为设备管理(设备驱动程序)应该由第三方提供,而不是OS的一部分。

对此,你有什么看法?如何判断一个软件是不是属于操作系统?答:1)一般操作系统只是为I/O管理提供接,那样子可以实现其屏蔽设备差异性和提供并发访问。

本质上,设备驱动程序是常驻内存低级硬件程序共享库。

从理论上讲,所有的硬件设备都需要安装相应的驱动程序才能正常工作。

但像CPU、内存、主板、软驱、键盘、显示器等设备却并不需要安装驱动程序也可以正常工作,而显卡、声卡、网卡等却一定要安装驱动程序,否则便无法正常工作。

这是为什么呢?这主要是由于这些硬件对于一台个人电脑来说是必需的,所以早期的设计人员将这些硬件列为BIOS能直接支持的硬件。

换句话说,上述硬件安装后就可以被BIOS和操作系统直接支持,不再需要安装驱动程序。

从这个角度来说,BIOS也是一种驱动程序。

所以设备驱动有多种,如官方版、第三方版、微软认证版、发烧友修改版等2)要界定一个软件是不是操作系统的那得先清楚OS是什么。

OS扮演的是一个管理者和魔术师的角色,所以他能够全局地掌握计算机局势,管理计算机的资源,为用户程序提供服务,并且将复杂的事情简单化。

对此,OS 大概划分了几大领域:CPU管理、内存管理、外存管理、I/O管理。

但是不是说每一个都是很清晰地划定界限的。

更多的是相互协作,而且分别在不同的态势下运行的。

所以说,基本满足OS的要求的都可以放在内核态,其他的可以归属于用户态。

那样会比较合理。

Chapter 2:练习3,4,7,9-3问题:计算机有过去的单一操心到终端到现在的个人,似乎人类在兜圈子了。

这种否定之否定的观点。

你何解?答:对此,我个人观点是,不算兜圈子。

这是一个螺旋上升的发展方式。

也是任何事物大发展趋向。

从单一的操作员到控制端,再到现在的个人机都是需求而导向的发展。

其否定之否定,并不是完全地否定。

而是在否定前单一操作员的基础上提炼发展出终端控制,再到个人机。

当然,从另一个角度而言,这是一种兜圈子的。

在单一操作员可以直接发展到个人机,但是人类没那么聪明,只能在探索中发展改变。

所以,这种否定之否定的发展策略是必须的,也是一种能可持续发展的根本!-4问:对OS未来的看法。

答:-7问:没有OS的计算机是废铁,早期的计算机没有OS也能运转,怎么理解?答:确实,没有OS的计算机就是废铁,即使是早期的计算机没有OS,第一阶段时的状态机是有人工地进行操作,那也是一种操作系统,即那时人就是操作系统。

到了第二阶段的是人机交互的操作系统。

然后再渐渐地发展的。

-9问:MACH提出的微内核操作系统因为运行效率低下没被商业化,那为什么效率低下呢????Chapter 3:练习3,7,9,11-3问:内核程序可以访问任何资源的权限对操作系统安全造成严重的威胁,你怎么看?答:认同这种观点。

运行在内核态的程序的可靠性和安全性和必要,否则会造成威胁。

所以要求在内核态运行的程序可以访问更多的资源但是也要求可靠性、安全性高,那么维护管理比较复杂。

-7问:操作系统调用和壳之间的关系。

答:壳(Shell)是方便那些不会编程的用户提供的一中服务,每一中系统调用都提供某种壳,这个壳是覆盖在操作系统上的用户界面,即是图形界面,又是文本界面。

用户在这个界面上输入命令,操作系统折执行这些命令。

但是,这个命令不是直接调用操作系统,而是调用Utilities,Utilities类似于C语言的库函数,有Utilities调用系统服务。

-9问fork是如何实现一次调用两次返回的?它有必要吗?为什么?答:一次返回值为0,表明是子进程(创建新进程),对应if-else复合语句中的if部分;另一次是返回值不是0,表明是父进程,对应if-else符合语句中的else部分,而这个返回值就子进程的进程ID,也就是fork 的if-else的if和else部分在fork完成后都执行。

但是为什么fork能返回两个值进行两次呢?那时因为fork创建一个和自己完全一样的进程。

在fork系统调用后,我们面对的是两个进程,而不是一个进程,这两个进程的程序代码时一样的,也就是其中一个执行if部分后,在另一个进程执行else部分。

因此,从两个进程来看分别执行,都有自己的调用栈,是没有矛盾的!-11问:内核态的特权是如何实现的?答:首先明白操作系统是怎么对一个程序的限制,才能明白怎么实现内核态和用户态。

要限制一个程序对资源的使用,程序每发出一条指令都要进程检查才能执行,这种检查就是地址翻译。

通过地址翻译的控制来控制对资源的使用。

所以内核态的实现时,当系统处于内核态的时候,内核程序可以绕过内存地址翻译而直接执行特权指令。

WednesdayChapter 4:练习1,2,8,10,12-1问:发明进程的根本动力是什么,它与进程是什么关系?答:进程是为了实现多道程序设计而产生的,它是程序的一次执行,是放在内存中的程序。

追求效率,第一阶段的操作系统是单一操作员进行控制终端的、批处理效率低下的问题,是CPU使用的效率不高,为了提高效率,人们将多个程序同时加载到计算机里面,并发执行。

这些同时存在计算机的程序就是进程。

让每一个用户都感觉自己又自己的CPU。

追求高效率导致进程的产生,进程实现了高效率的使用宗旨。

-2问:进程给我们带来最大的好处是什么?它有什么缺点?答:优点:1)提高CPU的运行效率,或者说是提高了系统的吞吐量;2)改善系统的响应时间。

缺点:1)同一时间只能种同一件事情;2)阻塞,如有不需要数据部分也无法执行-8问:进程管理的两个重要考虑是公平和效率除此之外,还要什么因素考虑吗?答:优先级,重要的任务优先!-----??补充???-10问:多道编程只能提高CPU的效率吗?为什么?答:不是的!当多道编程的度数的增加,CPU的利用率的增长速率就降低。

3个进程CPU是48.9%,4个进程的CPU 利用率是73.8%,5个是67.2%,6个是73.8%,7个是80%。

逐渐地提升幅度降低。

直到某个临界点就是多道编程的极限。

然后再添加度数就会降低CUP的利用率。

所以说不是都到编程总能提高CPU的使用率的!-12问:分析内核态下的进程通常共享一个地址空间这是为什么?答:内核态下只有操作系统本身能进行调度,用户态无法达到。

内核态程序具有访问所有资源的权限,所有地址空间对内核态来说都是透明的,而且内核状态下操作系统本身可以按部就班运行而不发生错误,共享一个地址空间使得系统运行更高效。

Chapter 5:了解各种进程调度算法,练习4,5,7,8,12,13,14-4问:如果想让某个进程获得50%的运行机会,那么该使用哪种调度策略?答:首先明白进程调度的目的是:极小化响应时间、极大化系统吞吐量、保持系统的各个功能处于繁忙状态和提供貌似公平的机制。

实现方法有:FCFS(先来先服务)、时间片轮转算法、短任务优先、优先级调度、混合调度、保证调度、彩票调度、用户公平调度,还有实时调度、EDF调度、RMS调度算法等等。

而其中能达到保证50%的CPU 时间的是彩票调度-5问:P92答:FCFS调度情况:C(1+9)*10=100ms A100+50ms B 100+50+100ms 这样系统的响应时间是:250ms+300ms时间片轮转算法调度:时间片大小为10ms : (B-10ms ->A-10ms->C-10ms)*5次->(A 10ms ->C 10ms)*5次系统响应总时间=150ms+100ms=250ms-7问:优先级倒挂是什么?有什么危害?答:-8问:优先级倒挂的3中方法,哪种最优?答:-12问:P92答:-13:问:答:-14问:答:Chapter 6:PassThursdayChapter 7:线程模型(内核态/用户态),调度器激活,练习:2,3,6,9-2问:用户态线程实现由于不能应对阻塞操作,有人为其实没有任何用处的,你怎么认为?答:用户态线程解决阻塞问题是很麻烦的,虽然当发生阻塞时可以通过激活调度器来实现,但是要修改操作系统,而且违反层次设计的原则,所以没有被商业化。

但也并非一无是处的,用户态线程的实现要执行系统调度器进行切换线程,这样很灵活,操作系统无需知道线程的存在;此外,线程切换得快,无需进入内核态;CPU的运行效率很高;用户编程简单,复杂性的东西交给OS处理。

凡事有阴阳,当然也有缺点的,线程切换要在内核下执行,要开锁;线程控制块要内核空间,导致空间溢出;大大增加了程序员的工作量。

-3问:调度激活器是一种良好的解决用户态线程问题的方案吗?它为什么没有得到商业应用?答:不是!如果该进程只有一个线程,该线程阻塞了,那么控制权将交回给操作系统,从而切换到别的进程。

此外,需要修改操作系统,使其在进行进程切换时,不是立即切换到别的进程,而是调用受阻进程的执行系统。

相关主题