鎿嶄綔绯荤粺姒傚康绗竷鐗堜範棰樼瓟妗?涓枃鐗?瀹屾暣鐗?- 鐧惧害鏂囧簱 联系客服

发布时间 : 星期三 文章鎿嶄綔绯荤粺姒傚康绗竷鐗堜範棰樼瓟妗?涓枃鐗?瀹屾暣鐗?- 鐧惧害鏂囧簱更新完毕开始阅读efff6a6c7ed184254b35eefdc8d376eeafaa171b

它们主要的不同之处是它们的执行的频率。短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。

问:描述一下内核在两个进程间进行上下文功换的动作.

Answer:总的来说,操作系统必须保存正在运行的进程的状态,恢复进程的状态。保存进程的状态主要包括CPU寄存器的值以及内存分配,上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。

(书中答案)进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其 PCB中,然后装入经调度要执行的新进程的已保存的关联状态。

考虑RPC机制。考虑的RPC机制。描述不可取的情况下可能出现或者不执行的”最多一次”或”到底一旦“语义。说明在没有这些保障的情况下,可能使用的一种机制。

Answer:如果一个RPC机制无法支持无论是“最多一次” 或“至少一次”的语义,那么RPC服务器不能保证远端程序不会引起多个事件的发生。试想,如果一个远端程序在一个不支持这些语义的系统上从银行账户中撤回投资的资金。很可能一个单一调用的远程过程会导致多种服务器的撤回。

如果一个系统不能支持这两种语义,那么这样一个系统只能安全提供远程程序,这些远程程序没有改变数据,没有提供时间敏感的结果,用我们的银行账户做例,我们当然需要“最多一次” 或“至少一次”的语义执行撤销(或存款)。然而,账户余额成其它账户信息的查询,如姓名,地址等,不需要这些语义。

图表里显示的程序,说明A行将会输出什么

Answer:当控制回到父进程时,它的值会保持在5,而子进程将更新并拷贝这个值。

问:下面设计的好处和坏处分别是什么系统层次和用户层次都要考虑到.

A,对称和非对称通信 B,自动和显式缓冲 C,复制发送和引用发送 D,固定大小和可变大小消息

Answer:A.对称和非对称通信:对称通信的影响是它允许发送者和接收者之间有一个集合点。缺点是阻塞发送时,不需要集合点,而消息不能异步传递。因此,消息传递系统,往往提供两种形式的同步。

B.自动和显式缓冲:自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓冲区的大小。在这种状况下,发送者不能在等待可用空间队列中被阻塞。然而,缓冲明确的内存不太可能被浪费。

C.复制发送和引用发送:复制发送不允许接收者改变参数的状态,引用发送是允许的。引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。Java’s RMI 公司提供两种发送,但引用传递一个参数需要声明这个参数是一个远程对象。

D.固定大小和可变大小消息:涉及的太多是有关缓冲问题,带有定长信息,一个拥有具体规模的缓冲课容纳已知数量的信息缓冲能容纳的可变信息数量是未知的。考虑 Windows 2000 如何处理这种情况。带有定长信息(<256bytes),信息从发送者的地址空间被复制至接受进程的地址空间。更大的信息(如变长信息)使用共享内存传递信息。

第四章线程

举两个多线程程序设计的例子来说明多线程不比单线程方案提高性能

答:1)任何形式的顺序程序对线程来说都不是一个好的形式。例如一个计算个人报酬的

程序。

2)另外一个例子是一个“空壳”程序,如C-shell和korn shell。这种程序

必须密切检测其本身的工作空间。如打开的文件、环境变量和当前工作目录。

描述一下线程库采取行动进行用户级线程上下文切换的过程

答:用户线程之间的上下文切换和内核线程之间的相互转换是非常相似的。但它依赖于线程库和怎样把用户线程指给内核程序。一般来说,用户线程之间的上下文切换涉及到用一个用户程序的轻量级进程(LWP)和用另外一个线程来代替。这种行为通常涉及到寄存器的节约和释放。

在哪些情况下使用多内核线程的多线程方案比单处理器系统的单个线程方案提供更好的性

能。

答:当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换成使用交错时间。另一方面,当页面发生错误时,一个单一线程进程将不能够发挥有效性能。因此,在一个程序可能有频繁的页面错误或不得不等待其他系统的事件的情况下,多线程方案会有比单处理器系统更好的性能。

以下程序中的哪些组成部分在多线程程序中是被线程共享的 a.寄存值 b.堆内存 c.全局变量 d.栈内存

答:一个线程程序的线程共享堆内存和全局变量,但每个线程都有属于自己的一组寄存值和栈内存。

4.5一个采用多用户线程的多线程方案在多进程系统中能够取得比在单处理器系统中更好的

性能吗答:一个包括多用户线程的多线程系统无法在多处理系统上同时使用不同的处理器。操作系统只能看到一个单一的进程且不会调度在不同处理器上的不同进程的线程。因此,多处理器系统执行多个用户线程是没有性能优势的。

就如章节描述的那样,Linux没有区分进程和线程的能力。且Linux线程都是用相同的方

法:允许一个任务与一组传递给clone()系统调用的标志的进程或线程。但许多操作系统,例如windows XP和Solaris,对进程和线程都是一视同仁。基本上,这种使用notation的系统,一个进程的数据结构包括一个指向属于进程的不同线程的指针。区别建模过程和在内核中线程的两种方法。

答:一方面,进程和线程被视为相似实体的系统中,有些系统代码可以简化。例如,一个调度器可以在平等的基础上考虑不同的进程和线程,且不需要特殊的代码,在

调度中审查有关线程的进程。另一方面,这种统一会使进程资源限制更加困难。相反,一些额外的复杂性被需要,用来确定哪个线程与哪个进程一致和执行重复的计数任务。

由给出的程序使用了Pthread的应用程序编程接口(API),在程序的第c行和第p行分别会

输出什么

答:c行会输出5,p行会输出0.

考虑一个多处理器系统和用多线程对多线程模式编写的多线程程序。让程序中的用户线程数量多于系统中的处理器的数量,讨论下列情况下的性能意义: a.由程序分配的内核线程的数量比处理器少

b. 由程序分配的内核线程的数量与处理器相同

c. 由程序分配的内核线程的数量大于处理器数量但少于用户线程的数量

答:当内核线程的数量少于处理器时,一些处理器将仍然处于空闲状态。因为,调度图中

只有内核线程的处理器,而不是用户线程的处理器。当程序分配的内核线程的数量与处理器相同时,那么有可能所有处理器将同时使用。然而,当一个内核块内的内核(因页面错误或同时援引系统调用)相应的处理器将闲置。当由程序分配的内核线程的数量大于处理器数量时,封锁一个内核线程并调出,换入另一个准备执行的内核线程。因此,增加多处理器系统的利用率。

第五章 CPU调度

为什么对调度来说,区分I/0限制的程序和CPU限制的程序是重要的

答:I/0限制的程序有在运行I/O操作前只运行很少数量的计算机操作的性质。这种程序一般来说不会使用很多的CPU。另一方面,CPU限制的程序利用整个的时间片,且不做任何阻碍I/O操作的工作。因此,通过给I/O限制的程序优先权和允许在CPU 限制的程序之前运行,可以很好的利用计算机资源。

讨论以下各对调度标准在某种背景下会有的冲突 利用率和响应时间

b.平均周转时间和最大等待时间 O设备利用率和CPU利用率