第一章 绪论

1、什么是多道程序设计?

答:多道程序设计技术是指在内存同一时候放若干道程序,使它们在系统中并发运行。共享系统中的各种资源。当一道程序暂停运行时,CPU马上转去运行还有一道程序。

 

2、什么是SPOOLing? 读者是否觉得将来的高级个人计算机会把SPOOLing作为标准功能?

答:(假脱机技术)输入SPOOLing是作业中的读入技术,比如,从卡片在磁盘,这样当当前运行的进程完毕时,将等候CPU。输出SPOOLing在打印之前首先复制打印文件,而非直接打印。在个人计算机上的输入SPOOLing非常少。可是输出SPOOLing非常普遍。

 

3、在早期计算机中,每一个字节的读写直接由CPU处理(即没有DMA),对于多道程序而言这样的组织方式有什么含义?

答:多道程序的主要原因是当等候I/O完毕时CPU有事可做。假设没有DMA。 I/O操作时CPU被全然占有,因此,多道程序无利可图(至少在CPU利用方面)。

不管程序作多少I/O操作,CPU都是100%的忙碌。当然,这里假定基本的延迟是数据复制时的等待。假设I/O非常慢的话,CPU能够做其他工作。

 

4、系列计算机的思想在20世纪60年代由IBM引入进System/360大型机。

如今这样的思想已经消亡了还是继续活跃着?

答:它依旧存在。比如。Intel以各种各样的不同的属性包含速度和能力消耗来生产 Pentium I,II。III和4。全部这些机器的体系结构都是兼容的,不过价格上的不同,这些都是家族思想的本质。

 

5、缓慢採用GUI的一个原因是支持它的硬件的成本(高昂)。为了支持25行80列字符的单色文本屏幕应该须要多少视颊RAM? 对于1024x768像素24位色彩位图须要多少视频RAM?

在1980年($5/KB)这些RAM的成本是多少?如今它的成本是多少?

答:25*80字符的单色文本屏幕须要2000字节的缓冲器。1024*768像素24位颜色的位图须要2359296字节。

1980年这两种选择将分别地耗费$10和$11520。而对于当前的价格。将少于$1/MB。

 

6、在建立一个操作系统时有几个设计目的,比如资源利用、及时性、健壮性等。请列举两个可能互相矛盾的设计目的。

答:考虑公平和实时。

公平要求每个进程都以公平的方式分配资源,没有进程能得到超过公平份额的资源。还有一方面。实时要求使进程在规定的时间内运行完成的基础上分配资源。一个实时的进程可能会得到一个不成比例的资源份额。(非标准答案)

 

7、以下的哪一条指令仅仅能在内核态中使用?

a)禁止全部的中断。

b)读日期-时间时钟。

c)设晋日期-时间时钟。

d)改变存储器映像。

答:选择(a)、(c)、(d)应该被限制在内核模式。

 

8、考虑一个有两个CPU的系统,而且每个CPU有两个线程(超线程)。如果有三个程序P0。P1,P2。分別以执行时间5ms。10ms,20ms開始。执行这些程序须要多少时间?如果这三个程序都是100% 限于CPU,在执行时无堵塞。而且一旦设定就不改变CPU。

答:这些程序的执行时间因程序的组合的不同而不同。一共同拥有下面4种情况:    1)(P0,P1) and P2 => (5ms + 10ms) and 20ms => 20ms

2)(P0,P2) and P1 => (5ms + 20ms) and 10ms => 25ms

3)(P1,P2) and P0 => (10ms + 20ms) and 50ms => 30ms

4)(P0,P1,P2) => (5ms + 10ms + 20ms) => 35ms

 

9、一台计算机有一个四级流水线,每一级都花费同样的时间运行其工作,即1ns。

这台机器每秒可运行多少条指令?

答:从管道中每纳秒出现一条指令。意味着该机器每秒运行十亿条指令。它对于管道有多少个阶段完全不予理睬,即使是 10-阶段管道,每阶段1ns。也将运行对每秒十亿条指令。由于不管那种情况,管道末端输出的指令数都是一样的。

 

10、如果一个计算机系统有快速缓存、内存(RAM)以及磁盘,操作系统用虚拟内存。读取缓存中的一个词须要2ns,RAM须要10ns,磁盘须要10ms。如果缓存的命中率是95%。内存的是(缓存失效时)99%,读取一个词的平均时间是多少?

答:平均訪问时间= 2ns * 0.95 + 10ns *0.99*(1-0.95) + 10ms * (1-0.99) *(1-0.95) = 5002.395ns

 

11、一位校对人员注意到在一部将要出版的操作系统教科书手稿中有一个多次出现的拼写错误。这本书大致有700页。每页50行,一行80个字符。

若把文稿用电子扫描。那么,主副本进入图1-9中的每一个存储系统的层次要花费多少时间?对于内存储方式,考虑所给定的存取时间是每次一个字符,对于磁盘设备,假定存取时间是每次一个1024字符的盘块。而对于磁带,如果给定開始时间后的存取时间和磁盘存取时间同样。

答:原稿包括80*50*700 = 2800000字符。当然,这不可能放入不论什么眼下的CPU 中,可是假设可能的话。在寄存器中仅仅需2.8ms。在Cache中须要5.6ms,在内存中须要28ms,整本书大约有2700个1024字节的数据块,因此从磁盘扫描大约为27秒,从磁带扫描则需2分钟7秒。当然,这些时间仅为读取数据的时间。

处理和重写数据将添加时间。

 

