操作系统课后习题

第一章:绪论

1-4

什么是多道程序设计技术?试述多道程序运行的特征?

多道程序设计技术是指同时把多个作业(程序)放入内存并允许它们交替执行和共享系统中的各类资源;当一道程序因某种原因(如IO请求〉而暂停执行时,CPU立即转去执行另一道程序。
多道程序运行具有如下特征:多道计算机内存中同时存放几道相互独立的程序。
宏观上并行:同时进入系统的几道程序都处于运行过程中,它们先后开始了各自的运行,但都未运行完毕。
微观上串行:从微观上看,内存中的多道程序轮流或分时地占有处理机,交替执行。

1-7

设一计算机系统有输入机一台、打印机两台,现有A、B两道程序同时投入运行,且程序A先运行,程序B后运行。程序A的运行轨迹为:计算50
ms,打印信息100 ms,再计算50 ms,打印信息100 ms,结束。程序B运行的轨迹为:计算50 ms,输人数据80
ms,再计算100 ms,结束。要求: (1)用图画出这两道程序并发执行时的工作情况。
(2)在两道程序运行时,CPU有无空闲等待?若有,在哪段时间内等待?为什么会空闲等待?
(3)程序A、B运行时有无等待现象?在什么时候会发生等待现象?为什么会发生?

(1)
在这里插入图片描述

(2)CPU有空闲等待,发生在100ms,150ms时间段内,此时间与程序B都在进行I/O操作。
(3)程序A无等待现象,程序B在0ms,50ms时间段内与180ms时间段内有等待现象。

第二章:操作系统的组成结构

2-5

什么是中断?在计算机系统中为什么要引用中断?

中断是指某个事件(例如,电源掉电、浮点运算溢出、外部设备传输完成或出错等)发生时,系统中止现运行程序的执行,引出处理事件程序对相应事件进行处理,处理完毕后返回断点继续执行。
引用中断是为了实现并发活动,为了实现计算机系统的自动化工作。中断可以解决主机与外设的并行工作问题,提高可靠性,实现多机联系,实现实时控制。

2-13

软件的中断处理过程主要分为哪几个阶段?试用图画出软件的中断处理过程。

四个阶段。保存进程状态的其余信息,中断处理程序处理中断,恢复进程状态信息,从系统堆栈恢复原PSW和PC。
中断过程:
在这里插入图片描述

第三章:用户界面

3-5

用户与操作系统的接口是什么?一个分时系统提供什么接口,一个批处理系统又提供什么接口?

操作系统的用户界面即是用户与操作系统的接口,分时系统提供的操作界面是键盘命令,这一类操作系统采用的是联机处理的方式,批处理系统提供的操作界面称为作业控制语言,这类操作系统采用的是脱机处理方式。

3-8

简述系统调用的执行过程

为实现系统调用,必须事先准备好能够实现各种共能的例行子程序,然后要建造例行子程序的地址表。假设该表首地址为A,每个例行子程序的入口地址占一个字长,将各例子程序的入口地址分别送入A+0,A+1……中,另外,系统还需编制访管中断处理程序,其功能是:做常规的现场保护后,取i值,然后安排一条转移命令,按A+i的单元中的内容转移。而在用户程序中,在需要程序系统服务的地方安排一条系统调用。这样,当程序执行到这一条命令时,就发生中断,系统由用户态转为管态,操作系统的访管中断处理程序得到控制权,他将按系统调用的功能号,借助例行子程序入口地址表转到相应的例行程序去执行,在完成了用户所需要的服务功能后,退出中断,返回到用户程序的断点继续执行。

第四章:并发处理

1-4

图4.32(a)、(b)分别给出了两个进程流图。试用信号灯的P、V操作分别实现如图4.32(a)、(b)所示的两组进程之间的同步,并写出程序描述。
在这里插入图片描述

程序task1(图(a))
main(){
int s12 = 0; /* 表示p2进程是否执行 /
int s13 = 0; /
表示p3进程是否执行 /
int s14 = 0; /
表示p4进程是否执行 */
cobegin
p1();
p2();
p3();
p4();
coend
}

在这里插入图片描述

程序task2(图(b))
main(){
int s13 = 0; /* 表示p1执行是否完成 /
int s23 = 0; /
表示p2执行是否完成 */
cobegin
p1();
p2();
p3();
coend
}
在这里插入图片描述

1-7

判断下列同步算法是否有错,若有错,请指出错误原因并改正。 (1)三个进程并发活动的进程流图如图4.35所示,其同步算法描述如下。
在这里插入图片描述
在这里插入图片描述

进程p3开始执行的先决条件是p1和p2,因此执行p3的时候需要两个信号量。用信号量s1、s2分别表示当p1进程执行完毕时和当p2进程执行完毕时,该同步算法应该为:
main(){
int s1 = 0;
int s2 = 0;
cobegin
p1();
p2();
p3();
coend
}
在这里插入图片描述

(2)设A、B两进程共用一缓冲区t,A向t写入信息,B则从t读出信息,算法如图4.36所示。
在这里插入图片描述

当进程A写入消息之后需要通知进程B去取出消息,因此两进程之间是同步进程。定义两个信号量s1、s2,s1=1表示缓存区为空,s2为0表示缓存区没有消息。算法描述为:
main()
{
int s1 = 1; /* 表示缓存区是否为空 /
int s2 = 0; /
表示缓存区是否有消息 */
cobegin
pa();
pb();
coend
}
在这里插入图片描述

(3)设A、B为两个并发进程,它们共享一临界资源,其执行临界区的算法如图4.37所示。
在这里插入图片描述

进程A、B互斥,只需要一个信号量s,用来表示临界资源初始情况下是否有进程使用。
main(){
int s = 1;
cobegin
pa();
pb();
coend
}

在这里插入图片描述

第五章:资源分配与调度

5-6

图5.9表示一带闸门的运河,其上有两架吊桥。吊桥坐落在一条公路上,为使该公路避开一块沼泽地而令其横跨运河两次。运河和公路的交通都是单方向的。运河上的基本运输由驳船担负。在一船驳船接近吊桥A时就拉响汽笛警告,若桥上无车辆,吊桥就吊起,直到驳船尾部通过此桥为止。对吊桥B也按同样次序处理。
在这里插入图片描述
(1) 一艘典型驳船的长度为200米,当它在河上航行时是否会产生死锁?若会,其理由是什么?

当它在桥上航行的时候,会产生死锁。因为吊桥的长度长200米,当吊桥吊起且驳船到达吊桥B后,请求吊桥B吊起,但是驳船的尾部已然占据着吊桥A,而汽车又要通过吊桥A,这就导致了驳船和汽车都无法通行的局面,造成死锁。

(2) 如何能克服一个可能的死锁?请提出一个防止死锁的办法。

可以一次性申请所有需要的资源。当驳船到达吊桥A的时候,吊桥A和吊桥B都吊起且都不允许汽车通行,等到驳船船身全部通过后,吊桥A和吊桥B才放下,这是才允许汽车通行。

(3) 如何利用信号灯的P、V操作,,实现车辆和驳船的同步?

设置两个互斥信号量mutex1、mutex2分别表示驳船和汽车对桥A和桥B的互斥使用,设置count信号量用来记录当前占用吊桥A和B的汽车数,设置互斥信号量matex3表示汽车对共享变量count的互斥访问。
main(){
int mutex1=1; /* 表示驳船和汽车对桥A的互斥使用 /
int mutex2=1; /
表示驳船和汽车对桥B的互斥使用 */
int mutex3=1;
int count=0;
cobegin
p1();//i=1,2,…,m
carj;//j=1,2,…,n
coend
}

在这里插入图片描述

5-7

讨论图5.10描述的交通死锁的例子(设各方向上的汽车是单线、直线行驶):
在这里插入图片描述

(1) 对于产生死锁的四个必要条件中的哪些条件在此例中是适用的?

互斥条件:路口必须互斥使用,即汽车对它所需要的路口是排他性控制的。
不剥夺条件:汽车一旦占用了路口,除非自己让出路口,别人无权剥夺。
部分分配条件:每个方向的车队都占有一个路口,同时因申请新路口而等待。
环路等待条件:占有路口的车都在等待其它占有的路口,循环等待。

(2) 提出一个简单的原则,它能避免死锁。

可以在每个路口进行红绿灯控制,只有当正前方绿灯亮起时,南北方向的车辆才可以通行,东西方向的车辆则禁止通行,反之,红灯亮起时,南北方向的车辆禁止通行,东北方向的车辆则可以通行。

(3)若用计算机实现交通自动管理,请用信号灯的P、V操作来实现各方向上汽车行驶的同步。

设信号量p1、p2分别表示东西方向和南北方向是否通行,mutex互斥信号量表示路口的红绿灯,则:
main(){
int S1=1; /* 表示东西方向可以通行 /
int S2=0; /
表示南北方向可以通行 /
int mutex=1; /
表示路口的互斥使用 */
cobegin
p1();
p2();
coend
}
在这里插入图片描述

第六章:并发处理

6-6

在单道批处理系统中,有下列四个作业分别用先来先服务调度算法和最短作业优先调度算法进行调度,哪一种算法调度性能好些?请按表6.5的格式,分别用两张表正确填补表中未填写的各项。

在这里插入图片描述
平均周转时间t=2.03h,平均带权周转时间w=3.98h

最短作业优先调度算法
平均周转时间t=1.84h,平均带权周转时间w=3.29h

第7章:

7-8

已知主存有256KB容量,其中os占用低址20KB,现有如下一个作业序列: 作业1 要求 80KB; 作业2 要求 16KB; 作业3 要求
140KB; 作业1 完成; 作业3 完成; 作业4 要求 80KB; 作业5 要求 120KB。
试分别用首次适应算法和最佳适应算法处理上述作业序列(在存储分配时,从空闲区高址处分割作为已分配区),并完成以下各步骤。
(1) 画出作业1、2、3进入主存后主存的分配情况。

在这里插入图片描述

(2) 画出作业1、3完成后主存的分配情况。

在这里插入图片描述

(3) 试分别用上述两种算法画出作业1、3完成后的空闲区队列结构(要求画出分区描述器信息,假定分区描述器所需占用的字节数已包含在作业所要求的的主存容量中)。

首次适应算法
在这里插入图片描述

最佳适应算法
在这里插入图片描述

(4)哪种算法对该作业序列是适合的?简要说明分配过程。

采用首次适应法,将起始地址为19KB的空白区(大小为140KB)分配给程序4,还剩下96KB空白区。此时系统中有两个空白区,它们的大小分别为96KB和80KB,都不能满足程序5的需求。所以这种方法对该程序序列是不合适的。
采用最佳适应法,先将起始地址为176KB的空白区(大小为80KB)分配给程序4。此时系统中还有一个空白区,即起始地址为19KB,大小为 40KB的空白区,它可以满足程序5的需求(120KB)。因此最佳适应法对该程序序列是合适的。
综上,最佳适应算法是合适的。因为他每次分配给文件的都是最合适该文件大小的分区,既能满足要求,又是最小的空闲分区分配给作业。

第八章

8-5

常用的缓冲技术有哪些?

常用的缓冲技术有双缓冲、环形缓冲和缓冲池。

8-11

什么是spool系统?什么是预输入?什么是缓输出?

(1)spool系统(假脱机系统):操作系统提供外部设备联机同时操作的功能设备。
(2)预输入:spool系统在应用程序执行前将应用程序的信息通过独占设备预先输入到辅存上的一个特定的存储区域存放好。
(3)缓输出:在应用程序执行中,也不必直接启动独占设备输出数据,而只要将其输出数据写入磁盘中存取,在应用程序执行完毕后,由操作系统来组织信息输出。

第九章:

9-6

设文件B按串联文件构造,并由四个逻辑记录组成(其大小与磁盘块大小相等,均为512B)。这四个逻辑记录分别存放在第100、157、66、67号磁盘块上,回答如下问题:
(1) 画出串联文件的结构; (2) 若要读出文件B第1560字节处的信息,问要访问哪一个磁盘块?为什么? (3)
读文件B第1560字节处的信息需要进行多少次I/O操作?为什么?

(1)串联文件的结构如下图所示:
在这里插入图片描述

(2)1560/512=3,访问第3个逻辑块号,所以访问的是磁盘块67;
(3)4次。

9-7

什么是索引文件?要随机存取某一个记录时需要经过几步操作?

将逻辑文件顺序地划分成长度与物理存储块长度相同的逻辑快,然后为每个文件分别建立逻辑块号与物理块号的对照表,即索引表,用这种方法构造的文件称为索引文件。
访问索引文件需两步:第一步是查文件索引,由逻辑块号查得物理块号;第二步是由此物理块号而获得所要求的信息。

第一章 1、设计现代OS的主要目标是什么?P1 答:其主要目标是有效性、方便性、可扩充性、开放性。 2、OS的作用可表现在哪几个方面?P2-P3 答:1、OS作为用户与计算机硬件系统之间的接口;2、OS作为计算机资源的管理者;3、OS实现了对计算机资源的抽象; 3、为什么说OS实现了计算机资源的抽象?P4 答:完全无软件的计算机系统(即裸机),它向用户提供的是实际硬件接口(物理接口),用户必须对物理接口的实现细节有充分的了解,并利用机器指令进行编程,因此该物理机器必定是难以使用的。为了方便用户使用I/O设备,人们在裸机上覆盖上一层I/O设备管理软件。通常把覆盖了上述软件的机器称为扩充机器或虚机器。它向用户(进程)提供了一个对硬件操作的抽象模型,用户更容易地使用计算机便件资源。由该层软件实现了对计算机硬件操作的第一个层次的抽象。为了方便用户使用文件系统,人们又在第一层软件上再覆盖上一层用于文件的管理软件,同样由它来实现对文件操作的细节,并向上提供一组对文件进行存取操作的命令,用户可利用这组命令进行文件的存取。此时用户所看到的是一台功能更强、使用更方便的虚机器。该层软件实现了对硬件资源操作的第二个层次的抽象。OS是铺设在计算机硬件上的多层系统软件,它们不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,由它们实现了对计算机硬件操作的多个层次的抽象。值得说明的,对一个硬件在底层进行抽象后,在高层还可再次对该资源进行抽象,成为更高层的抽象模型。随着抽象层次的提高,抽象接口所提供的功能就越来越强,用户使用起来也更加方便。 4、试说明推动多道批处理系统形成和发展的主要动力是什么?P4-P5 答:为了进一步提高资源的利用率和系统吞吐量,在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为“后备队列”;然后,由作业高度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中各种资源。在OS中引入多道程序设计技术可带来以下好处:提高CPU和利用率、可提高内存和I/O设备利用率、增加系统吞吐量。主要动力:1、不断提高计算机资源的利用率;2、方便用户;3、器件的不断更新换代;4、计算机体系结构的不断发展; 5、何谓脱机I/O和联机I/O?P6 答:由于程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的,该技术是脱机输入/输出方式;反之,在主机的直接控制下进行输入/输出的方式称为联机输入/输出)ON-LINE I/O)方式。1、减少了CPU的空闲时间;2、提高了I/O速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是Yu欸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值