现代操作系统 第一章 引论 习题

版权声明:本博客为个人维护博客,内容均来自原创及互连网转载。最终目的为收集整理自己需要的文章技术等内容,不涉及商业用途。原创文章未经本人许可,不得用于商业用途及传统媒体。网络媒体转载请注明出处,否则属于侵权行为。 https://blog.csdn.net/MarshaZheng/article/details/82715567

第1章 引论 习题

注:非引用部分,为自己思考后答案,非标准答案。

Q1:操作系统的主要两大作用是什么?

A:考察操作系统有两种观点:资源管理观点和扩展的机器观点,对应着两种功能:为用户程序提供抽象和管理计算机资源。


Q2:在1.4节中描述了9中不同类型的操作系统,列举每种操作系统的应用。

A:

  1. 大型机操作系统---大型公司的数据中心 ---提供批处理、事务处理和分时;
  2. 服务器操作系统---大型的个人计算机、工作站、大型机---提供打印服务、文件服务或Web服务;
  3. 多处理器操作系统---配有通信、连接和一致性等专门功能的服务器操作系统的变体;
  4. 个人计算机操作系统---为单个用户提供良好的支持,广泛用于字处理、电子表格、游戏和Internet访问;
  5. 掌上计算机操作系统---平板电脑、智能手机和其他掌上计算机系统;
  6. 嵌入式操作系统---微波炉、电视机、汽车、DVD刻录机、移动电话以及MP3播放器;
  7. 传感器节点操作系统---可以彼此通信并且实用无线通信基站的微型计算机--用于建筑物周边保护、国土边界保卫、森林火灾探测、气象预测用的温度和降水测量;
  8. 实时操作系统---工厂中的实时计算机必须收集生产过程的数据并用有关数据控制机器,分为硬实时系统和软实时系统;
  9. 智能卡操作系统---电子支付的智能卡。

Q3:分时系统和多道程序系统的区别是什么?

A:

多道程序系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并行、微观上串行。

多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算机内存中可以同时存放多道(两个以上相互独立的)程序,它们都处于开始和结束之间。从宏观上看是并行的,多道程序都处于运行中,并且都没有运行结束;从微观上看是串行的,各道程序轮流使用CPU,交替执行。引入多道程序设计技术的根本目的是为了提高CPU的利用率,充分发挥计算机系统部件的并行性,现代计算机系统都采用了多道程序设计技术。

分时操作系统是使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。把计算机与许多终端用户连接起来,分时操作系统将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。由于时间间隔很短,每个用户的感觉就像他独占计算机一样。分时操作系统的特点是可有效增加资源的使用率。例如UNIX系统就采用剥夺式动态优先的CPU调度,有力地支持分时操作。

分时操作系统是给不同用户提供程序的使用,而多道程序系统则是不同程序间的穿插运行。

总之,分时操作系统主要是针对于多用户来说的,而多道程序系统主要是针对于多程序来说的,注意用户和程序之间的区别。


Q4:....每次缓存一整个cache行(通常每行32或64字节),而不是一个字节或一个字,这样做的优点是什么?

A:根据局部性原理:CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。一次缓存一整个cache行可以使之后高速缓存的命中率提高,减少时间代价。


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

A:若没有DMA,当前作业因等待磁带或其他I/O操作而暂停,CPU就只能简单的踏步直至该I/O完成。对于商业数据处理,I/O操作等待的时间通常占到80%~90%,所以必须采取某种措施减少CPU空闲时间的浪费。采取多道程序设计,可以在一个作业等待I/O操作完成时,让另一个作业使用CPU,提高CPU的利用率。


Q6:与访问I/O设备相关的指令通常是特权指令,也就是说,他们能在内核态执行而在用户态则不行。说明为什么这些指令是特权指令。

A:不允许在用户程序中使用的指令为特权指令。如果让用户在自己的程序里直接使用“I/O指令”,那么这个用户可以根据自己的需要启动设备进行输入/输出,。这样一来,通过设备所做的输入/输出就可能会丢失信息或产生出错。因此,必须把“I/O指令”规定为是特权指令。同样地,“设置时钟”、“置控制寄存器”等指令,也都应该规定为是特权指令。判断一条指令是否是特权指令,原则是看这条指令的执行,是否会引起系统工作的冲突或意外。