12、在用户程序进行一个系统调用,以读写磁盘文件时,该程序提供指示说明了所须要的文件。一个指向数据缓冲区的指针以及计数。

然后,控制权转给操作系统,它调用相关的驱动程序。如果驱动程序启动磁盘而且直到中断发生才终止。在从磁盘读的情况下。非常明显。调用者会被堵塞(由于文件里没有数据)。在向磁盘写时会发生什么情况?须要把调用者堵塞一直等到磁盘传送完毕为止吗?

答:或许。

假设调用者取回控制,而且在终于发生写操作时马上重写数据,将会写入错误的数据。

然而,假设驱动程序在返回之前首先复制将数据拷贝到一个专用的缓冲器。那么调用者能够马上继续运行。还有一个可能性是同意调用者继续,而且在缓冲器能够再用时给它一个信号,可是这须要非常髙的技巧。而且easy出错。

 

13、什么是陷阱指令?在操作系统中解释它的用途。

答:陷阱指令将一个处理器的运行模式从用户模式切换到内核模式。

该指令同意用户程序调用操作系统内核中的函数。

 

14、陷阱和中断的主要区别是什么?

答:陷阱由程序造成的,而且与它同步。

假设程序一而再地被执行,陷阱将总在指令流中同样位置的精确发生。而中断则是由外部事件和其时钟造成的,不具有反复性。

 

15、在分时系统中为什么须要进程表?在仅仅有一个进程存在的个人计算机系统中,该进程控制整个机器直到进程结束,这样的机器也须要进程表吗?

答:进程表是为了存储当前被挂起、甚或是被延迟和堵塞的进程状态。

在单一进程的系统中是不须要。由于单一进程从不挂起。

 

16、说明有没有理由要在一个非空的文件夹中安装一个文件系统?假设要这样做。怎样做?

答:装配文件系统将使得装配文件夹中已有的不论什么文件都不可訪问。因此装配点通常都是空的。然而,系统管理人员可能须要将某些位于被装配文件夹中的很关键的文件拷贝到装配点,使得他们在进行设备检查或修理时,能够在紧急事件中的普通路径上找到这些文件。

 

17、在一个操作系统中系统调用的目的是什么?

答:系统调用同意用户进程在内核中訪问和运行操作系统功能。用户程序使用系统调用操作系统服务。

 

18、对于下列系统调用 ,给出引起失败的条件:fork、exec以及unlink。

答:假设进程表中没有空暇的槽(或者没有内存和交换空间)。fork 将失败。

假设所给的文件名称不存在,或者不是一个有效的可运行文件,exec将失败。

假设将要解除链接的文件不存在。或者调用unlink的进程没有权限,则unlink将失败。

 

19、在

count = write(fd, buffer, nbytes);

调用中,能在count中而不是nbytes中返回值吗?假设能。为什么?

答:假设fd不对,调用失败。将返回1。

相同,假设磁盘满,调用也失败,要求写入的字节数和实际写入的字节数可能不等。在正确终止时。总是返回nbytes。

 

20、有一个文件,其文件描写叙述符是fd,内含下列字节序列:3,1,4。1。5,9,2。6,5,3,5。

有例如以下系统调用:

lseek(fd, 3, SEEK_SET);

read(fd, &buffer, 4);

当中lseek调用寻找文件里的字节3。

在读操作完毕之后,buffer中的内容是什么?

答:1, 5, 9, 2

 

21、如果一个10MB的文件在磁盘连续扇区的同一个轨道上(轨道号:50)。磁盘的磁头臂此时位于第100号轨道。要想从磁盘上找回这个文件,须要多长时间? 如果磁头臂从一个柱面移动到下一个柱面须要1ms,当文件的開始部分存储在的扇区旋转到磁头下须要5ms,而且读的速率是100MB/s。

答:找到文件须要的时间=1 * 50 ms (移动到50轨道号的时间)

+ 5 ms (旋转到文件開始部分存储在的扇区的时间)

+ 10/100 * 1000 ms (读取10MB的时间)

= 155 ms

 

22、块特殊文件和字符特殊文件的基本区别是什么?

答:块特殊文件包括被编号的块。每一块都能够独立地读取或者写入。

并且能够定位于不论什么块,并且開始读出或写入。

这些对于字符特殊文件是不可能的。

 

23、在图1-7的样例中库调用称为read,而系统调用自身称为read。这两者都有相问的名字是正常的吗? 假设不是,哪一个更重要?

答:系统调用实际上并没有名称。除了在文件里这样描写叙述之外。

当库例程read陷入内核时,它将系统调用号码放入寄存器或者堆栈中。

该号码通经常使用于一张表的索引。

这里确实没有使用不论什么名称。而还有一方面,库例程的名称是十分重要的。由于它将用于程序中。

 

24、在分布式系统中,客户机-server模式非常普遍。

这样的模式能用在单个计算机的系统中吗?

答:是的,尤其当系统内核是消息传递系统时。

 

25、对程序猿而言,系统调用就像对其它库过程的调用一样。有无必要让程序猿了解哪一个库过程导致了系统调用?在什么情形下。为什么?

答:就程序逻辑而言。库例程调用哪个系统调用是没有关系的。可是,假设须要考虑性能问题,无需系统调用就能够完毕的任务将使程序执行更快。全部的系统调用都会导致用户环境和内核环境的切换开销。更进一步,在多用户系统中。在系统调用完毕之前,操作系统可能调度

posted on 2017-07-21 11:04  lxjshuju  阅读(674)  评论(0编辑  收藏  举报