现代操作系统作业题整理.docx

上传人:b****9 文档编号:26207970 上传时间:2023-06-17 格式:DOCX 页数:22 大小:31.45KB
下载 相关 举报
现代操作系统作业题整理.docx_第1页
第1页 / 共22页
现代操作系统作业题整理.docx_第2页
第2页 / 共22页
现代操作系统作业题整理.docx_第3页
第3页 / 共22页
现代操作系统作业题整理.docx_第4页
第4页 / 共22页
现代操作系统作业题整理.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

现代操作系统作业题整理.docx

《现代操作系统作业题整理.docx》由会员分享,可在线阅读,更多相关《现代操作系统作业题整理.docx(22页珍藏版)》请在冰豆网上搜索。

现代操作系统作业题整理.docx

现代操作系统作业题整理

注:

标有“操作系统第二版中文版答案”的答案是从操作系统第二版中文答案的电子书上摘抄的,剩下的是非标准答案(可以忽略~~)。

有几道题没有写。

以下的相关文档仅供参考!

祝各位同学考试愉快!

第一章:

引论(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;i

a)如果这个程序运行在一个页面大小为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个用户运行同样的编辑程序,程序的正文是共享的,而不是

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1