Q7:系列计算机的思想在20世纪60年代有IBM引入System/360大型机。现在这种思想已经消亡了,还是继续活跃着?

A:它依然存在。例如,Intel以各种各样的不同的属性包括速度和能力消耗来生产 Pentium I,II,III和4。所有这些机器的体系结构都是兼容的,仅仅是价格上的不同,这些都是家族思想的本质。


Q8:缓慢采用GUI的一个原因是支持它的硬件的成本(高昂)。为了支持25行80列字符的单色文本屏幕应该需要多少视颊RAM? 对于1024x768像素24位色彩位图需要多少视频RAM? 在1980年($5/KB)这些RAM的成本是多少?现在它的成本是多少?

A:25x80字符的单色文本屏幕需要2000字节的缓冲器。1024*768像素24位颜色的位图需要2359296字节。1980年这两种选择将分别地耗费$10和$11520。而对于当前的价格,将少于$1/MB。


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

A:考虑公平和实时。要求每一个考虑公平和实时。要求每一个进程都以公平的方式分配资源, 没有进程 能得到超过公平份额的资源 。另一方面,实时要求 使进程在规定的时间内执行完毕的基础上分配资源 。一个实时的进程可能会得到一个不成比例的资源份额。


Q10:内核态和用户态有哪些区别?解释在设计操作系统时存在两种不同的模式有什么帮助。

A:

区别:处于用户态执行时,进程所能访问的内存空间和对象受到限制,其所处 于占有的处理机是可被抢占的 ; 而处于核心态执行中的进程,则能访问所 有的内存空间和对象,且所占有的处理机是不允许被抢占的。 帮助:引用特权级的概念是为了保护计算机,一些危险指令只有操作系统可以 执行,防止普通程序滥用其他程序的资源。如间谍软件要想开启摄像头就必须向特权级0的驱动程序请求开启,否则就不允许。


Q11:一个255GB大小的磁盘有65536个柱面,每个磁道有255个扇区,每个扇区有512字节。这个磁盘有多少盘片和磁头?假设平均寻道时间为11ms,平均旋转延迟为7ms,读取速率为11MB/s,计算从一个扇区读取400KB需要的平均时间。

A:假设盘片有n个,则每个柱面就有n个磁道。 n·65536·255·512=255·2^30 ====> 盘片数n=2^5=32片。 磁头数=盘片书*2 =====>磁头数为64个。 (英文答案上是16,8,我也搞不懂为啥,式子是一样的。。。) 平均访问时间=平均寻道时间+平均旋转延迟+传输时间+····· t=11ms+7ms+400KB/(11MB/s)=21.636ms


Q12:下面的哪一条指令只能在内核态中使用? a)禁止所有的中断。 b)读日期 -时间钟。 c)设置日期 -时间钟。 d)改变存储器映像。

A:acd。

补充知识:处于用户态执行时,进程所能访问的内存空间和对象受到限制;而处于核心态执行中的进程则能访问所有的内存空间和对象。2.进程在核心态运行时是不可被剥夺的;而在用户态运行态是可被剥夺的。 以下是一些常用指令的执行状态:

  1. 屏蔽所有中断指令,在核心态下执行。
  2. 设置时钟日期指令,在核心态下执行。
  3. 改变存储映像图指令,在核心态下执行。
  4. 停机指令,在核心态下执行。
  5. 存取某地址单元的内容指令,在用户态下执行。
  6. 读时钟日期指令,在用户态下执行。

Q13:、考虑一个 有两CPUCPUCPU的系统,并且每一个CPU有两个线程(超线程)。假设有三个程序 P0,P1 ,P2 ,分別以运行时间5ms ,10ms ,20ms 开始。运行这些程序需要多少时间?假设这三个程序都是 100%限于CPU,在运行时无阻塞,并且一旦设定就不改变 CPU。

A:这些程序的运行时间因程序的组合的不同而不同,一共有以下 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


Q14:一台计算机有一个四级流水线,每一级都花费相同的时间执行其工作,即 1ns。这台机器每秒可执行多少条指令?

A:从管道中每纳秒出现一条指令。意味着该机器每秒执行十亿条指令。


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

A:E(t) = 0.95 x 2ns+0.05 x 0.99 x 10ns+0.05 x 0.01 x10ms = 5002.395 ns


Q16:在用户程序进行一个系统调用,以读写磁盘文件时,该程序提供指示说明了所需要的文件,一个指向数据缓冲区的指针以及计数。然后,控制权转给操作系统,它调用相关的驱动程序。假设驱动程序启动磁盘并且直到中断发生才终止。在从磁盘读的情况下,很明显,调用者会被阻塞(因为文件中没有数据)。在向磁盘写时会发生什么情况?需要把调用者阻塞一直等到磁盘传送完成为止吗?

A:也许。如果调用者取回控制,并且在最终发生写操作时立即重写数据,将会写入错误的数据。然而,如果驱动程序在返回之前首先复制将数据复制到一个专用的缓冲器,那么调用者可以立即继续执行。另一个可能性是允许调用者继续,并且在缓冲器可以再用时给它一个信号,但是这需要很髙的技巧,而且容易出错。


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

A:TRAP指令,即陷阱指令是CPU的内部事件,是由于系统调用引起处理机中断的指令。在系统调用中,TRAP负责由用户模式转换为内核模式,并将返回地址保存至堆栈中以备后用。


Q18:在分时系统中为什么需要进程表?在只有一个进程存在的个人计算机系统中,该进程控制整个机器直到进程结束,这种机器也需要进程表吗?

A:进程表是为了存储当前被挂起、甚或是被延迟和阻塞的进程状态。在单一进程的系统中是不需要,因为单一进程从不挂起。


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

A:如果进程表中没有空闲的槽(或者没有内存和交换空间),fork 将失败。 如果所给的文件名不存在,或者不是一个有效的可执行文件,exec将失败。 如果将要解除链接的文件不存在,或者调用unlink的进程没有权限,则unlink将失败。


Q20:下列资源能使用哪种多路复用(时间、空间或者两者皆可):CPU,内存,磁盘,网卡,打印机,键盘以及显示器。

A: 时间:CPU,打印机,网卡,键盘,显示器; 空间:内存,磁盘,显示器;


Q22:在 count = write(fd, buffer, nbytes); 调用中,是否能将函数返回值传递给count变量而不是nbytes变量?如果能,为什么?

A:如果fd不正确,调用失败,将返回1。同样,如果磁盘满,调用也失败,要求写入的字节数和实际写入的字节数可能不等。在正确终止时,总是返回nbytes。 (感觉这个标准答案有点答非所问。。)


Q23:有一个文件,其文件描述符是fd,内含下列字节序列:3,1,4,1,5,9,2,6,5,3,5。有如下系统调用:lseek(fd, 3, SEEK_SET); read(fd, &buffer, 4); 其中lseek调用寻找文件中的字节3。在读操作完成之后,buffer 中的内容是什么?

A:1,5,9,2。lseek将文件指针移动偏移量3,到索引3处;read从文件指针出开始读四个字节,存储到缓冲区buffer处。


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

A:t = 5ms + 1ms * (100-50) + 10MB/(200MB/s) = 105ms


Q25:块特殊文件和字符特殊文件的基本差别是什么?

A:块特殊文件包含被编号的块,每一块都可以独立地读取或者写入。而且可以定位于任何块,并且开始读出或写入。这些对于字符特殊文件是不可能的。 补充:块特殊文件(block special file)用于磁盘类设备;字符特殊文件(character special file)和输入输出有关,用于串行I/O类设备,如终端、打印机、网络等。


Q26:在图1-7的例子中库调用称为read,而系统调用自身称为read,这两者都有相问的名字是正常的吗? 如果不是,哪一个更重要?

A:系统调用实际上并没有名称,除了在文件中这样描述之外。当库例程read陷入内核时,它将系统调用号码放入寄存器或者堆栈中。该号码通常用于一张表的索引。这里确实没有使用任何名称。而另一方面,库例程的名称是十分重要的,因为它将用于程序中。


Q27:现代操作系统将进程的地址空间从机器物理内存中分离出来。列举这种设计的两个好处。

A:这允许可执行程序在不同的运行中加载到机器内存的不同部分。 此外,它允许程序大小超过机器内存的大小。


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

A:就程序逻辑而言,库例程调用哪个系统调用是没有关系的。但是,如果需要考虑性能问题,无需系统调用就可以完成的任务将使程序运行更快。所有的系统调用都会导致用户环境和内核环境的切换开销。更进一步,在多用户系统中,在系统调用完成之前,操作系统可能调度到其他的进程,这将使得调用过程的处理更加迟缓。


Q29:图1-23说明有一批UNIX的系统调用没有与之等价的Win32 API。对于所列出的每一个没有Win32等价的调用,若程序员要把一个UNIX程序转换到Windows下运行,会有什么后果?

A: Link: Win32程序不能给文件另外一个名称,或者使某个文件出现在多个目录中。同时,试图创建链接 可以便于测试,并且在文件上加锁。 Mount和umount: Wmdows程序不能创建关于标准的路径的假定命名,因为具有多个磁盘驱动器的系统 上路径名,其驱动器部分是不同的。 Chmod: Windows程序员不得不假定所有的用户都能访问每个文件。 Kill: Windows程序员不能kill行为失常的程序。


Q30:可移植的操作系统是从一个系统体系结构移动到另一个系统体系结构而不需要任何修改的操作系统。请解释为什么建立一个完全可移植性的操作系统是不可行的。描述一下在设计一个高度可移植的操作系统时你设计的两个高级层是什么样的。

A:每一个系统体系结构都有它自己可以执行的一套指令。因此,奔腾不能执行SPARC程序或者SPARC无法执行奔腾程序。另外,不同的架构使用不同的总线架构(如VME总线,ISA,PCI,MCA,SBU,…)以及CPU的字长(通常是32或64位)。由于硬件上的这些差异,建立一个完全可移植的操作系统是不可行的。一个高度可移植的操作系统将包括两个高级层——一个机器相关层和一个机器独立层。机器相关层屏蔽硬件的细节,必须为每一个架构单独实现,该层提供了一个统一的接口。机器独立层只需要实现一次。为了实现高度可移植,机器相关层应尽可能小。


Q31:请解释在建立基于微内核的操作系统时策略与机制分离带来的好处。

A:策略和机制的分离,使操作系统的设计人员在内核中实现了少量的基本原语。这些原语被简化,因为它们不依赖于任何特定的策略。然后,它们在用户级别可以被用来实现更复杂的机制和策略。

(补充)所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。


Q32:虚拟机由于很多因素而十分流行,然而它们也有一些缺点,给出一个缺点。

A:虚拟机建立在主机上,也是文件,很容易被破坏;增加了内存的使用和处理器的间接费用。


Q33:下面是单位转换的练习: (a) 一微年是多少秒? (b) 微米常称为micron。那么meigamicron是多长? (c) 1PB存储器中有多少字节? (d) 地球的质量是6000 yottagram,换算成kilogram 是多少?

A:(a) 365 x 10^(-6) x 24 x 60 x 60 =  31.536 s
    (b) 10^6 x 10^(-6) = 1 m
    (c) 2^(50) bytes
    (d) 6000 x 10^24 / 10^3 = 6 x 10^24 kg


Q34:写一个和图1-19类似的shell,但是包含足够的实际可工作的代码,这样可测试它。还可以添加某些功能,如输入输出重定向、管道以及后台作业等。


Q35:如果你有一个个人UNIX类操作系统(Linux、MINIX/3、FreeBSD等),可以安全地崩溃和再启动,请写一个试图创建无限制数量子进程的shell脚本并观察所发生的事。在运行实验之前,通过shell键入sync,在磁盘上备好文件缓冲区以避免毁坏文件系统。注意:在没有得到系统管理员的允许之前,不要在分时系统上进行这一尝试。其后果将会立即出现,尝试者可能会被抓住并受到惩罚。


Q36:用一个类似于UNIX od 的工具考察并尝试解释UNIX类系统或Windows 的目录。提示:如何进行取决于OS允许做什么。一个有益的技巧是在软盘上创建一个目录,其中包含一个操作系统,然后使用另一个允许进行此类访问的不同的操作系统读取盘上的原始数据。

猜你喜欢

转载自blog.csdn.net/MarshaZheng/article/details/82715567