功能上。一个主要的事情需要被考虑,为了能够支持与来宾作业系统相联系的功能,选择的主机操作系统,从系统调用接口而言,是否足够一般。 2.17实验性的综合操作系统在内核里有一个汇编器。为了优化系统调用的性能,
内核通过在内核空间内汇编程序来缩短系统调用在内核必须经过的途径。这
是一种与分层设计相对立的方法,经过内核的途径在这种设计中被延伸了,使操作系统的构造更加容易。分别从支持和反对的角度来综合设计方式对讨论这种内核设计和系统性能优化的影响。
Answer:综合是令人钦佩的由于这种性能通过即时复杂化取得了成功。不幸
的是,由于代码的流动很难在内核中调试问题。这种复杂化是系统的详细的表现,让综合很难port(一个新的编译器必须写入每一种架构)。 3.1 论述短期,中期和长期调度之间的区别.
Answer:a.短期调度:在内存作业中选择就绪执行的作业,并为他们分配CPU。 b.中期调度:作为一种中等程度的调度程序,尤其被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。 c.长期调度(作业调度程序):确定哪些作业调入内存以执行.
它们主要的不同之处是它们的执行的频率。短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。
3.2 问:描述一下内核在两个进程间进行上下文功换的动作.
Answer:总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。 (书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。 3.3考虑RPC机制。考虑的RPC机制。描述不可取的情况下可能出现或者不执行的”最多一次”或”到底一旦“语义。说明在没有这些保障的情况下,可能使用的一种机制。
Answer:如果一个RPC机制无法支持无论是“最多一次” 或“至少一次”
的语义,那么RPC服务器不能保证远端程序不会引起多个事件的发生。试想,如果一个远端程序在一个不支持这些语义的系统上从银行账户中撤回投资的资金。很可能一个单一调用的远程过程会导致多种服务器的撤回。 如果一个系统不能支持这两种语义,那么这样一个系统只能安全提供远程程序,这些远程程序没有改变数据,没有提供时间敏感的结果,用我们的银行账户做例,我们当然需要“最多一次” 或“至少一次”的语义执行撤销(或存款)。然而,账户余额成其它账户信息的查询,如姓名,地址等,不需要这些语义。
3.4 图表3.24里显示的程序,说明A行将会输出什么?
Answer:当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。
3.5 问:下面设计的好处和坏处分别是什么?系统层次和用户层次都要考虑到. A,对称和非对称通信 B,自动和显式缓冲 C,复制发送和引用发送 D,固定大小和可变大小消息
Answer:A.对称和非对称通信:对称通信的影响是它允许发送者和接收者之间有一个集合点。缺点是阻塞发送时,不需要集合点,而消息不能异步传递。因此,消息传递系统,往往提供两种形式的同步。
B.自动和显式缓冲:自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓冲区的大小。在这种状况下,发送者不能在等待可用空间队列中被阻塞。然而,缓冲明确的内存不太可能被浪费。
C.复制发送和引用发送:复制发送不允许接收者改变参数的状态,引用发送是允许的。引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。Java’s RMI 公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。
D.固定大小和可变大小消息:涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数
量是未知的。考虑Windows 2000如何处理这种情况。带有定长信息(<256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。更大的信息(如变长信息)使用共享内存传递信息。
第四章 线程
4.1举两个多线程程序设计的例子来说明多线程不比单线程方案提高性能
答:1)任何形式的顺序程序对线程来说都不是一个好的形式。例如一个计算个人报酬
的程序。
2)另外一个例子是一个“空壳”程序,如C-shell和korn shell。这种程序必须密
切检测其本身的工作空间。如打开的文件、环境变量和当前工作目录。
4.2描述一下线程库采取行动进行用户级线程上下文切换的过程
答:用户线程之间的上下文切换和内核线程之间的相互转换是非常相似的。但它依赖于线程库和怎样把用户线程指给内核程序。一般来说,用户线程之间的上下文切换涉及到用一个用户程序的轻量级进程(LWP)和用另外一个线程来代替。这种行为通常涉及到寄存器的节约和释放。
4.3在哪些情况下使用多内核线程的多线程方案比单处理器系统的单个线程方案提供更好的性能。 答:当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换成
使用交错时间。另一方面,当页面发生错误时,一个单一线程进程将不能够发挥有效性能。因此,在一个程序可能有频繁的页面错误或不得不等待其他系统的事件的情况下,多线程方案会有比单处理器系统更好的性能。 4.4以下程序中的哪些组成部分在多线程程序中是被线程共享的? a.寄存值 b.堆内存 c.全局变量 d.栈内存
答:一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存
值和栈内存。 4.5一个采用多用户线程的多线程方案在多进程系统中能够取得比在单处理器系统中更好
的性能吗?
答:一个包括多用户线程的多线程系统无法在多处理系统上同时使用不同的处理器。
操作系统只能看到一个单一的进程且不会调度在不同处理器上的不同进程的线程。因此,多处理器系统执行多个用户线程是没有性能优势的。 4.6就如4.5.2章节描述的那样,Linux没有区分进程和线程的能力。且Linux线程都是用
相同的方法:允许一个任务与一组传递给clone()系统调用的标志的进程或线程。但许多操作系统,例如windows XP和Solaris,对进程和线程都是一视同仁。基本上,这种使用notation的系统,一个进程的数据结构包括一个指向属于进程的不
同线程的指针。区别建模过程和在内核中线程的两种方法。
答:一方面,进程和线程被视为相似实体的系统中,有些系统代码可以简化。例如,
一个调度器可以在平等的基础上考虑不同的进程和线程,且不需要特殊的代码,在调度中审查有关线程的进程。另一方面,这种统一会使进程资源限制更加困难。相反,一些额外的复杂性被需要,用来确定哪个线程与哪个进程一致和执行重复的计数任务。 4.7由4.11给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第
p行分别会输出什么?
答:c行会输出5,p行会输出0.
4.8考虑一个多处理器系统和用多线程对多线程模式编写的多线程程序。让程序中的用户线
程数量多于系统中的处理器的数量,讨论下列情况下的性能意义:
a.由程序分配的内核线程的数量比处理器少 b. 由程序分配的内核线程的数量与处理器相同
c. 由程序分配的内核线程的数量大于处理器数量但少于用户线程的数量
答:当内核线程的数量少于处理器时,一些处理器将仍然处于空闲状态。因为,调度图中
只有内核线程的处理器,而不是用户线程的处理器。当程序分配的内核线程的数量与处理器相同时,那么有可能所有处理器将同时使用。然而,当一个内核块内的内核(因页面错误或同时援引系统调用)相应的处理器将闲置。当由程序分配的内核线程的数量大于处理器数量时,封锁一个内核线程并调出,换入另一个准备执行的内核线程。因此,增加多处理器系统的利用率。
第五章 CPU调度
5.1为什么对调度来说,区分I/0限制的程序和CPU限制的程序是重要的?
答:I/0限制的程序有在运行I/O操作前只运行很少数量的计算机操作的性质。这种程
序一般来说不会使用很多的CPU。另一方面,CPU限制的程序利用整个的时间片,且不做任何阻碍I/O操作的工作。因此,通过给I/O限制的程序优先权和允许在CPU限制的程序之前运行,可以很好的利用计算机资源。
5.2讨论以下各对调度标准在某种背景下会有的冲突 a.CPU利用率和响应时间 b.平均周转时间和最大等待时间 c.I/O设备利用率和CPU利用率
答:a.CPU利用率和响应时间:当经常性的上下文切换减少到最低时,CPU利用率增加。
通过减少使用上下文切换程序来降低经常性的上下文切换。但这样可能会导致进程响应时间的增加。
b.平均周转时间和最大等待时间:通过最先执行最短任务可以使平均周转时间最短。
然而,这种调度策略可能会使长时间运行的任务永远得不到调度且会增加他们的等
待时间。
c.I/O设备利用率和CPU利用率:CPU利用率的最大化可以通过长时间运行CPU
限制的任务和同时不实行上下文切换。I/O设备利用率的最大化可以通过尽可能调度已经准备好的I/O限制的任务。因此,导致上下文切换 。
5.3考虑指数平均公式来预测下一次CPU区间的长度,使用以下参数值会有什么影响? a.a=0和t=100毫秒 b.a=0.99和t=10毫秒
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库操作系统概念(中文版)第七版课后习题答案word1——12章(3)在线全文阅读。
相关推荐: