现代操作系统作业题整理.docx
《现代操作系统作业题整理.docx》由会员分享,可在线阅读,更多相关《现代操作系统作业题整理.docx(22页珍藏版)》请在冰豆网上搜索。
现代操作系统作业题整理
注:
标有“操作系统第二版中文版答案”的答案是从操作系统第二版中文答案的电子书上摘抄的,剩下的是非标准答案(可以忽略~~)。
有几道题没有写。
以下的相关文档仅供参考!
祝各位同学考试愉快!
第一章:
引论(P44)
1、什么是多道程序设计?
答:
多道程序就是CPU在内存中多个进程之间迅速切换。
它一般被用来使CPU保持忙碌,当有一个或多个进程进行I/O时。
(操作系统第二版中文答案)
2、什么是SPOOLing?
读者是否认为将来的高级个人计算机会把SPOOLing作为标准功能?
答:
SPOOLing是SimultaneousPeripheralOperationOn-Line(即外部设备联机并行操作)的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
(回答:
什么是SPOOLing?
XX的~~~)输入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大型机。
现在这种思想已经消亡了还是继续活跃着?
答:
它依然存在。
例如:
Interl以各种各样的不同的属性包括速度和能力消耗来产生PentiumI,II,III和4。
所有这些机器的体系结构都是兼容的,仅仅是价格上的不同,这些都是家族思想的本质。
(操作系统第二版中文答案)
5、缓慢采用GUI的一个原因是支持它的硬件的成本(高昂)。
为了支持25行80列字符的单色文本屏幕应该需要多少视频RAM?
对于1024*768像素24位色彩位图需要多少视频RAM?
在1980年($5/KB)这些RAM的成本是多少?
现在它的成本是多少?
答:
25*80字符的单色文本屏幕需要2000字节的缓冲器。
1024*768像素24位颜色的位图需要2359296字节。
1980年代这两种选择将分别地耗费$10和$11520。
而对于当前的价格。
将少于$1/MB。
(操作系统第二版中文答案)
8、考虑一个有两个CPU的系统,并且每个CPU有两个线程(超线程)。
假设有三个线程P0,P1,P2,分别以运行时间5ms,10ms,20ms开始。
运行这些程序需要多少时间?
假设这三个程序都是100%限于CPU,在运行时无阻塞,并且一旦设定就不改变CPU。
答:
这些程序的运行时间因程序的组合的不同而不同,一共有以下4种情况:
1)(P0,P1)andP2=>(5ms+10ms)and20ms=>20ms
2)(P0,P2)andP1=>(5ms+20ms)and10ms=>25ms
3)(P1,P2)andP0=>(10ms+20ms)and50ms=>30ms
4)(P0,P1,P2)=>(5ms+10ms+20ms)=>35ms
9、一台计算机有一个四级流水线,每一级都花费相同的时间执行其工作,即1ns。
这台机器每秒可执行多少条指令?
答:
从管道中每纳秒出现一条指令。
意味着该机器每秒执行十亿条指令。
它对于管道有多少个阶段不予理睬,即使是10-阶段管道,每阶段1nsec,也将执行对每秒十亿条指令。
因为无论哪种情况,管道末端输出的指令数都是一样的。
(操作系统第二版中文答案)
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.
14、陷阱和中断的主要差别是什么?
答:
陷阱是由程序造成的,并且与它同步。
如果程序一而再地被运行,陷阱将总在指令流中相同的位置的精确发生。
而中断则是由外部事件和其他时钟造成的,不具有重复性。
(操作系统第二版中文答案)
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.(操作系统第二版中文答案)
22、块特殊文件和字符特殊文件的基本差别是什么?
答:
块特殊文件包含被编号的块,每一块都可以独立地读写或者写入。
而且可以定位于任何块,并且开始读入或写入。
这些对于字符特殊文件是不可能的。
(操作系统第二版中文答案)
25、对程序员而言,系统调用就像对其他库过程的调用一样。
有无必要让程序员了解哪一个库过程导致了系统调用?
在什么情形下,为什么?
答:
就程序逻辑而言,库例程调用哪个系统调用是没有关系的。
但是,如果需要考虑性能问题,无需系统调用就可以完成的任务将使进程运行更快。
所有的系统调用都会导致用户环境和内核环境的切换开销。
更进一步,在多用户系统中,在系统调用完成之前,操作系统可能调度到其他的进程,这将使得调用过程的处理更加迟缓。
(操作系统第二版中文答案)
1、于操作系统,下列叙述不正确的是( )。
A、管理系统资源 B、控制程序执行
C、改善人机界面 D、提高用户软件运行速度
2、以下哪个系统不是基本的操作系统( ).
A、分时操作系统 B、实时操作系统
C、分布式操作系统 D、多道批处理系统
3、计算机系统由__________和__________组成。
4、分时操作系统具有的四个主要特点是同时性、_________、__________和_________。
5、多道程序设计的根本目标是()。
6、多项选择:
操作系统设计目标是( )。
A、管理系统资源 B、提高安全性
C、方便用户使用系统 D、使系统能高效工作
7、在( )的控制下,计算机系统能及时处理由过程控制反馈的数据,并作出响应。
A、批处理操作系统 B、实时操作系统
C、分时操作系统 D、多处理机操作系统
8、多项选择:
引入多道程序设计的主要目的在于( )。
A、提高实时响应速度 B、充分利用处理机,减少机空闲时间
C、有利于代码共享 D、充分利用外围设备
E、减少存储器碎片
9、计算机发展到第三代,操作系统已成为软件的一个重要分支,最早的操作系统是()。
10、设计实时操作时( )不是主要的追求目标。
A、安全可靠 B、资源利用率 C、及时响应 D、快速处理
答案:
1、D 2、C 3、硬件子系统 软件子系统 4、独立性 及时性 交互性
5、提高计算机系统的工作效率
6、C D
7、B
8、BD
9、批处理操作系统
10、B
第二章:
进程与线程(P95)
2、假设要设计一种先进的计算机体系结构,它使用硬件而不是中断来完成进程切换。
CPU需要哪些信息?
请描述用硬件完成进程切换的过程。
答:
应该有一个寄存器包含当前进程表项的指针。
当I/O结束时,CPU讲当前的机器状态存入当前进程表项中,然后,将转到中断设备的中断向量,读取另一个过程表项的指针(服务例程)。
然后,就可以启动这个进程了。
(操作系统第二版中文答案)
3、在所有当代计算机中,至少有部分中断处理程序是用汇编语言编写的。
为什么?
答:
通常高级语言不允许CPU硬件,而这种访问是必须的。
例如:
中断处理程序可能需要禁用和启动某个特定的设备服务,或者处理进程堆栈区的数据。
另外,中断服务例程需要尽快地执行。
(操作系统第二版中文答案)
4、当中断或系统调用把控制转给操作系统时,通常将内核堆栈和被中断进程的运行堆栈分离。
为什么?
答:
内核使用单独的堆栈有若干的原因。
其中两个原因如下:
首先,不希望操作系统崩溃,由于某些用户进程不允许足够的堆栈空间。
第二,如果内核将数据保留在用户空间,然后从操作系统调用返回,那么恶意的用户可能使用这些数据找出某些关于它进程的信息。
(操作系统第二版中文答案)
5、多个作业能够并行运行,比它们顺序执行完成的要快。
假设有两个作业同时开始执行,每个需要10分钟的CPU时间。
如果顺序执行,那么最后一个作业需要多少时间可以完成?
如果并行执行又需要多少时间?
假设I/O等待占50%。
答:
CPU利用率计算公式:
CPU利用率=1-p^n.设运行作业所需要的时间为T
顺序执行:
T=(10+10)/0.5=40(分钟);
并行执行:
p=0.5,n=2,CPU利用率=1-0.5^2=0.75,则T=(10+10)/0.75=26.7(分钟).
7、如果创建一个多线程进程,若子进程得到全部父进程线程的副本,会出现问题。
假如原有线程之一正在等待键盘输入,现在则成为两个线程在等待键盘输入,每个进程有一个。
在单线程进程中也会发生这种问题吗?
答:
不会。
如果单线程进程在键盘上阻塞,就不能创建子进程。
(操作系统第二版中文答案)
9、在本章中,我们介绍了多线程的web服务器,说明它比单线程服务器和有限状态机服务器更好的原因。
存在单线程服务器更好一些的情形吗?
请给出一个例子。
答:
是的。
如果服务器是完全CPU绑定的,则不需要多线程。
这只会增加不必要的复杂性。
假设某个百万人口区域的电话查号系统(类似于114),如果每个(姓名,电话号码)记录为64个字符,整个的数据库则为64MB,这就是很容易全部读入服务器内存中以提高快速的查询。
(操作系统第二版中文答案)
11、为什么线程要通过调用thread_yield自愿放弃CPU?
毕竟,由于没有周期性的时钟中断,线程可以不交回CPU。
答:
进程中线程是相互协作的,而不是相互独立的。
如果放弃了是为了应用程序,那么线程将放弃CPU。
毕竟,通常是同一个程序员写的代码。
(操作系统第二版中文答案)
12、线程可以被时钟中断抢占吗?
如果可以,在什么情形下可以?
如果不可以,为什么不可以?
答:
用户级线程不能被时中断抢占,除非整个进程的时间片用完。
内核级线程可以单独地被剥夺。
在后一种情况下,如果线程运行过久,时钟将的中断当前的进程,因而当前线程也被中断。
内核可以自由地从同一个进程中选取其他线程运行。
(操作系统第二版中文答案)
20、在2.3.4节中,描述了一种有高级优先级进程H和低级优先级进程L的情况,导致了H陷入死循环。
若采用轮换调度算法而不是优先级调度算法,会发生同样的问题吗?
请给予讨论。
答:
对于时间片轮转调度,该方法不会出现问题。
L迟早会运行,而且最终将离开其临界区。
对于优先级调度,L永远得不到运行;而对于时间片轮转,它将周期性地得到一时间片,因此就有机会离开其临界区。
(操作系统第二版中文答案)
23、两个进程在一个共享存储器多处理器(即两个CPU)当它们要共享一个公共内存时,图2-23所示的采用变量turn的忙等待解决方案有效吗?
答:
是的,它还是会有用的。
当然,它依然是忙等待。
(操作系统第二版中文答案)
27、如果一个系统只有两个进程,可以使用一个屏障来同步这两个进程吗?
为什么?
答:
如果程序是操作按阶段进行,直到两个进程都完成当前阶段才能进入下一个阶段,这时就应该使用屏障。
(操作系统第二版中文答案)
28、如果线程在内核中实现,可以使用内核信号量对同一个进程中的两个线程进行同步吗?
如果线程在用户空间安实现呢?
假设在其他进程中没有线程必须访问该信号量。
请讨论你的答案。
答:
对于内核线程,线程可以在信号量上阻塞,而内核可以运行该进程中的其他线程。
因而,使用信号量没有问题。
而对于用户级线程,当某个线程在信号量上阻塞时,内核将认为整个进程都被阻塞。
而且不再执行它。
因此,进程失败。
(操作系统第二版中文答案)
30、一个快餐店有四类雇员:
(1)领班,接收顾客点的菜单;
(2)厨师,准备饭菜;(3)打包工,将饭菜装在袋子里;(4)收银员,将食品袋交给顾客并收钱。
每个雇员可被看作一个进行通讯的顺序进程。
它们采用的进程间通信方式是什么?
请将这个模型与UNIX中进程联系起来。
答:
雇员之间通过消息传递进行通信:
在该例中,消息为订单、食物和袋子。
在UNIX中,该4个进程通过管道连接。
(操作系统第二版中文答案)
1、为了使A、B两个进程互斥地访问单个缓冲区,应为之设置一个互斥信号量S,初值为1,相应在的P(S),V(S)操作必须分别安排在( )的两端。
A、该单缓冲区 B、两进程的临界区
C、两进程的程序段 D、两进程的控制块
2、一个进程可以包含多个线程,各线程( )
A、必须串行工作 B、共享分配给进程的主存地址空间
C、共享进程的PCB D、是独立的资源分配单位
3、PV操作所处理的变量是( )
A、锁变量 B、整型信号量 C、记录型信号量 D、控制变量
4、为了使两个进程能同步运行,最少需要( )个信号量。
A、1 B、2 C、3 D、4
5、共享变量是指( )访问的变量。
A、只能被系统进程 B、只能被多个进程互斥访问的变量
C、只能被用户进程 D、可被多个进程
6、临界区是指并发进程中访问共享变量的( )。
A、管理信息 B、数据 C、信息存储 D、程序
7、多项选择:
线程是操作系统的概念,已具有线程管理的操作系统有( )。
A、WINDOWS32 B、OS/2 C、WindowsNT
D、DOS6.22 E、Mach
8、多项选择:
一个进程向其他进程发送消息时,应组织好一封信件,内容包括( )。
A、接收者名 B、发送者名 C、具体信息
D、等不等回信标志 E、回信存放地址
9、在具有n个进程的系统中,允许m个进程(n≥m≥1)同时进入它们的临界区,其信号量S的值的变化范围是_________,处于等待状态的进程数最多________个。
10、线程与进程的根本区别是把进程作为______单位,而线程是_________单位。
答案:
1、B 2、B 3、B 4、B 5、B 6、D 7、BCE 8、BCDE
9、n-m≤S≤m n-m
10、资源分配 调度和执行
第三章:
存储管理(P139)
2、交换系统通过紧缩来消除空闲区。
假设有很多空闲区和数据段随机分布,并且读或写32位长的字需要10ns的时间,紧缩128MB大概需要多少长时间?
为了简单起见,假设空闲区中含有字0,内存中最高地址处含有有效数据。
答:
几乎整个内存都必须复制,也就是要求读出每一个内存字,然后重写到不同的位置。
读4个字节需要10nsec,因此读1个字节需2.5nsec,而还要话费2.5nsec用于重写,因此,对于每个字节的压缩需要5nsec。
其速率为200,000,000字节/sec。
为了复制128MB(2^27字节,也就是大约1.34*10^8字节),该计算机需要2^27/200,000,000sec,也就是大约671msec。
该数字是稍微悲观的因为如果内存地步的最初的空间为k字节,那么该k字节无需复制。
不过,如果有许多空间和许多数据碎片,因此空洞将非常小,k也就非常小,而误差也非常小。
(操作系统第二版中文答案)
3、请比较用位图和链表两种方法来记录空闲内存所需的存储空间。
128MB的内存以n字节为单元分配。
对于链表,假设内存中数据段和空闲区交替排列,长度均为64KB。
并假设链表中的每个结点需要32位的内存地址、16位长度和16位下一个结点域。
这两种方法分别需要多少字节的存储空间?
哪种方法更好?
答:
位图:
128MB(2^27字节)的内存以n字节为单元分配,则可以分成(128*2^20)/n=2^27/n个单元,8个单元需要1字节的位图,即总需要2^27/8n字节的位图。
所以记录内存需要的存储空间大小为:
2^27+2^27/8n=2^27(1+1/8n)字节;
链表:
128MB的内存可有(128MB/64KB=2^11)个区域,一个节点需要(32+16+16)/8=8字节,所以记录内存需要的存储空间大小为:
2^11*8+2^27=2^27(1+1/2^13)=2^27(1+1/(8*2^10));
当n<2^10字节(即1KB)时,位图>链表,则使用链表;当n>1KB时,位图<链表,则使用位图。
4、在一个交换系统中,按内存地址排列的空闲区大小是:
10KB、4KB、20KB、18KB、7KB、9KB、12KB和15KB。
对于连续的段请求:
a)12KB,b)10KB,c)9KB。
使用首次适配算法,将找出哪个空闲区?
使用最佳适配、最差适配、下次适配算法呢?
答:
首次适配:
20KB,10KB,18KB;
最佳适配:
12KB,10KB,9KB;
最差适配:
20KB,18KB,15KB;
下次适配:
20KB,18KB,9KB。
(操作系统第二版中文答案)
7、考虑下面的C程序:
intX[N];
intstep=M;//M是某个预定义的常量
for(inti=0;ia)如果这个程序运行在一个页面大小为4KB且有64个TLB表项的机器上时,M和N取什么值会使得内层循环的每次执行都会引起TLB失效?
b)如果循环重复很多遍,结果会和a)的答案相同吗?
请解释。
答:
a)M的最小值是4096,才能使内层循环的每次执行时都引起TLB失效,N的值只会影响到X的循环次数,与TLB失效无关。
b)M的值应该大于4096才能在内层循环每次执行时引起TLB失效,但现在N的值要大于64K,所以X会超过256KB。
10、假设一个机器有48位的虚拟地址和32位的物理地址。
a)假设页面大小是4KB,如果只有一级页表,那么在页表里有多少页表项?
请解释。
b)假设同一系统有32个TLB表项,并且假设一个程序的指令正好能放入一个页,并且该程序顺序地从数千个页的数组中读取长整型元素。
在这种情况下TLB的效果如何?
答:
a)
b)TLB访问的命中率达100%。
在指令访问下一个页面之前读取数据的命中率是100%,一个4KB大小的页面包含1024个长整型数据,每访问1024个数据就会有一次TLB失效。
12、一个32位地址的计算机使用两级页表。
虚拟地址被分成9位的顶级页表域、11位的二级页表域和一个偏移量,页面大小是多少?
在地址空间中一共有多少个页面?
答:
偏移量=32-9-11=12(位),所以页面大小为:
2^12=4KB,页面数为:
2^20。
13、假设一个32位虚拟地址被分成a、b、c、d四个域。
前三个域用于一个三级页表系统,第四个域d是偏移量。
页面数与这四个域的大小都有关系吗?
如果不是,与哪些因素有关及与哪些因素无关?
答:
页面数只依赖于a,b和c的和,至于它们之间是如何划分是无关的。
(操作系统第二版中文答案)
19、一个计算机的页面大小为8KB,内存大小为256KB虚拟地址空间为64GB,使用倒排页表实现虚拟内存。
为了保证平均散列链的长度小于1,散列表应该多大?
假设散列表的大小为2的幂。
答:
内存有2^28(256KB)/2^13(8KB)=(2^15)32768页。
32K的哈希表的平均链长为1。
为了使之小于1,必须使用下一个尺寸(2^16)65536项。
将32768项放入65536格中使其平均链长为0.5,以保证快速的查询。
(操作系统第二版中文答案)
21、假设虚拟页码索引流中有一些长的页码索引序列的重复,序列之后有时会是一个随机的页码索引。
例如,序列0,1,…,511,431,0,1,…,511,332,0,1,…中包含了0,1,…,511的重复,以及跟随在它们之后的随机页码索引431和332.
a)在工作负载比该序列短的情况下,标准的页面置换算法(LRU、Clock、FIFO)在处理换页时为什么效果不好?
b)如果一个程序分配了500个页框,请描述一个效果优于LRU、Clock或FIFO算法的页面置换方法。
答:
a)标准的页面置换算法是针对已经在内存中的页面研究的。
当工作负载比序列短时,会出现内存容量不够而长生颠簸,这种情况下LRU、Clock、FIFO算法达不到预期的效果。
b)如果分配了500个页框,那么0~498号页框是固定的,只有一个页框进行页面置换。
22、如果将FIFO页面置换算法4个页框和8个页面上,若初始时页框为空,访问字符串为0172327103,请问会发生多少次缺页中断?
如果使用LRU算法呢?
FIFO的页框如下:
x0172333300
xx017222233
xxx01777722
xxxx0111177
LRU的页框如下:
x0172327103
xx017232710
xxx01773271
xxxx0111327
FIFO发生6次缺页中断,LRU发生7次缺页中断。
(操作系统第二版中文答案)
28、一个计算机有4个页框,装入时间、上次访问时间和每个页面的R位和M位如下所示(时间以时间滴答为单位):
页面
装入时间
上次访问时间
R
M
0
126
280
1
0
1
230
265
0
1
2
140
270
0
0
3
110
285
1
1
a)NRU算法置换哪个页面?
(页面2)
b)FIFO算法置换哪个页面?
(页面3)
c)LRU算法置换哪个页面?
(页面1)
d)第二次机会算法置换哪个页面?
(页面2)
29、有二维数组:
intX[64][64];假设系统中有4个页框,每个页框的大小为128个字(一个整数占用一个字)。
处理数组X的程序正好可以放在一个页中,而且总是占用0号页。
数据会在其他3个页框中被换入或换出。
数组X为按行存储(即在内存中X[0][0]之后是X[0][1])。
下面两段代码中,哪一个会有最小的缺页中断?
请解释原因,并计算缺页中断的总数。
A段:
for(intj=0;j<64;j++)
for(inti=0;i<64;i++)X[i][j]=0;
B段:
for(inti=0;i<64;i++)
for(intj=0;j<64;j++)X[i][j]=0;
答:
依题,A段按列访问,B段按行访问;X数组按行存储,即每一页可存储2行(128字节);每访问一次页框就发生一次缺页中断。
A段:
每访问2个数就发生一次缺页中断,则会有64*64/2=2048次缺页中断;
B段:
每访问2行就有一次缺页中断,因此只需要64/2=32次缺页中断。
32、一个页面同一时刻可能在两个工作集中吗?
请解释原因。
答:
如果页面是可以共享的,就可以出现在两个工作集中。
例如,如果某分时系统的2个用户运行同样的编辑程序,程序的正文是共享的,而不是