操作系统 题库答案汇总

P1000

D

 

P1001

D

 

P1002

D

 

P1003

A

 

P1004

A

 

P1005

B

 

P1006

C

 

P1007

C

 

P1008

B

 

P1009

C

 

P1010

A

 

P1011

D

 

P1012

B

 

P1013

B

 

P1014

C

 

P1015

B

 

P1016

D

 

P1017

A

 

P1018

C

 

P1019

C

 

P1020

C

 

P1021

B

 

P1022

C

 

P1023

D

 

P1024

D

 

P1025

C

 

P1026

C

 

P1027

A

 

P1028

A

 

P1029

B

 

P1030

D

 

P1031

B

 

P1032

A

 

P1033

C

 

P1034

D

 

P1035

D

 

P1036

A

 

P1037

B

 

P1038

A

 

P1039

C

 

P1040

 

B

解析:如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程;
如果系统中有内核态线程,则操作系统可以按线程进行调度

 

P1041

C

 

P1042

A

 

P1043

B

 

P1044

C

 

P1045

D

 

P1046

B

 

P1047

D

 

P1048

A

 

P1049

A

 

P1050

C

 

P1051

A

 

P1052

C

 

P1053

C

同步为0,互斥为1

 

P1054

A

 

P1055

C

 

P1056

D

 

P1057

B

互斥信号量,初始值为1,取值范围为(-1,0,1)。
当信号量为1时,表示两个进程皆未进入需要互斥的临界区;
当信号量为0时,表示有一个进程进入临界区运行,另一个必须等待;
当信号量为-1时,表示有一个进程正在临界区运行,另一个进程因等待而阻塞在信号量队列中,需要当前已在临界区运行的进程退出时唤醒。

 

P1058

A

 

P1059

B

 

P1060

D

 

P1061

A

 

P1062

B

 

P1063

B

 

P1064

D

 

P1065

B

 

P1066

A

 

P1067

B

 

P1068

B

1)可利用资源向量Available

是个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目。如果Available[j]=K,则表示系统中现有Rj类资源K个。

2)最大需求矩阵Max

这是一个n×m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。

3)分配矩阵Allocation

这也是一个n×m的矩阵,它定义了系统中每一类资源当前已分配给每一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的 数目为K。

4)需求矩阵Need。

这也是一个n×m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

Need[i,j]=Max[i,j]-Allocation[i,j] 

 

P1069

B

 

P1070

C

A.解除死锁

B.检测死锁

C.预防死锁

D.避免死锁

P1071

D

 

P1072

A

 

P1073

D

 

P1074

A

 

P1075

C

 

P1076

B

 

P1077

A

 

P1078

B

 

P1079

A

 

P1080

A

 

P1081

A

 

P1082

B

 

P1083

C

 

P1084

A

 

P1085

B

 

P1086

B

 

P1087

D

 

P1088

D

 

P1089

C

 

P1090

C

 

P1091

C

 

P1092

C

 

P1093

D

 

P1094

D

 

P1095

B

 

P1096

C

 

P1097

A

 

P1098

D

 

P1099

D

 

P1100

B

 

P1101

D

 

P1102

B

 

P1103

C

 

P1104

C

 

P1105

B

 

P1106

D

 

P1107

C

 

P1108

A

 

P1109

B

 

P1110

A

 

P1111

D

 

P1112

A

 

P1113

B

 

P1114

D

 

P1115

D

 

P1116

C

 

P1117

D

 

P1118

B

 

P1119

A

 

P1120

B

 

P1121

A

 

P1122

B

 

P1123

A

 

P1124

C

 

P1125

B

 

P1126

D

 

P1127

D

 

P1128

B

 

P1129

A

 

P1130

B

 

P1131

B

 

P1132

C

 

P1133

D

 

P1134

C

 

P1135

D

 

P1136

D

 

P1137

D

 

P1138

B

 

P1139

C

 

P1140

C

 

P1141

A

 

P1142

C

 

P1143

B

 

P1144

C

 

P1145

C

 

P1146

C

 

P1147

B

 

P1148

A

 

P1149

B

 

P1150

A

 

P1151

B

 

P1152

C

 

P1153

A

 

P1154

C

 

P1155

B

对于单缓冲:

假定从磁盘把一块数据输入到缓冲区的时间为T,操作系统将该缓冲区中的数据传送到用户区的时间为M,而CPU对这一块数据处理的时间为 C。由于T和C是可以并行的,当T>C时,系统对每一块数据的处理时间为M十T,反之则为M+C,故可把系统对每一块数据的处理时间表示为Max(C, T)+M。

对于双缓冲:

系统处理一块数据的时间可以粗略地认为是MAC(C, T)。如果C<T,可使块设备连续输入(图中所示情况);如果C>T,则可使CPU不必等待设备输入。对于字符设备,若釆用行输入方式,则釆用双缓冲可使用户在输入完第一行之后,在CPU执行第一行中的命令的同时,用户可继续向第二缓冲区输入下一行数据。而单缓冲情况下则必须等待一行数据被提取完毕才可输入下一行的数据。

 

P1156

C

 

P1157

A

 

P1158

C

 

P1159

D

 

P1160

B

 

P1161

A

 

P1162

D

 

P1163

A

 

P1164

A

 

P1165

A

 

P1166

B

 

P1167

A

 

P1168

D

 

P1169

D

 

P1170

B

 

P1171

C

 

P1172

D

 

P1173

D

 

P1174

B

 

P1175

B

 

P1176

D

 

P1177

C

 

P1178

D

 

P1179

C

 

P1180

B

 

P1181

D

 

P1182

B

 

P1183

C

 

P1184

A

 

P1185

C

 

P1186

B

 

P1187

D

 

P1188

答案:D
广义指令就是系统调用命令,而命令解释器属于命令接口,shell是命令解析器,它也属于命令接口。系统中的缓存全部由操作系统管理,对用户是透明的,操作系统不提供管理系统缓存的系统调用。

P1189

B

 

P1190

A

 

P1191

A

 

P1192

B

 

P1193

C

 

P1194

C

 

P1195

A

 

P1196

C

 

P1197

D

 

P1198

C

 

P1199

此题答案为:答:客户机/服务器模型是一个通用的模型。广义上讲提供服务的叫服务器,请求服务的叫客户机。在客户机/服务器操作系统中,文件服务、进程服务等功能是以服务器进程的方式运行于用户态,用户进程通过向服务器进程发出请求,获得服务器的服务。

   因此,客户机/服务器模型既可以用于网络和分布式系统,也可以用于单机系统,只不过网络和分布式系统更需要这种形式。

 

P1200

答:在操作系统中,系统调用程序在系统态执行;一般用户函数调用程序由用户准备,在用户态执行。

 

P1201

此题答案为:答:一般计算机的启动过程是:

   1)由ROM程序对硬件进行检测。

   2)由ROM中的启动程序将磁盘上的引导块读入内存。

   3)由引导块OS的内核调入内存

   4)执行OS内核程序,对OS自身进行初始化。

   5)加载外核处理程序,给出提示,等待用户操作。

 

P1202

答:一般用户最常用的操作系统与用户的接口是控制接口

    用户使用这个接口控制、管理和操作计算机系统,利用它控制程序的执行。

    控制接口分为脱机接连、命令接口、图形接口、多媒体接口。

 

P1203

答:过程调用和系统调用的执行完全是同步的,也就是在相同的数据集上重复执行,它们的调用点是相同的,都需要保存现场信息,转去执行另外的程序,执行后返回。中断调用是异步的,在相同的数据集上重复执行,中断的发生点可以是不同的。

 

P1204

答:处理机现场信息是处理机在任意时刻的状态信息集合,主要包括处理机程序状态寄存器的值、程序计数器和各个寄存器的值。

 

P1205

答:操作系统会影响到计算机系统的可靠性、方便性、效率、可维护性、处理任务的速度、软件成本等。

 

P1206

在多道程序系统中,当需要I/O操作时,不需要CPU直接控制I/O操作的完成。可利用通道、DMA及中断机构来直接控制I/O操作的完成,这时CPU也不是专门空闲等待I/O操作的完成,而是转去执行另一道程序。

 

P1207

答:分时系统的相应时间是指用户从终端发出一个命令到系统处理完这个命令并做出回答所需要的时间。这个时间受时间片长度、终端用户个数、命令本身功能、硬件特性、主存与辅存的交换速度等影响。

 

P1208

答:分时系统是指在一个系统中多个用户分时地使用同一台计算机  实时系统是指计算机及时响应外部事件地请求并在规定时限那完成对该事件地处理,控制所有实时设和实时任务协调一致地运行。

    实时系统和分时系统的主要区别有两点:

    1)分时系统的目标是提供一种通用性很强的系统,有较强的交互能力;而实时系统则大都是具有特殊用途的专用系统,交互能力略差

    2)分时系统对响应时间虽有要求,但一般来说,响应时间由人所能承受的等待时间来确定;而实时系统对响应时间要求很高,一般由控制系统或信息处理磁头所能接受的延迟时间来决定。

 

P1209

答:虽然硬件环境相同,但是程序的运行需要OS的支持。由于Windows系统向下兼容DOS,因此,一个程序能在DOS上运行,也能在Windows上运行。但DOSWindowsUnix在系统结构、用户接口的约定。接口的功能。API等方面是不兼容的。如该程序使用的是WindowsAPI系统调用,而Unix下没有此系统调用,故这个程序在Unix系统中无法执行。

 

P1210

答:在没有操作系统的时候,计算机系统的资源完全由用户和用户程序来控制和管理,使用非常不便。有了操作系统,计算机系统的资源由操作系统控制和管理,用户通过操作系统的服务接口使用这些资源。如果操作系统没有控制和管理某些资源,用户就不能通过操作系统的服务接口使用这些资源。例如,DOS只能管理1MB的内存,装上再多的内存,一般用户也无法使用。

 

P1211

答:多道程序系统中存在着并发和并行操作。例如,在内存中同时装入几个用户程序,I/O操作与CPU计算机并行。由并发和并行而产生一系列问题:如何从一个活动切换到领一个;怎样保护一个活动使其另外一些活动的影响;如何实现相互依赖的活动间的同步等。

 

P1212

答:用于国家导弹防御系统的计算机系统是实时过程控制系统实时信息处理系统相结合的系统。

 

P1213

答:很多进程的切换是由中断引起的,如时钟中断,尤其是分时系统。用户程序进行系统调用时通过软中断来实现,如TRAP。通道和外设的操作也要向操作系统发送中断

 

P1214

答:网络OS中的用户使用自己的机器可以访问网络上别的机器的资源,通过网络将很多机器连接起来,共享硬件资源,但是,整个系统对用户来说是分散的,不透明的。分布式OS的用户也是通过网络将多台机器连接起来,但是整个系统对用户是透明的,用户对整个OS就好像使用一个自己的机器一样。

 

P1215

答:评价一个操作系统的主要因素有方便性、有效性、扩充性、开放性、可用资源的数量。

 

P1216

答:尽管多道批处理系统已经大大地提高了计算机系统的资源利用率,但是它的致命缺点是缺少交互性。怎样才能使系统既具有交互性又不使资源的利用率降低?资源利用率和交互性是一对矛盾。如果一台计算机能够连接多个操作台(终端),允许多个用户同时在操作台上操作,每个操作台上的拥护执行一个程序,形成多个程序的并发执行。通过并发程序的分时执行,确保每个用户操作的计算机终端就好象单独一台计算机一样。这样就避免了只有一个操作台时,大量的计算机时间被一个用户浪费,同时又克服了多道批处理系统非交互性的缺点。

 

P1217

答:手工操作、单道批处理系统、多用户分时系统、多道批处理系统。

1)手工操作没有操作系统,属于单道程序系统,大量的处理机时间被人工操作所浪费,因此CPU的利用率很低。

2)单道批处理系统在一定程度上克服了手工操作的缺点,但仍属于单道程序系统,大量的CPU时间浪费在等待I/O操作的完成上。因此它的CPU利用率比手工操作的系统要高,但比多道程序系统要低。

3)多用户分时系统是多道程序系统,具有交互性。但是程序的分时运行需CPU不断地在多个程序之间进行切换,这种切换需要占用CPU时间。

4)多道批处理系统是多道程序系统,没有交互性。CPU在执行一道程序时一般切换到其他程序,只有在需要等待某种事件发生时,才切换到另一程序执行。因此,它的CPU切换次数远远低于分时系统,而CPU的有效利用率高于批处理系统。

 

P1218

答:从调度上讲,在Windows这样的多任务系统中,当前执行哪个任务是由用户决定的,是用户可控制的;而在Unix这样的多进程系统中,当前运行哪个进程是由内部的调度算法决定,是对用户透明的,用户是不可直接控制的。

 

P1219

答:在有进程和线程的系统中,进程是系统资源分配的独立单位,而线程是可调度运行的独立单位。

 

P1220

答:并发执行是指系统内有多道程序在宏观上"同时"执行,但系统内往往只有一台处理机(CPU),因此只能分时地为多个程序服务。就一道程序而言,往往不是一次能够运行完成,而是以"走走停停"的方式完成其运行,这就是并发系统内程序执行的间断性。

 

P1221

答:唤醒进程和撤消进程都是要通过CPU上运行程序来实现的。一个进程入睡了,它就不可能被调度到CPU上运行;一个进程在撤消前必须先进入终止状态,而处于终止状态的进程不可能被调度到CPU上运行。因此,进程被唤醒、被撤消都不能由自己来完成,只能由别的进程实现。

 

P1222

答:原语是指由若干条机器指令构成的,并用以完成特定功能的一段程序。这段程序在执行期间是不可分割的。其主要特点是不可分割性。

 

P1223

答:程序并发执行与顺序执行时产生的特性有:可分割性、失去封闭性、失去可再现性。

 

P1224

答:程序并发执行的主要特点是并发程序间具有相互制约的关系,程序并发执行失去了程序的封闭性和再现性,程序和机器执行程序的活动不再一一对应。

 

P1225

答:是在别的进程执行相应的I/O中断处理程序时唤醒的。

 

P1226

答:在I/O中断处理程序中,当唤醒进程时,只唤醒等待该I/O结束的那一个进程;当一个进程释放一个系统资源(I/O缓存)时,将要唤醒所有因等待使用该资源而进入阻塞状态的进程。

 

P1227

答:阻塞状态的进程还不具务执行的条件,即使放到处理机上能执行;就绪状态的进程具备了执行的所有条件,放在处理机上就能执行。

 

P1228

答:并不是所有程序的并行执行都会导致运行结果失去封闭性。例如,当程序中都使用内部变量,不可能被外部程序访问时,程序的运行不会受到环境的影响。

 

P1229

答:一个进程创建子进程之后,进程与产生的进程之间的关系是父子关系,分别成为进程和子进程。子进程一经产生就与你进程并发执行,子进程共享父进程和子进程。子进程一经产生就与你进程并发执行,子进程共享父进程的正文段和已经打开的文件。

 

P1230

答:线程可定义为进程内的一个执行单位,或者定义为进程内的一个可调度实体。  在具有多线程机制的操作系统中,处理机调度的基本单位不是进程而是线程。一个进程可以有多个线程,而且至少有一个可执行线程。

  进程和线程的关系是:

  (1)线程是进程的一个组成部分。

  (2)进程的多个线程都在进程的地址空间活动。

  (3)资源是分给进程的,而不是分给线程的,线程在执行中需要资源时,系统从进程的资源分配额中扣除并分配给它。

  (4)处理机调度的基本单位是线程,线程之间竞争处理机,真正在处理机上运行的是线程。

  (5)线程在执行过程中,需要同步。

 

P1231

答:引进线程的好处为: 

  (1)以线程作为系统调度的基本单位,减少了系统的时空开销。以进程为系统调度的基本单位的系统中,进程的切换是很频繁的。在切换中由于要保留当时的运行环境,还要设置新选中的进程的运行环境,这既花费了处理机的时间,又增加了主存的空间,从而也限制了系统进程的数量和进程的切换速度。

  (2)引进线程提高了系统的并行能力。线程作为进程内的一个可执行实体,减少了并行粒度。线程作为调度的基本单位而不是资源分配的基本单位,调度更为容易,而且采用线程提高系统的并行能力比采用进程更为有效。

  (3)同一进程的线程共享进程的用户地址空间,所以同一进程的线程间的通信更容易实现

 

P1232

答:只有两种情况下系统可以复活:一种情况是有因等待I/O操作完成而进入睡眠的进程,当相应的I/O操作完成后,I/O中断处理程序唤醒等待本次I/O的进程,而该进程在运行过程中又可能通过释放资源、发送消息等事件而唤醒其他进程,这样整个系统就又活跃起来了;另一种情况是没有等待I/O操作完成的进程,但有定时睡眠的进程,当睡眠时间到期,会由时钟中断将该入睡进程唤醒,从而获得可运行进程,并有可能使系统重新活跃起来。

 

P1233

答:在实际系统中,两种处理办法都是可行的,且各有优缺点。若撤消,则该进程的任务可能还没有完成,这显然是不利的,特别是当该进程的运行结果对其他进程的运行很重要(如该进程是其他进程的前趋进程,没有它的运行结果其他进程无法运行)时;若不撤消,则该进程又可能成为不可控的"孤儿",从而产生不可预测的结果。比较好的做法是,当一个进程的父进程被撤消时,可以将该进程"过继"给系统内一个级别较高的进程(Unix中的1#进程),让它有一个"新的父亲",这样既可以继续完成其任务又不会成为不可控的。

 

P1234

答:最主要的不同是"入睡"是进程的主动行为,而"挂起"可以是系统的强制行为;此处,只有在CPU上运行的进程才能执行"入睡"操作,而不管进程处于什么状态,系统都可对其执行"挂起"操作。它们的相同点是:这两个操作都导致一个正在CPU上运行的进程从CPU上退下来。

 

P1235

答:一个进程要进入阻塞(睡眠)状态,必须通过执行相应的程序才能实现,如Sleep()Block()就绪进程当前不在CPU上运行,不能执行任何程序,当然不能使自己直接进入阻塞状态。

 

P1236

答:(1)时间片用完 (2)请求资源 (3)I/O请求 (4)分配资源 (5)I/O操作完成

 

P1237

答:互斥指的是某种资源一次只允许一个进程使用,即你在使用的时候我不能使用;我在使用的时候你不能使用。这就是一种协调,一种"步伐"上的一致,因而也就是一种同步。但是,为了求解实际问题,将"同步""互斥"加以区别是有好处的,因为这两种问题的求解方法是不同的。

 

P1238

答:这是因为,进程同步问题若处理不当,有可能会产生种种"与时间有关性错误",特别是当两个或多个进程共享了公共变量而又没有互斥地使用这些变量时,极有可能导致用户程序运行结果的不正确,这量种灾难性的后果。这种OS显然是不成功的,是用户不敢使用的。

 

P1239

答:有以下四条准则:空闲让进、忙则等待、有限等待、让权等待。

 

P1240

答:基于共享存储器的通信、基于消息传递系统的通信和基于管理文件的通信。

 

P1241

答:软件方法是通过互斥地进入同类临界区来解互斥问题的,而硬件方法是设计相应的机器指令和机器指令执行的不可中断性来解互斥问题的。

 

P1242

答:原语是由若干条机器指令构成的用以完成特定功能的一段程序,而这段程序在系统态下执行,且在执行期间是不可分割的。

它与广义指令的区别主要体现在两个方面:

1原语的执行是不可分割的,而广义指令所包含的程序段是允许被中断的,不要求具有不可分割性。

2)广义指令的功能可以在用户态下实现,而原语只能在系统态下执行。

 

P1243

答:对临界区管理的要求是:

1)当有若干个进程要求进入它们的临界区时,应在有限的时间内使一个进程进入临界区,进程之间不应相互等待而使谁都不能进入临界区。

2)每次只允许一个进程进入临界区内。

3)进程在临界区内逗留应在有限的时间范围内。

 

P1244

答:(1)信号量的初值为1信号量的变化范围是10-1-n-1)。

2)信号量的初值为m。信号量的变化范围是m,m-1,…,1,0,…,-(n-m)

 

P1245

答:程序执行不正确性,有两个方面:

   1程序执行结果不正确,即程序执行结果不能再现。同一个程序,对给定相同的初始数据,在相同的环境下运行,多次运行可能得到完全不同的结果。

   2)多道程序环境下,程序按异步方式运行,每个程序在何时执行,各个程序执行的顺序,以及每个程序所需要的时间都是不确定的,也是不可预知的。

 

P1246

答:所谓原语操作是指一个操作中的所有动作,要么成功完成,要么全不做。也就是说,原语操作是一个不可分割的整体。为了保证原语操作的正确性,必须保证原语具有原子性。在单机环境下,操作的原子性一般是通过关中断来实现的。由于中断是计算机与外设通信的重要手段,关中断会对系统产生很大的影响,所以在实现时一定要避免原语操作花费时间过长,绝对不允许原语中出现死循环。

 

P1247

答:进程间存在着两种相互制约的关系:直接制约关系(即同步问题)和间接制约关系(即互斥问题)。同步问题是存在逻辑关系的进程之间相互等待产生的制约关系,互斥问题是相互无逻辑关系的进程间竞争使用相同的资源所发生的制约关系。

  1)属于互斥关系,因为书的个数是有限的,一本书只能借给一个同学。

  2)属于互斥关系,篮球只有一个,两队都要争夺。

  3)属于同步关系,各道工序的开始都依赖前道工序的完成。

  4)属于同步关系,商品没生产出来,消费无法进行,商品未消费完,生产也无需进行。

 

P1248

答:(1)高级调度又称为作业调度。它是批处理系统中使用的一种调度。其主要任务是按照某种算法从外存的后备队列上选择一个或多个作业调入内存,并为其创建进程、分配必要的资源,然后再将所创建的进程控制块插入就绪队列中。

2)低级调度又称进程调度。它是距离硬件最近的一级调度。其主要任务是按照某种算法从就绪队列上选择一个(或多个)进程,使其获得CPU

3)引入中级调度的目的是为了提高内存利用率和系统吞吐量。其功能是,让那些暂时不能运行的进程不再占用宝贵的内存资源,而是调其到外存上等候。此时的进程状态为挂起状态。当这些进程重新具备运行条件且内存空闲时,由中级调度选择一部分挂起状态的进程调入内存并将其状态变为就绪状态。

 

P1249

答:(1)作业调度需要按照多道程序度(最大道数)决定一次接纳多少作业进入内存。如果太少将导致系统资源利用率低,且系统吞吐量低;太多将导致内存空间紧张,系统服务质量下降,作业运行周期过长。

2)作业调度需要决定接纳哪些作业进入内存。常用的算法有:先来先服务、短作业优先、最高优先级调度、响应比高者优先等。

 

P1250

答:(1)时间片原则。在轮转算法中,CPU轮流为诸多进程服务,每个进程运行完自己的时间片后,系统就将CPU剥夺过来,交给下一个进程使用。

2)优先级原则。为紧迫的作业赋予较高的优先级,这种作业到达系统或由阻塞状态被唤醒后,若其优先级高于当前运行的进程的优先级,可以剥夺当前运行进程的CPU

3)短作业(进程)优先原则。若一个作业(进程)到达系统,其运行长度比当前运行的进程长度明显的短,则剥夺当前运行的进程CPU

 

P1251

答:(1)一个进程运行完毕。

2)一个正在运行的进程被阻塞。

3)在抢占式调度中,一个高优先级的进程被创建。

4)在抢占式调度中,一个高优先级进程由阻塞唤醒。

5)在轮转式调度中,正垢进程运行完一个时间片。

 

P1252

答:(1)面向用户准则。对于用户的紧迫性作业,系统能够及时地处理,不至于运行延误;批处理系统追求作业的周转时间短;分时系统追求作业的响应时间快;实时系统中作业的截止时间要有保证。

2)面向系统准则。系统的吞吐量要高,处理机的利用率要高,各类系统资源能够得到平衡利用。

 

P1253

答:终端用户的作业一般比较短小精悍,大多数在进入多级队列的第一级队列后运行一个时间片就可以完成。对于稍长一些的作业,只需在第二或第三队列上各执行一个时间片就可完成,因而感到满意。对于长作业来说,它将依次在第12n个队列上运行,不会因作业太长而长期得不到处理。

 

P1254

答:(1)任务要提供必要的调度信息。开工的最后期限或完工的最后期限、处理时间长度、优先级、就绪时间以及资源需求等。

2)采用适当的调度方式。如果实时任务的运行长度较长且时间要求严格,那么实时系统应采用抢占式调度;如果所有的实时任务都比较小,且预知任务的开工最后期限,也可以采用非剥夺式调度。

3)能够快速响应外部中断。这要求,硬件上要有较高的中断机制,软件 上要使封锁中断时间间隔尽量短,以免贻误电动机。

4)快速的任务分派能力。尽量减少任务切换时间开销,使得一个任务完成后可以较快地切换到下一个任务去。

 

P1255

答:抢占方式和非抢占方式都可以用于实时系统。能够使用的算法有:轮转算法(RR)和优先级调度算法(HPF);不可以使用的算法有:先进先出算法(FIFO)和短进程优先算法(SPF)。

200366. 在多处理机系统中,比较有代表性的线程调度方式有哪几种?

此题答案为:答:(1)自调度方式。诸多CPU可以共享同一就绪队列,从中获取就绪线程运行。

2)成组调度方式。由系统将若干相关的线程同时分配到多台CPU上运行。线程与CPU一一对应。

3)专用处理机分配方式。将若干同属于一个应用程序的线程分配到一组专用CPU上运行。

 

P1256

答:(1)自调度方式中,就绪队列与单机的相同,调度算法也与之相同。系统没有集中调度机制,任何CPU都可调用系统的调度例程去选择一个线程。只要就绪队列不空,就不会有空闲的CPU。问题是多个CPU共享一个就绪队列将产生瓶颈;各线程在其生命周期中可能要换好几台CPU,每次更换都要将CPU中的高速缓存(Cache)重新拷入现场数据,造成效率低下;由于合作的一级线程很难同时获得CPU,一些运行的线程只好阻塞等待未获得CPU的线程,所以线程切换频繁。

2)成组调度中,合作的各线程可以同时获得CPU,减少因同步造成的阻塞,减少了切换次数。同时,也可减少调度的频率。

 

P1257

答:采用多优先级的抢占式调度方式,调度的基本单位是线程。优先级分为三类:每一类共细分为32级,以31级为最高。其中:时间紧迫类为最高类,对应的是实时线程及通信管理等;常规类为中档优先类,对应的是一般线程;空闲时间类为较低类,对应的是紧迫度低的线程。

调度算法:在同一类的同一优先级中采用轮转算法。每当运行完一个时间片就检查是否有更高优先级线程到来,若有便抢占CPU

 

P1258

答:(1)死锁是指多个进程因竞争资源而造成的一种僵持状态。若无外力作用,这些进程都将永远处于阻塞状态,不能再运行下去。

2)产生死锁的原因有:资源不足、进程推进次序不当。

3)产生死锁的必要条件有:互斥条件、请求和保持条件、环路等待条件。

 

P1259

答:比较三种解决死锁的方法:

1预防死锁方法,主要是破坏产生死锁的必要条件。该方法是最容易实现的,但系统资源利用率较低。

2避免死锁方法,比较实用的有银行家算法(Banker Algorithm)。该算法需要较多的数据结构,实现起来比较困难,但资源利用率最高。

3检测死锁方法是基于死锁定理设计的。定期运行该算法对系统的状态进行检测,发现死锁便予以解除。其中,需要比较一下各咱死锁解除方案的代价,找到代价最小的方案。该方法最难实现,资源利用率较高。

 

P1260

答:(1)摈弃请求和保持条件。采用静态分配方案,一次性地分配给进程所请求的全部资源。进程运行过程中不可再请求新资源。

2)摈弃不剥夺条件。采用动态分配方案,进程运行中可以请求新资源。若进程请求资源不能满足时,就应使其释放已占有的资源。

3)摈弃环路等待条件。采用动态分配方案,要求进程请求资源时,按资源序号递增(或递减)顺序提出。

4)摈弃不可剥夺条件。利用Spooling系统将独享设备改造成共享设备

 

P1261

答:动态链接就是指当程序运行到需要调用某一模块时,再去链接。对于未使用的模块就可以不必链接。采用段式内存分配方法可以实现这种动态链接。

 

P1262

答:静态重定位后的程序在内存中不能移动的原因如下:

静态重定位后的程序的代码发生了变化,由原来逻辑地址的程序已经变为物理地址的程序,按物理地址的方式运行,因此不能再进行移动。

动态重定位的程序在内存中可以移动的原因如下:

动态重定位是在程序运行过程中由硬件进行地址变换,变换的结果存放在内存地址寄存器中。程序代码并没有发生变化,仍然是逻辑地址的代码,按逻辑地址的方式运行。因此,在内存中移动程序代码之后,仅需要根据代码新的起始位置,重新设定基地址寄存器的值。

 

P1263

答:不能使用覆盖的而只能使用交换的方法的时候是:当需要覆盖的内容在以前程序的执行过程中修改过,并且在以后的执行中仍然需要,这时就必须采用交换的方式。

 

P1264

答:虚拟存储器的理论容量由逻辑地址位长决定。实际容量由逻辑地址位长以及内外存容量综合决定。

 

P1265

答:程序员识别分页式虚存还是段式虚存的方法如下:

页式虚存面向程序员的逻辑地址是一维的,而段式虚存面向程序员的逻辑地址是二维的。

 

P1266

答:设某进程分得的内存页面数为m,其需访问的页面个数为p,其中有n个不相同的页面,对于任意转换算法

1)下限是n

2)上限是p

说明:因为页面序列中有n个不同的页号,这n个页面肯定是通过页面失效中断装入内存的,故失效数的下限是n;因为页面序列的长度是p,即使每个页面都失效,其次数也不会超过p,故上限是p

 

P1267

答:存储管理的主要任务时主存存储分配、地址变换、存储保护和存储扩充

 

P1268

答:实现虚拟存储器的物质基础是:一定容量的主存、足够的辅存和地址变换机构。

 

P1269

答:分页存储管理克服分区存储管理的缺点的方法如下:

  1)通过分页处理,使程序可以不需要占用连续的内存空间。

  2)通过虚拟存储,可以解决程序大小不能超过内存容量的问题。

 

P1270

答:快表的能明显改进系统的性能的原因如下:

1)存储器访问具有时间和空间的"局部性",因此快表的命中率一般可达70%-90%。

2)在系统执行过程中,每时每刻都需要访问页表,因此,访问时间的微笑缩短,其累计节约的时间就很大。

 

P1271

答:OS中存储管理的主要对象时内存的用户空间,以及作为内存用户空间的扩展和延伸的磁盘对换区(Unix)。内存的系统空间时存放OS内核的,没有在多道程序之间进行分配的问题,故不属存储管理的范围;在Unix中,磁盘对换区时用于进程映像对换的,从概念上讲时内存用户空间的扩充,对它的管理也应纳入存储管理之中。当然,不是所有的系统都有磁盘对换区,因而也不是所有系统的存储管理都有此管理对象。

 

P1272

答:覆盖技术的基本思想是,若一个大的程序是由多个相对独立的程序模块组成,且有些模块是相互排斥的,即执行甲就不会执行乙,则在这种情况下,就没有必要将该程序的所有模块装入内存,而是将那些二者(或多者)执行时取其一的模块处理成"覆盖",让它们共享内存的一个"覆盖区"。这样就可以大大节省内存空间,达到用小内存运行大程序的目的。

 

P1273

答:分页与分段存储管理的主要区别如表所列

    分页                            分段

 一维连续逻辑地址空间               二维逻辑地址空间

 页是信息的物理单位                 段是信息的逻辑单位

 页是面向系统的                     段是面向用户的

 页内的信息逻辑上是不可能完整的     段内的信息在逻辑上是完整的   

 页的大小固定,由系统划分           段长可变

 对用户透明                         用户可见

 便于存储保护                       适于动态链接和共享

 以页长为单位分配空间不需要紧凑技术 以段长为单位分配空间

 以页为单位进行交换                 以段为单位进行交换

 存在内零头                         存在外零头,需采用紧凑技术

   提出分页管理的目的是为了提高内存空间的利用率;提出分段管理的目的除了可以提高内存空间的利用率(相对分区管理而言)外,主要是为了更好的实现程序的共享和动态链接,方便用户编程。

 

P1274

答:根本区别就在于,虚拟管理允许部分装入和部分对换,而实存管理不允许这样做。所谓"部分装入",指的是一道应用程序不是全部装入内存以后才开始执行而是只装入其中一部分,甚至一点都不装入就开始运行,然后在运行的构成中根据需要逐步的装入其余部分;"部分对换",指的是当内存已满而又有新的将"部分"需要装入时,要把已在内存的某一"部分"换出去,以腾出空间存放新来者。部分装入和部分对换的结果是可以用较小的内存运行较大的程序。实存管理则不同,它所要求的是整体装入。

 

P1275

答:(1)虚存的应用背景是用小内存运行大程序。这里的"大程序"是指比整个内存用户空间还要大的程序,它可以是一道程序,也可以是多道程序之和。

2)虚存的可行基础是程序运行的局部性原理。

3)实现虚存的主要技术是部分装入、部分对换、局部覆盖、动态重定位。

4)从原理上讲,虚存空间就是CPU逻辑地址所给出的空间。例如,逻辑地址是25位,则虚存空间就是22532MB;但实际的虚拟存储器的容量还要受辅存和内存空间之和的限制,实际的虚存容量不能超过这两个物理空间之和。

 

P1276

答:内存的有效存取时间EAT(Efficent Access Time)也叫平均存取时间AAT(Average Access Time),其计算公式如下:

EAT1ns×80%+2ns×10%+(5000ns+2ns) ×10%=0.8ns+0.2ns+500.2ns=501.2ns

 

P1277

答:引入动态链接的原因如下:

  1)节约内存。在许多情况下,每次要运行的模块可能是不相同的,但由于事先无法知道本次要运行哪些模块,故只能是将所有可能要允运行到的模块,全部链接在一起,每次执行时全部装入。显然这是低效的。因为装入的某些模块在运行过程中,根本就不用。比较典型的例子时错误处理模块,入彀程序在整个运行过程中,都不出现错误,便不会用到该模块。动态链接的方式可以解决这个问题。

  2)便于软件版本的修改和更新。采用装入时动态链接方式,要修改或更新各个目标模块非常容易。但对于经静态链接装配在一起的模块,要修改或更新其中的某个目标模块则要求重新打开装入模块。这不仅是低效的,而且对于普通用户也是不可能的。

  3)便于实现目标模块共享和构建程序。若采用装入时动态链接方式,OS能够将一个目标模块链接到几个应用程序中去,即事项多个应用程序对该模块的共享。然而,采用静态链接方式时每个应用模块都必须含有该目标模块的拷贝,否则无法实现共享。

 

P1278

答:各类通道的定义如下:

  1)字节多路通道含有多个子通道。每个子通道连接一台低速设备,以轮流方式共享主通道。一子通道交换完一个字节后就将主通道让给下一个子通道。

  2)数组选择通道可连接多台告诉外设,具有较高的传输速度,它有一个分配型子通道,一段时间内只能执行一道通道程序,使一台设备独占通道以进行数据交换,直到交换完后才可让给其他的设备。

  3)数组多路通道含有多个非分配型子通道。每个子通道连接一台高速外设,以轮流方式共享主通道。一子通道交换完若干字节后就将主通道让给下一个子通道。

 

P1279

答:I/O控制方式共有四种:

  1)程序I/O方式,又称作"-"方式。该方式执行一个循环程序,反复查询外设状态,如果外设"忙碌"则循环查询直到查得外设状态为"闲置"时止。该方式适用于机内没有中断机构得场合。

  2)中断控制I/O方式。该方式在进行I/O时,CPU向设备控制器发出I/O命令后便转其他任务得处理,外设操作由设备控制器控制,CPU于外设并行工作。当外设完成I/O后向CPU发中断信号,CPU只需花费很少的时间进行I/O的善后处理,此前无须进行干预。该方式适用于低速设备I/O,并可配合DMA和通道方式实现I/O

  3DMA(直接内存访问)方式。该方式适用于高速外设I/O,一次可以在外设与内存之间传输一个或多个数据快,传输完毕后才需CPU干预。

  4)通道方式。该方式中系统预先要将I/O的过程实现为一段通道程序,置于内存的特定位置,而后启动通道。由通道负责执行通道程序对外设进行I/O控制,CPU转其他程序运行。I/O完成后通道向CPU发中断信号,CPU花很少时间作善后处理。

 

P1280

答:DMA的工作流程如下:

 1CPU需要访问外存时便发送。一条访问命令给DMA的命令寄存器CR、一个内存地址码给DMA的内存地址寄存器MAR、本次要传送的字节数给DMA的数据计数器DC、外存地址给DMAI/O控制逻辑。

 2CPU启动DMA控制器后转向其他处理。

 3DMA控制器负责控制数据在内存与外设之间传送。每传送一个字节就需挪用一个内存周期,按MAR从内存读出或写入内存一个字节,修改MAR和计算器DC

 4)当DC修改为0时,表示传送结束,由DMACPU发出中断请求。

 

P1281

答:在单缓冲情况下,系统对一块数据的处理时间需max(C,T)+M。其原因如下:

   T是读外存数据送内存缓冲区时间,,M是数据从缓冲区传送到用户区的时间,C是读内存用户区数据进行计算的时间,当进行第i次读外存数据送缓冲区时,系统可同时读出用户区中第(i1)次数据进行计算,此两项操作并行进行且互不干扰,并与数据从缓冲区传送到用户区的操作串行进行,因此处理一块数据的时间大约为max(C,T)+M

 

P1282

答:在双缓冲情况下,系统对一块数据的处理时间需max(C,T)。其原因如下:

   双缓冲方式又称缓冲对换方式。写入者花费时间T将数据写满一个缓冲区后再写另一个缓冲区;读出者花费时间M将一个缓冲区数据送到用户区后再传送另一个缓冲区数据,运算者读出用户区数据进行处理。由于将数据从缓冲区传送到用户区的操作必须与读出用户区数据进行处理的操作串行进行,且它们又可以与从外存传送数据填满缓冲区的操作进行。因此耗时大约为max(C+M,T)。考虑到M时内存中数据块的"搬家"耗时非常短暂,可以省略,因此可以近世的认为:max(C,T)

 

P1283

答:收容输入工作缓冲区和提取输出工作缓冲区的工作情况如下:

1)当需要输入数据时,调用GetBuf(emq)过程从空闲队列上摘下一个空缓冲区,作为收容输入工作缓冲区hin,输入的数据被装入hin中,装满hin后,调用GetBuf(inq,hin)过程将hin挂入输入队列inq中。

2)当需要输出数据时,调用GetBuf(outq)过程从输出队列上摘下一个装满数据的缓冲区,作为提取输出工作缓冲区sout,将sout中的数据提取输出,sout的数据提取完毕后,调用PetBuf(emq, sout)过程将sout挂入空闲队列中。

 

P1284

答:安全分配方式和不安全分配方式的说明如下:

1)安全分配是一种"摒弃请求和保持条件"的资源分配方式。在这种方式中,一个进程请求资源一旦获得(例如I/O请求时获得所需的设备),该进程就由运行状态变为阻塞状态,使它不可能再请求新资源。相反,当该进程再开始运行时(例如I/O完成后被唤醒),它已不再占有该资源。因此,这种分配摒弃了造成死锁的一个条件,分配是安全的。这种分配方式的缺点是进程推进速度慢,因为进程与I/O是串行的。

2)不安全的分配方式是指进程在提出字请求时(例如I/O请求)并不将它阻塞,而是允许它继续使用CPU,并提出第二次资源请求。这样,若第二次请求的资源已被其他今年成占用使该进程被阻塞时,则该进程具备了"请求和保持"条件,可能产生死锁,因而说,这种分配是不安全的分配。

 

P1285

答:进程的三个基本状态是就绪态、执行态、阻塞态。

 

P1286

答:

  1、处理机管理功能

     进程控制,进程同步,进程通信,调度               

  2、存储器管理功能

     内存分配、内存保护、地址映射、内存扩充       

  3、设备管理功能

     缓冲管理、设备分配、设备处理                   

  4、文件管理功能

     文件储存空间的管理、目录管理、文件的读写管理和保护 

  5、用户接口

     命令接口、程序接口、图形接口

 

P1287

答:进程和程序是紧密相关而又完全不同的两个概念:

1、每个进程实体中包含了程序段和数据段这两个部分,因此说进程是与程序是紧密相关的。但从结构上看,进程实体中除了程序段和数据段外,还必须包含一个数据结构,即进程控制块PCB

2、进程是程序的一次执行过程,因此是动态的;动态性还表现在进程由创建而产生、由调度而执行、由撤消而消亡,即它具有一定的生命周期。而程序则只是一组指令的有序集合,并和永久地存放在某种介质上,其本身不具有运动的含义,因此是静态的

3、多个进程实体可同时存放在内存中并发地执行,其实着正是引入进程的目的。而程序(在没有为它创建进程时)的并发执行具有不可再现性,因此程序不能正确地并发执行。

4、进程是一个能够独立运行、独立分配资源和独立接受调度的基本单位。而因程序不具有PCB,所以它是不可能在多道程序环境下独立运行的。

5、程与程序不一一对应。同一个程序的多次运行,将形成多个不同的进程;同一个程序的一次执行也可以产生多个进程;而一个进程也可以执行多个程序。

 

P1288

答:所谓死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,若无外力作用,这些进程将无法再向前推进。

产生的原因有两点:

1竞争资源

2进程推进顺序非法。

产生死锁的必要条件是:

1)互斥条件

2)请求与保持条件

3)不剥夺条件

4)环路等待条件。

 

P1289

答:(1)将抽象要求转化为具体要求

2)检查I/O请求的合法性

3)读出和检查设备的状态

4)传送必要的参数

5)工作方式的设置

6)启动I/O设备

 

P1290

答:文件的逻辑机构是从用户的观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织。

  文件的物理结构,又称为文件的存储结构,是指文件在外存上的存储组织形式。这不仅与存储性能有关,而且与所采用的外存分配方式有关。

 

P1291

答:1、回收区与插入点的前一个空闲分区F1相邻接,此时应将回收区与插入点的前一分区合并,不必为回收分区分配新表项,而只须修改其前一分区F1的大小。

   2、回收区与插入点的后一个空闲分区F2相邻接,此时应将两分区合并,形成新的空闲分区,但用回收区的首址作为新空闲分区的首址,大小为两者之和。

   3、回收区同时与插入点的前、后两个分区邻接,此时将三个分区合并,使用F1的表项和F1的首址,取消F2的表项,大小为三者之和。

   4、回收区既不与F1邻接,又不与F2邻接。这时应为回收区单独建立一新表项,添写回收区的首址和大小,并根据其首址插入到空闲链中的适当位置。

 

P1292

答:现代操作系统的两个最基本的特征是并发、共享

 

P1293

答:可考虑的因素有:

  1)优先权;

  2)进程已执行的时间;

  3)估计剩余的执行时间;

  4)已产生的输出量;

  5)已获得的资源量和资源类型;

  6)还需要的资源量;

  7)进程的类型;

  8)需要撤消的进程数目等。

 

P1294

答:操作系统是计算机系统的一种系统软件,它统一管理计算机系统的资源和控制程序的执行。

 

P1295

答:只有当中断装置发现有事件发生时,它才会中断当前占用中央处理器的程序执行,让操作系统的处理服务程序占用中央处理器并执行之。

 

P1296

答:用户用本操作向系统提出删除一个文件的要求,系统执行时把指定文件的名字从目录和索引表中除去,并收回它所占用的存储区域,但删除一个文件前应先关闭该文件。

 

P1297

答:为了使并发进程能正确地执行,对若干进程共享某一变量(资源)的相关临界区应满足以下三个要求:

 一次最我让一个进程在临界区中执行,当有进程在临界区中时,其他想进入临界区执行的进程必须等待;

 任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限逗留在自己的临界区中;

 不能强迫一个进程无限地等待进入它的临界区,即有进程退出临界区时应让下一个等待进入临界区的进程进入它的临界区。

 

P1298

答: 死锁的防止。系统按预定的策略为进程分配资源,这些分配策略能使死锁的四个必要条件之一不成立,从而使系统不产生死锁。

 死锁的避免。系统动态地测试资源分配情况,仅当能确保系统安全时才给进程分配资源。

 死锁的检测。对资源的申请和分配不加限制,只要有剩余的资源就呆把资源分配给申请者,操作系统要定时判断系统是否出现了死锁,当有死锁发生时设法解除死锁。

 

P1299

答:批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统。

 

P1300

答:中断机制包括硬件的中断装置和操作系统的中断处理服务程序。

中断装置由一些特定的寄存器和控制线路组成,中央处理器和外围设备等识别到的事件保存在特定的寄存器中,中央处理器每执行完一条指令,均由中断装置判别是否有事件发生。

若无事件发生,CPU继续执行;若有事件发生,则中断装置中断原占有CPU的程序的执行,让操作系统的处理事件服务程序占用CPU,对出现的事件进行处理,事件处理完后,再让原来的程序继续占用CPU执行。

 

P1301

答:由于各种调度算法都有自己的特性,因此,很难评价哪种算法是最好的。一般说来,选择算法时可以考虑如下一些原则:

 处理器利用率;

 吞吐量;

 等待时间;

 响应时间。

在选择调度算法前,应考虑好采用的准则,当确定准则后,通过对各种算法的评估,从中选择出最合适的算法。

 

P1302

答:独占设备通常采用静态分配方式。

即在一个作业执行前,将作业要使用的这类设备分配给作业,在作业执行期间均归该作业占用,直到作业执行结束才归还。

 

P1303

答: 系统资源不足;

 进程推进顺序不合适。

在早期的系统中,由于系统规模较小,结构简单,以及资源分配大多采用静态分配法,使得操作系统死锁问题的严重性未能充分暴露出来。但今天由于多道程序系统,以至于数据系统的出现,系统中的共享性和并行性的增加,软件系统变得日益庞大和复杂等原因,使得系统出现死锁现象的可能性大大增加。

 

P1304

答:用户准备好要执行的程序、数据和控制作业执行的说明书,由操作员输入到计算机系统中等待处理。操作系统选择作业并按作业说明书的要求自动控制作业的执行。采用这种批量化处理作业的操作系统称为批处理操作系统。

 

P1305

答:只允许操作系统使用特权指令,用户程序不能使用特权指令。

 

P1306

答:影响缺页中断率的因素有四个:

 分配给作业的主存块数多则缺页率低,反之缺页中断率就高。

 页面大,缺页中断率低;页面小缺页中断率高。

 程序编制方法。以数组运算为例,如果每一行元素存放在一页中,则按行处理各元素缺页中断率低;反之,按列处理各元素,则缺页中断率高。

 页面调度算法对缺页中断率影响很大,但不可能找到一种最佳算法。

 

P1307

答:磁盘移臂调度的目的是尽可能地减少输入输出操作中的寻找时间。

常用的移臂调度算法有:

 先来先服务算法

 最短寻找时间优先算法

 电梯调度算法

 单向扫描算法。

 

P1308

答: 先来先服务算法

 计算时间短的作业优先算法

 响应比最高者优先算法

 优先数调度算法

 均衡调度算法

 

P1309

答:计算机系统的资源包括两大类:硬件资源和软件资源。

硬件资源主要有中央处理器、主存储器、辅助存储器和各种输入输出设备。

软件资源有编译程序、编辑程序等各种程序以及有关数据。

 

P1310

答:页表指出逻辑地址中的页号与所占主存块号的对应关系。

作用:页式存储管理在用动态重定位方式装入作业时,要利用页表做地址转换工作。

快表就是存放在高速缓冲存储器的部分页表。它起页表相同的作用。

由于采用页表做地址转换,读写内存数据时CPU要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。

 

P1311

答:当中央处理器处于管态时,可以执行包括特权指令在内的一切面器指令,而在目态下工作时不允许执行特权指令。

 

P1312

答:一个作业进入系统到运行结束,一般要经历进入、后备、运行和完成四个阶段,相应地,作业亦有进入、后备、运行和完成四种状态。

 进入状态:作业的信息从输入设备上预输入到输入井,此时称为作业处于进入状态。

 后备状态:当作业的全部信息都已输入,且由操作系统将其存放在输入井中,此时称作业处于后备状态。系统将所有处于后备状态的作业组成后备作业队列,等待作业调度程序的调度。

 运行状态:一个后备作业被作业调度程序选中,分配了必要的资源,调入内存运行,称作业处于运行状态。

 完成状态:当作业正常运行完毕或因发生错误非正常终止时,作业进入这完成状态。

 

P1313

答: 多道作业并行工作,减少了处理器的空闲时间。

 作业调度可以合理选择装入主存储器中的作业,充分利用计算机系统的资源。

 作业执行过程中不再访问低速设备,而直接访问高速的磁盘设备,缩短执行时间。

 作业成批输入,减少了从操作到作业的交接时间。

 

P1314

答:操作系统为用户提供两种类型的使用接口:

一是操作员级的,它为用户提供控制作业执行的途径;

二是程序员级的,它为用户程序提供服务功能。

 

P1315

答:线程是进程中可独立执行的子任务,一个进程可以有一个或多个线程,每个线程都有一个惟一的标识符。线程与进程有许多相似之处,往往把线程又称为"轻型进程",线程与进程的根本区别是把进程作为资源分配单位,而线程是调度和执行单位。

多线程技术具有多个方面的优越性:

 创建速度快、系统开销小:创建线程不需要另行分配资源;

 通信简洁、信息传送速度快:线程间的通信在统一地址空间进程,不需要额外的通信机制;

 并行性高:线程能独立执行,能充分利用和发挥处理器与外围设备并行工作的能力。

 

P1316

答:UNIX中每个进程都有一个优先数,就绪进程能否占用处理器的优先权取决于进程的优先数,优先数越小则优先权越高。

UNIX以动态方式确定优先权,如核心的进程优先权高于进入用户态的进程;降低用完一个时间片的进程的优先权;对进入睡眠的进程,其等待事件越急优先数越高;降低使用处理器时间较长的进程的优先权。

UNIX中确定进程优先数的方法有两种:设置方法和计算方法。前者对要进入睡眠状态的进程设置优先数,若等待的事件急迫,则设置较小的优先数;后者用户进程正在或即将转入用户状态运行时确定优先数。

 

P1317

答:保存主存空间中的信息一般采用以下措施:

 程序执行时访问属于自己主存区域的信息,允许它既可读,又可写;

 对共享区域中的信息只可读,不可修改;

 对非共享区域或非自己的主存区域中的信息既不可读,也不可写。

 

P1318

答:"同时使用"的含义是多个作业可以交替地启动共享设备,在某一时刻仍只有一个作业占有。

 

P1319

答:用户要使用一个已经存放在存储介质上的文件前,必须先提出"打开文件"要求。这时用户也必须向系统提供参数:用户名、文件名、存取方式、存储设备类型、口令等。系统在接到用户的"打开文件"要求后,找出该用户的文件目录,当文件目录不在主存储器中时还必须把它读到主存储器中;然后检索文件目录,指出与用户要求相符合的目录项,取出文件存放的物理地址。

对索引文件还必须把该文件的索引表存放在主存储器中,以便后继的读写操作能快速进行。

 

P1320

答:批处理操作系统实现自动控制无需人为干预,分时操作系统实现了人机交互对话,这两种操作系统具有各自的优点。为了充分发挥批处理系统和分时系统的优点,在一个计算机系统上配置的操作系统往往既具有批处理能力,又有提供分时交互的能力。这样,用户可以先在分时系统的控制下,以交互式输入、调试和修改自己的程序;然后,可以把调试好的程序转交给批处理系统自动控制其执行而产生结果。这些由分时系统控制的作业称为"前台"作业,而那些由批处理系统控制的作业称为"后台"作业。

在这样的系统中,对前台作业应该及时响应,使用户满意;对后台作业可以按一定的原则进行组合,以提高系统的效率。

 

P1321

答:存储型设备输入输出操作的信息传输单位是"",而输入输出型设备输入输出操作的信息传输单位是"字符"

 

P1322

答:S0时,S表示可使用的资源数;或表示可使用资源的进程数;

S0时,表示无资源可供使用;或表示不允许进程再进入临界区;

S0时,-S表示等待使用资源的进程个数;或表示等待进入临界区的进程个数;

S0时,调用PS)的进程不会等待;调用VS)后使可用资源数加1或使可用资源的进程数加1

S0时,调用PS)的进程必须等待;调用VS)后将释放一个等待使用资源者或释放一个等待进入临界区者。

 

P1323

答:死锁的防止是系统预先确定一些资源分配策略,进程按规定申请资源,系统按预先规定的策略进行分配从而防止死锁的发生。

而死锁的避免是当进程提出资源申请时系统测试资源分配仅当能确保系统安全时才把资源分配给进程,使系统一直处于安全状态之中,从而避免死锁。

 

P1324

答: 优先接纳终端作业,仅当终端作业数小于系统可以允许同时工作的作业数时,可以调度批处理作业;

 允许终端作业的批处理作业混合同时执行;

 把终端作业的就绪进程排成一个就绪队列,把批处理作业的就绪进程排入另外的就绪队列中;

 有终端作业进程就绪时,优先让其按"时间片轮转"法先运行。没有终端作业时再按确定算法选批处理作业就绪进程运行。

 

P1325

答:硬件条件是:配置大容量的磁盘,要有中断装置和通道。

操作系统应设计好"预输入"程序,"井管理"程序,"缓输出"程序。

 

P1326

答:中断装置的职能主要有三点:

 检查是否有中断事件发生;

 若有中断发生,保护好被中断进程的断点及现场信息,以便进程在适当时候能恢复执行;

 启动操作系统的中断处理程序。

 

P1327

答:资源静态分配策略要求每个过程在开始执行前申请所需的全部资源,仅在系统为之分配了所需的全部资源后,该进程才开始执行。

这样,进程在执行过程中不再申请资源,从而破坏了死锁的四个必要条件之一"占有并等待条件",从而防止死锁的发生。

 

P1328

答: 作业调度是宏观调度,它决定了哪一个作业能进入主存。进程调度是微观调度,它决定各作业中的哪一个进程占有中央处理器。

 作业调度是选符合条件的收容态作业装入主存。进程调度是从就绪态进程中选一个占用处理器。

 

P1329

答:从文件目录中找到该文件,按址读出第一个记录;

取出第一个记录块中指针,存放到新记录的指针位置;

把新记录占用的物理块号填入第一个记录的指针位置;

启动磁盘把第一个记录和新记录写到指字的磁盘块上。

 

P1330

答:可抢占式会引起系统的开销更大。

可抢占式调度是严格保证任何时刻,让具有最高优先数(权)的进程占有处理机运行,因此增加了处理机调度的时机,引起为退出处理机的进程保留现场,为占有处理机的进程恢复现场等时间(和空间)开销增大。

 

P1331

答:用户程序中通常用"设备类、相对号"请求要使用的设备,即不具体指定要哪一台设备,而是提出要申请哪类设备多少台。

这种方式使设备分配适应性好、灵活性强。

否则若用绝对号来指定设备,如果这台设备已被占用或有故障时,该作业就无法装入主存中。

 

P1332

答:发生死锁的必要条件有四点:互斥条件、不可抢占条件、部分分配条件和循环等待条件。

 互斥条件:系统中存在一个资源一次只能被一个进程所使用;

 非抢占条件:系统中存在一个资源仅能被占有它的进程所释放,而不能被别的进程强行抢占。

 占有并等待条件:系统中存在一个进程已占有了分给它的资源,但仍然等待其他资源。

 循环等待条件:在系统中存在一个由若干进程形成的环形请求链,其中的每一个进程均占有若干种资源中的某一种,同时每个进程还要求(链上)下一个进程所占有的资源。

 

P1333

答:CPU每执行完一条指令就去扫描中断寄存器,检查是否有中断发生,若没有中断就继续执行下条指令;若有中断发生就转去执行相应的中断处理程序。中断处理过程可粗略的分为以下四个过程:

 保护当前正在运行程序的现场;

 分析是何种中断,以便转去执行相应的中断处理程序;

 执行相应的中断处理程序;

 恢复被中断程序的现场。

 

P1334

答:一般硬件设置了基址寄存器和限长寄存器。

中央处理器在目态下执行系统中,对每个访问主存的地址都进行核对,若能满足:基址寄存器值访问地址基址寄存器值+限长寄存值,则允许访问,否则不允许访问。并且不允许用户程序随意修改这两个寄存器的值。这就实现了存储保护。

 

P1335

答:文件是具有符号名的、在逻辑上具有完整意义的一组相关信息项的有序序列。

文件系统就是操作系统中实现文件统一管理的一组软件、被管理的的文件以及为实施文件管理所需的一些数据结构的总称。

 

P1336

此题答案为:根据不同角度,可以将文件划分为不同类别:

1、按性质和用途可分为:

系统文件;库文件;用户文件;

2、按信息的保存期限可分为:

临时文件;永久性文件;档案文件;

3、按文件的保护方式可分为:

只读文件;读写文件;可执行文件;无保护文件;

4、按文件的逻辑结构可分为:

流式文件;记录式文件;

5、按文件的物理结构可分为:

顺序文件;链接文件;索引文件;Hash文件;索引顺序文件

6、按文件的存取方式可分为:

顺序存取文件;随机存取文件;

7、按文件内容可分为:

普通文件;目录文件;特殊文件

 

P1337

答:文件系统的功能:

1、统一管理文件存储空间(即外存),实施存储空间的分配与回收;

2、确定文件信息的存放位置及存放形式;

3、实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取;

4、有效实现对文件的各种控制操作(如建立、撤消、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等);

5、实现文件信息的共享,并且提供可*的文件保密和保护措施。

文件系统的优点:

1、按名存取文件,以对用户透明的方式实现对名字空间的管理和信息浮动,使用方便灵活;

2、采取保护、保密措施,安全可靠;

3、实现文件共享,节省空间和时间开销。

 

P1338

答:常见的文件物理结构有以下几种:

1、顺序结构

又称连续结构。这是一种最简单的物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。只要知道文件在存储设备上的起始地址(首块号)和文件长度(总块数),就能很快地进行存取。

这种结构的优点是访问速度快,缺点是文件长度增加困难。

2、链接结构

这种结构将逻辑上连续的文件分散存放在若干不连续的物理块中,每个物理块设有一个指针,指向其后续的物理块。只要指明文件第一个块号,就可以按链指针检索整个文件。

这种结构的优点是文件长度容易动态变化,其缺点是不适合随机访问。

3、索引结构

采用这种结构,逻辑上连续的文件存放在若干不连续的物理块中,系统为每个文件建立一张索引表,索引表记录了文件信息所在的逻辑块号和与之对应的物理块号。索引表也以文件的形式存放在磁盘上。给出索引表的地址,就可以查找与文件逻辑块号对应的物理块号。如果索引表过大,可以采用多级索引结构。

这种结构的优点是访问速度快,文件长度可以动态变化。缺点是存储开销大,因为每个文件有一个索引表,而索引表亦由物理块存储,故需要额外的外存空间。另外,当文件被打开时,索引表需要读入内存,否则访问速度会降低一半,故又需要占用额外的内存空间。

4Hash结构

又称杂凑结构或散列结构。这种结构只适用于定长记录文件和按记录随机查找的访问方式。

Hash结构的思想是通过计算来确定一个记录在存储设备上的存储位置,依次先后存入的两个记录在物理设备上不一定相邻。按Hash结构组织文件的两个关键问题是:

定义一个杂凑函数;解决冲突;

5、索引顺序结构

索引表每一项在磁盘上按顺序连续存放在物理块中。

 

P1339

答:文件控制块的有序集合构成文件目录,每个目录项即是一个文件控制块。

为了实现文件目录的管理,通常将文件目录以文件的形式保存在外存空间,这个文件就被称为目录文件。目录文件是长度固定的记录式文件。

系统为用户提供一个目前正在使用的工作目录,称为当前目录。

 

P1340

答:文件目录结构一般有一级目录结构、二级目录结构和多级目录结构。

一级目录结构的优点是简单,缺点是文件不能重名,限制了用户对文件的命名。

二级目录结构实现了文件从名字空间到外存地址空间的映射:用户名->文件名à文件内容。其优点是有利于文件的管理、共享和保护;适用于多用户系统;不同的用户可以命名相同文件名的文件,不会产生混淆,解决了命名冲突问题。缺点是不能对文件分类;当用文件较多时查找速度慢。

多级目录结构的优点是便于文件分类,可为每类文件建立一个子目录;查找速度快,因为每个目录下的文件数目较少;可以实现文件共享;缺点是比较复杂。

 

P1341

此题答案为:可以利用目录项分解法解决这一问题,即把目录项(文件控制块)分为两部分:

名号目录项,包含文件名以及相应的文件内部号;

基本目录项,包含了除文件名外文件控制块的其他全部信息。目录文件也分为名号目录文件和基本目录文件。查找一个目录项就分成两步:首先访问名号目录文件,根据文件名查找相应的文件内部号;然后访问基本目录文件,根据文件内部号,可直接计算出相应基本目录项所在基本目录文件中的相对位置和物理位置,并将它直接读入内存。

目录项分解法的优点是提高了文件目录检索的速度。

 

P1342

答:为实现设备、控制器、通道资源的分配与回收,系统需要记录有关的信息。通常设备管理要建立以下数据结构,以实施有效的管理。

1、设备控制块

2、控制器控制块

3、通道控制块

4、系统设备表

 

P1343

答:进程申请设备时,应当指定所需设备的类别,而不是指定某一台具体的设备,系统根据当前请求以及设备分配情况在相应类别的设备中选择一个空闲设备并将其分配给申请进程,这称作设备的独立性。

磁盘调度一般可采用以下几种算法:

1、先来先服务磁盘调度算法(FCFS

2、最短寻道时间优先磁盘调度算法(SSTF

3、扫描算法(SCAN

设计磁盘调试算法应考虑两个基本因素:

1、公平性2、高效性

 

P1344

答:设备分配的任务是按照一定的策略为申请设备的进程分配合适的设备、控制器和通道。

设备的独立性:不能因物理设备的更换而影响用户程序的正常运行;

系统的安全性:设备分配不能导致死锁现象发生。

 

P1345

答:一般设备的连续采用交*连接,其好处是:

1、提高系统的可*性:当某条通路因控制器或通道故障而断开时,可使用其他通路。

2、提高设备的并行性:对于同一个设备,当与它相连的某一条通路中的控制器或通道被占用时,可以选择另一条空闲通路,减少了设备因等待通路所需要花费的时间。

 

P1346

答:通道是一个用来控制外部设备工作的硬件机构,相当于一个功能简单的处理机。

在一般大型计算机系统中,主机对外部设备的控制可以分成三个层次来实现,即通道、控制器和设备。

一旦CPU发出启动通道的指令,通道就可以独立于CPU工作。通道控制控制器工作,控制器用来控制设备的电路部分。这样,一个通道可以连接多个控制器,而一个控制器又可以连接若干台同类型的外部设备。最终,设备在控制器控制下执行操作。

 

P1347

答:主要有以下四种:1、循环测试I/O方式;2、中断处理方式;3、直接内存存取(DMA)方式;4、通道方式

 

P1348

答:设备管理的目标:

1、向用户提供外部设备的方便、统一的接口,按照用户的要求和设备的类型,控制设备工作,完成用户的输入输入请求。

2、充分利用中断技术、通道技术和缓冲技术,提高CPU与设备、设备与设备之间的并行工作能力,以充分利用设备资源,提高外部设备的使用效率。

3、设备管理就是要保证在多道程序环境下,当多个进程竞争使用设备时,按照一定的策略分配和管理设备,以使系统能有条不紊地工作。

设备管理的功能:

1、设备分配和回收;

2、管理输入输入缓冲区;

3、设备驱动,实现物理I/O操作;

4、外部设备中断处理;

5、虚拟设备及其实现。

 

P1349

答:1、按设备的工作特性分类

1)存储设备;(2)输入输出设备

2、按设备上数据组织方式分类

1)块设备;(2)字符设备

3、按资源分配的角度分类

1)独占设备;(2)共享设备;(3)虚拟设备

 

P1350

答:设备管理是指计算机系统中除了CPU和内存以外的所有输入、输出设备的管理。

 

P1351

答:颠簸是由缺页率高而引起的。

系统规定缺页率的上界和下界。当运行进程缺页率高于上界时,表明所分给它的物理页面数过少,应当增加;反之,当运行进行缺页率低于下界时,表明所分给它的物理页面数过多,可以减少。这样,根据缺页率反馈可动态调整物理页面的分配,以防止颠簸的发生。

 

P1352

答:虚拟页式存储管理的基本思想是,在进程开始执行之前,不是装全部页面,而是只装一个(甚至0个)页面,然后根据进程执行的需要,动态地装入其它页面。

1、页表  2、缺页中断处理3、页面淘汰。

 

P1353

答:程序局部性原理:虚拟存储管理的效率与程序局部性程序有很大关系。根据统计,进程运行时,在一段时间内,其程序的执行往往呈现出高度的局限性,包括时间局部性和空间局部性。

1、时间局部性:是指若一条指令被执行,则在不久,它可能再被执行。

2、空间局部性:是指一旦一个存储单元被访问,那它附近的单元也将很快被访问。

 

P1354

答:段页式存储管理的基本思想是:

1、用页式方法来分配和管理内存空间,即把内存划分成若干大小相等的页面;

2、用段式方法对用户程序按照其内在的逻辑关系划分成若干段;

3、再按照划分内存页面的大小,把每一段划分成若干大小相等的页面;

4、用户程序的逻辑地址由三部分组成,形式如下:

段号页号页内地址

5、内存是以页为基本单位分配给每个用户程序的,在逻辑上相邻的页面内存不一定相邻。

 

P1355

答:快表技术是在地址映射机构中增加一个小容量的联想寄存器(相联存储器),它由高速寄存器组成,成为一张快表,快表用来存放当前访问最频繁的少数活动页的页号。

在快表中,除了逻辑页号、物理页号对应外,还增加了几位。特征位表示该行是否为空,用0表示空,用1表示有内容;访问位表示该页是否被访问过,用0表示未访问,1表示已访问,这是为了淘汰那些用得很少甚至不用的页面而设置的。

快表只存放当前进程最活跃的少数几页,随着进程的推进,快表内容动态更新。当用户程序需要存取数据时,根据该数据所在逻辑页号在快表中找出对应的物理页号,然后拼接页内地址,以形成物理地址;如果在快表中没有相应的逻辑页号,则地址映射仍然通过内存中的页表进行,得到物理页号后须将该物理页号填到快表的空闲单元中。有无空闲单元,则根据淘汰算法淘汰某一行,再填入新得到的页号。实际上查找快表和查找内存页表是并行进行的,一旦发现快表中有与所查页号一致的逻辑页号就停止查找内存页表。

 

P1356

答: 内存划分。

 逻辑地址空间划分。

 页面大小。

 内存分配。

 

P1357

答:固定分区:系统将内存划分为若干固定的分区,当作业申请内存时,系统为其选择一个适当的分区,并装入内存运行。由于分区大小是事先固定的,因而可容纳作业的大小受到限制,而且当用户作业的地址空间小于分区的存储空间时,浪费了一些存储空间。

可变分区:是指在作业装入内存时建立分区,使分区的大小正好与作业要求的存储空间相等。引入可变分区方法,使内存分配有较大的灵活性,也提高了内存利用率。但是可变分区会引起碎片的产生。

 

P1358

答:所谓碎片是指内存中出现的一些零散的小空闲区域。

解决碎片的方法是移动所有占用区域,使所有的空闲区合并成一片连续区域。这一过程称为紧凑,这一技术就是紧凑技术。

 

P1359

答:对内存空间的划分是可以静态的,也可以动态的;可以是等长的,也可以不等长。

静态划分是指系统运行之前就将内存空间划分成若干区域,通常,分配给进程的内存可能比进程实际所需的区域长。

动态划分是在系统运行过程中才划分内存空间。这样,系统可按进程所需要的存储空间大小为其分配恰好满足要求的一个或多个区域。

等长分区是将存储空间划分为若干个长度相同的区域。

不等长分区则是将存储空间划分若干个长度不同的区域。

 

P1360

答:物理地址是内存中各存储单元的编号,即存储单元的真实地址,它是可识别、可寻址并实际存在的。

用户程序经过编译或汇编形成的目标代码,通常采用相对地址形式,其首地址为零,其余指令中的地址都是相对首地址而定。这个相对地址就称为逻辑地址或虚拟地址。逻辑地址不是内存中的物理地址,不能根据逻辑地址到内存中存取信息。

为了保证CPU执行程序指令时能正确访问存储单元,需要将用户程序中的逻辑地址转运行时可由机器直接寻址的物理地址,这一过程称为地址映射或地址重定位。

地址映射可分为两类:

1、静态地址映射2、动态地址映射

 

P1361

答:虚存储器有两层含义,一是指用户程序的逻辑地址构成的地址空间;二是指当内存容量不满足用户要求时,采用一种将内存空间与外存空间有机地结合在一起,利用内外存自动调度的方法构成一个大的存储器,从而给用户程序提供更大的访问空间。

此题答案为:答:在多道程序系统中,内存中既有操作系统,又有许多用户程序。为使系统正常运行,避免内存中各程序相互干扰,必须对内存中的程序和数据进行保护。

1、防止地址越界

对进程所产生的地址必须加以检查,发生越界时产生中断,由操作系统进行相应处理。

2、防止操作越权

对属于自己区域的信息,可读可写;

对公共区域中允许共享的信息或获得授权可使用的信息,可读而不可修改;

对未获授权使用的信息,不可读、不可写。

存储保护一般以硬件保护机制为主,软件为辅,因为完全用软件实现系统开销太大,速度成倍降低。当发生越界或非法操作时,硬件产生中断,进入操作系统处理

 

P1362

答:作业调度算法:1、先来先服务算法;2、短作业优先算法;3、最高响应比作业优先算法;4、资源搭配算法;5、多队列循环算法

对算法的选择要考虑三个目标:

1、尽量提高系统的作业吞吐量,即每天处理尽可能多的作业;

2、尽量使CPU和外部设备保持忙碌状态,以提高资源利用率;

3、对各种作业公平合理,使用有用户都满意。

 

P1363

答:作业调度的主要任务是:按照某种调试算法,从后备作业中挑选一批合理搭配的作业进入运行状态;同时,为选中的作业分配内存和外部设备资源,为其建立相关的进程;当作业执行结束进入完成状态时,做好释放资源等善后工作。

作业调度的目标:1、响应时间快;2、周转时间或加权周转时间短;3、均衡的资源利用率;4、吞吐量大;5、系统反应时间短。

评价作业调度算法优劣的性能指标:1、作业平均周转时间;2、作业平均带权周转时间

主要作业调度算法有:1、先来先服务法;2、短作业优先算法;3、最高响应比优先算法;4、资源搭配算法;5、多队列循环算法。

作业调试时机:一般当输入井中有一道作业建立,或内存中的一道作业运行结束时,系统启动作业调试工作。

 

P1364

答:

PS)的操作如下:

   Begin

        S.Value:= S.Value-1;        

        If S.Value<0 Then           

            Begin

            Insert(*,S.L);

            Block(*)                

            End

   End.

PS)可中断的,例如进程A在执行了语句之后从CPU上退下了,假定此时S.Value0;这时换另一进程BB又将S.Value的值减1使之为-1,在执行语句时,B被阻塞;然后又换回A执行,由于A"断点"是语句之后,当它执行语句时,由于这时S.Value已经是-1,故进程A无法继续执行而被阻塞。这就出现了错误:本来A操作PS)操作后,S.Value0,是不应该被阻塞的,现在却被阻塞了。

 

P1365

答:一次仅允许一个进程使用的资源称为临界资源,在进程中对临界资源访问的程序段称为临界区。

从概念上讲,系统中各进程在逻辑上是独立的,它们可以按各自的速度向前推进。但由于它们共享某些临界资源,因而产生了临界区问题。对于具有临界区问题的并发进程,它们之间必须互斥,以保证不会同时进入临界区。

这种算法不是安全的。因为,在进入临界区的enter-crtsec()不是一个原语操作,如果两个进程同时执行完其循环(此前两个flag均为false),则这两个进程可同时进入临界区。

 

P1366

售票厅问题解答如下:

1)定义一信号量S,初始值为20

    S>0  S的值表示可继续进入售票厅的人数;

    S=0  表示售票厅中已有20名购票者;

    S<0  |S|的值为等待进入售票厅中的人数。

2)上框为P(S),下框为V(S)

3S的最大值为20S的最小值为20NN为某一时刻需要进入售票厅的最多人数。

 

P1367

答:(1)批处理系统中的作业调度算法有:先来先服务算法(FCFS)、短作业优先算法(SJF)、优先级调度算法(HPF)和高响应比优先算法(RF)。批处理系统的进程调度算法有:先进先出算法(FIFO)、短进程优先算法(SPF)、优先级调度算法(HPF)和高响应比优先算法(RF)。

2)分时系统中只设有进程调度(不设作业调度),其进程调度算法只有轮转法(RR)一种。

3)实时系统中只设有进程(不设作业调度),其进程调度算法调度有:轮转法、优先级调度算法。前者适用于时间要求不严格的实时系统;后者用于时间要求严格的实时系统。后者又可细分为:非抢占式优先级调度、抢占式优先级调度、基于时钟中断的抢占式优先级调度。

注意,一个纯粹的实时系统是针对特定应用领域设计的专用系统。作业提交的数量不会超过系统规定的多道程序的道数,因而可全部进入内存。若将实时系统与批处理系统结合的话,就可以让作业量超过多道程序道数,使优先级低的作业呆在外存的后备队列上。

 

P1368

此题答案为:        2 进程的完成时间和周转时间

         进程         A      B        C       D       E        平均

           FCFS          完成时间       3      9       13      18       20  

        周转时间       3      7        9      12       12       8.6

      带权周转时间       1.00   1.17    2.25    2.40    6.00      2.56

             SPF(非抢占)   完成时间       3      9       15      20       11  

        周转时间       3      7       11      14       3        7.6

        带权周转时间      1.00   1.17    2.75    2.80    1.50       1.84

               SPF(抢占)     完成时间       3      15      8       20      10   

         周转时间       3      13      4       14       2        7.2

       带权周转时间      1.00    2.16   1.00    2.80    1.00       1.59

 

P1369

答:一个逻辑空间有64个页,每页1KB字节。若把它映射到由32个物理块组成的存储嚣。642^6,则:

1)逻辑地址有16位。

2)物理地址有15位。

说明:解此题的关键是要知道在分页管理中,""""是一样大小的,这样才知道物理存储器是32KB

 

P1370

答:在某分页虚存系统中,在题中的CPU和磁盘的利用率的情况下,出现的问题和应采取的措施如下:

1)可能已出现了抖动现象,应减少系统的进程数。

2)系统比较正常,可考虑适当增加进程数以提高资源利用率。

3CPU和磁盘的利用率都较低,必须增加并发进程数。

 

P1371

答:首先采用FIFO,当m=3时,缺页次数=9,当m=4时,缺页次数=10

采用LRU算法,当m=3时,缺页次数=10;当m=4时,缺页次数=8

结果说明:FIFOBelady奇异现象,即不满足驻留集增大,缺页次数一定减小的规律;另外在m=3时,LRU的缺页次数比FIFO要多,所以LRU算法并不总优于FIFO,还要看当前访问串的特点。

 

P1372

答:一个分页存储器的页表存放在内存

  1)因为页表放在内存,故取一条指令(或一个操作数)须访问两次内存,所以需0.6ms×2=1.2ms的时间。

  2)这里假设访问快表的时间忽略不计,命中快表时,取数只要一次访问,故此时的平均存取周期为0.6ms×0.75+1.2ms×(1-0.75)=0.75ms

 

P1373

M=3时,缺页次数为10次,缺页率为10/12=0.83=83%

M=4时,缺页次数为8次,缺页率为8/12=0.66=66%

可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。

 

P1374

答:设可接受的最大缺页率位p,则有

1ns×0.7+2ns×(1-0.7-p)+0.4p×8000ns+0.6p×20000ns=2ns

       0.7+0.6-2p+3200p+12000p=2

          15198p=0.7

          P=0.000046

 

P1375

答:

1FIFO

         2页面:208×3

         4页面:208×3

         5页面:208×3

         2页面:81

         7页面:208×3

         6页面:208×3

         4页面:208×3

         8页面:208×3

   因此总的时间是(208×3×7+(81ns

(2) OPT

         2页面:208×3

         4页面:208×3

         5页面:208×3

         2页面:81

         7页面:208×3

         6页面:208×3

         4页面:81

         8页面:81

   因此总的时间是(208×3×5+(81×3ns

 

P1376

此题答案为:

   M=3时,缺页次数为6次,缺页率为6/12=0.5=50%

   M=4时,缺页次数为4次,缺页率为4/12=0.33=33%

   可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。

 

P1377

此题答案为: 

   M=3时,缺页次数为7次,缺页率为7/12=0.583=58.3%

   M=4时,缺页次数为8次,缺页率为6/12=0.5=50%

   可见,增加分配给作业的内存块数可以减少缺页次数,从而降低缺页率。

 

P1378

解:

  设有n个作业j1,j2,j3,...,jn,其运行时间分别为t1,t2,t3,...,tn。不妨假设t1<=t2<=t3<=...<=tn,则短作业优先的作业调度算法的平均周转时间为:

  T=(t1+(t1+t2)+(t1+t2+t3)+....(t1+t2+t3+...+tn))/n

   =(n*t1+(n-1)*t2+...+tn)/n

  考虑其他不同调度算法,设在此调度算法下的作业调度次序为ji1,ji2,...jin,其中(i1,i2,...,in)是(1,2,3,...,n)的一个排列,则类似上面可以得出:

  T1=((n*ti1+(n-1)*ti2+...+tin)/n)

  根据不等式结论:如果有a1<=a2<=...<=an b1<=b2<=...<=bn,则

  a1bn+a2bn-1+...+anb1<=a1bi1+a2bi2+...+anbn<=a1b1+a2b2+...+anbn

  其中(i1,i2,...,in)是(1,2,3,...,n)的一个排列,不难得出T<=T1

 

P1379

解:  

   进程       T0       T1          T2         T3

    P1       P1←0    P1←2       P1←2      P1←3

    P2       P2←0    P2←3       P2←4      P2*←4

    P3       P3←0    P3←3       P3*←3     P3*←3

 

P1380

答:AB两进程之间存在互斥的制约关系。因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用

  (2)为保证这两个进程能正确地打印出各自的结果,请用信号量和PV操作写出各自的有关申请、使用打印机的代码。要求给出信号量的含义和初值。

此题答案为:答:mutex:用于互斥的信号量,因为只有一台打印机,所以初值为1

            进程A                               进程B

                                                 ...                                   ...

                                       P(mutex)                             P(mutex)

        申请打印机;           申请打印机;

        使用打印机;          使用打印机;

                                 V(mutex)                              V(mutex)

 

P1381

答: 这两个进程的相互制约关系为同步关系;

答: 设两个信号量S1S2。其中S1表示Q是否为空,初值为1,表示Q是空的;S2表示Q中是否有信息,初值为0,表示Q中无信息。

两进程的代码段如下:

       input进程                                 output进程

        ……                                     ……

       While 信息未处理完毕                     While 信息未处理完毕

      {  加工一个信息;                         { PS2);

       PS1);        Q中读出一个信息;

 将信息放入Q中;                         VS1);}

       VS2);}                                 ……

 

P1382

43.4217

 37.2186

 

P1383

(1)答:104B(H)

 (2)答:13192

 (3)答: 24A0H)的页号为9,而其页面当前不在内存,所以会发一个缺页中断,请求系统调页。

 

P1384

答:因为N初值为4,若进程A先执行了三个循环,此时N的值为19。当进程A和进程B并发执行时可能会有如下两种执行次序,即进程A先执行一次循环,然后再进程B执行一次循环,此时打印的是正确值24,执行后N中的值为0。但若进程B先执行一次循环,然后再进程A执行一次循环,则打印的值是19,执行后N中的值是5。这是错误的,即发生了与时间有关的错误。用PV操作进行管理,使进程AB并发时不会出现与时间有关的错误的程序如下:(S为互斥信号量,初值为1),

   进程A

     Repeat

       P(S);

       N=N+5;

       V(S);

     Until false;

   进程B

      Repeat

        P(S);

        打印N的值;

        N=0

        V(S);

      Until false;

 

P1385

(1)答:物理地址为:300+100=400

(2)答:物理地址为:2000+100=2100

段号   基地址   长度  合法(0/非法(1

     0      300     200              0     

     1      7500    540  

     2      3000    1010 

     3     2000    100              1

 

P1386

【答案】C

【解析】系统软件包括操作系统、数据库管理系统、语言处理程序、服务性程序、标准库程序等。

 

P1387

【答案】D

【解析】源程序是一种计算机代码,是用程序设计语言编写的程序,经编译或解释后可形成具有一定功能的可执行文件,是直接面向程序员用户的,而不是操作系统的管理内容。

 

P1388

【答案】D

【解析】在单处理机系统(不包含多核的情况)中,同一时刻只能有一个进程占用处理机,因此进程之间不能并行执行。通道是独立于CPU的、控制输入/输出的设备,两者可以并行。显然,处理器与设备是可以并行的,如CPU和显示屏能并行工作;设备与设备是可以并行的,如显示屏与打印机能并行工作。

 

P1389

【答案】A

【解析】操作系统提供两类接口: 一类是命令接口(包括图形接口,即图形化的命令接 口),比如用户通过键盘命令和鼠标命令来操作计算机;另一类是程序接口,它提供一组系统调用,用户可以通过运行一些应用程序来访问操作系统的资源。

库函数是高级语言中提供的与系统调用对应的函数(也有些库函数与系统调用无关),目的是隐藏“访管”指令的细节,使系操作系统考研复习指导统调用更为方便、抽象。但是,库函数属于用户程序而非系统调用,是系统调用的上层。

 

P1390

【答案】D

【解析】用户平时开机时首先启动的是存于主板上ROM中的BIOS程 序 (注意:不是操 作系统),其次再由它去调用硬盘中的操作系统(如Windows系统),将操作系统的程序自动 加载到内存中的系统区,这段区域是RAM ,答案选D。

 

P1391

【答案】A

【解析】操作系统不允许用户直接操作各种硬件资源,因此用户程序只能通过系统调用的方式来请求内核为其服务,间接地使用各种资源。

 

P1392

【答案】C

【解析】引入多道程序设计后,程序的执行就失去了封闭性和顺序性。程序执行因为共享资源及相互协同的原因产生了竞争,相互制约。考虑到竞争的公平性,程序的执行是断续的。顺序性是单道程序设计的基本特征。

 

P1393

【答案】D

【解析】操作系统是用来管理资源的程序,用户程序也是在操作系统的管理下完成的。配置了操作系统的机器与裸机相比,资源利用率大大提高。操作系统不能直接用来编程,D错误。

 

P1394

【答案】A

【解析】考查操作系统的基本特征。并发性是指宏观上在一段时间内有多道程序在同时运行,但在单处理器系统中,每一时刻仅有一道程序在执行,故微观上这些程序是交替执行的。本题中提到两个或两个以上进程在执行时间上有重叠,即符合并发性的定义,故选A。

 

P1395

【答案】C

 

P1396

【答案】B

【解析】操作系统的基本类型主要有批处理系统、分时系统和实时系统。

 

P1397

【答案】B

【解析】实时系统要求能实时处理外部事件,即在规定的时间内完成对外部事件的处理。

 

P1398

【答案】A

【解析】批处理系统中,作业执行时用户无法干预其运行,只能通过事先编制作业控制说明书来间接干预,缺少交互能力,也因此才发展出分时系统,I 错误。批处理系统按发展历程又分为单道批处理系统、多道批处理系统,II正确。多道程序设计技术允许同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬/软件资源,当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序,即多道批处理系统的I/O设备可与CPU并行工作,这都是借助于中断技术实现的,III正确。

 

P1399

【答案】D

【解析】多道程序系统通过组织作业(编码或数据)使 CPU总有一个作业可执行,从而提高了 CPU的利用率、系统吞吐量和I/O设备利用率,I、III、IV 是优点。但系统要付出额外的开销来组织作业和切换作业,11错误。所以选D。

 

P1400

【答案】D

【解析】实时操作系统主要应用在需要对外界输入立即做出反应的场合,不能有拖延,否则会产生严重后果。上例中,航空订票系统需要实时处理票务,因为票额数据库的数量直接反映了航班的可订机位。机床控制也要实时,不然会出差错。股票交易行情随时在变,若不能实时交易会出现时间差,使交易出现偏差。

 

P1401

【答案】C

【解析】采用优先级+ 非抢占式调度算法,既可让重要的作业/进程通过高优先级尽快获得系统响应,又可保证次要的作用/进程在非抢占式调度下不会迟迟得不到系统响应,这样兼顾的设计有利于改善系统的响应时间。加大时间片会延迟系统响应时间;静态页式管理和代码可重入与系统响应时间无关

 

P1402

【答案】B

【解析】要求快速响应用户是导致分时系统出现的重要原因。

 

P1403

【答案】B

【解析】响应时间不超过2 s ,即在2 s内必须响应所有进程。所以时间片最大为2s/100 = 20ms。

 

P1404

【答案】C

【解析】多任务操作系统可在同一时间内运行多个应用程序,因此I 正确。多个任务必须互斥地访问共享资源,为达到这一目标必须对共享资源进行必要的保护,因此II正确。现代操作系统都是多任务的(主要特点是并发和并行),并不一定需要运行在多CPU的硬件上,单个CPU也可满足要求,Ⅲ错误。综上所述,Ⅰ、Ⅱ正确,Ⅲ错误,因此选C。

 

P1405

【答案】C

【解析】I 错误:批处理的主要缺点是缺少交互性。批处理系统的主要缺点是常考点,读者对此要非常敏感。II正确:输入/输出指令需要中断操作,中断必须在核心态下执行。III错误:多道性是为了提高系统利用率和吞吐量而提出的。IV正确:I/O通道实际上是一种特殊的处理器,它具有执行 I/O指令的能力,并通过执行通道程序来控制I/O操作。综上分析,II、IV正确。

 

P1406

【答案】C

【解析】I 正确:系统调用需要触发trap指令,如基于x86的Linux系统,该指令为int 0x80或 sysenter。Ⅱ是干扰项,程序设计无法形成屏蔽中断指令。Ⅲ正确:系统调用的概念。Ⅳ正确:操作系统是一层接口,对上层提供服务,对下层进行抽象。它通过系统调用向其上层的用户、应用程序和应用系统提供对系统资源的使用。

 

P1407

【答案】A

【解析】中断系统和地址映射显然都需要硬件支持,因为中断指令和地址映射中的重定位都是离不开硬件支持的。而时钟管理中,重置时钟等是由硬件直接完成的。进程调度由调度算法决定 CPU 使用权,由操作系统实现,无须硬件的支持。

 

P1408

【答案】A

【解析】缺页处理和时钟中断都属于中断,在核心态执行;进程调度是操作系统内核进程,无须用户干预,在核心态执行;命令解释程序属于命令接口,是4个选项中唯一能面对用户的,它在用户态执行。

 

P1409

【答案】C

【解析】本题的关键是对“在用户态发生"(与上题的“执行”区分)的理解。对于A,系统调用是操作系统提供给用户程序的接口,系统调用发生在用户态,被调用程序在核心态下执行。对于B,外部中断是用户态到核心态的“门”,也发生在用户态,在核心态完成中断过程。对于C ,进程切换属于系统调用执行过程中的事件,只能发生在核心态;对于D ,缺页产生后,在用户态发生缺页中断,然后进入核心态执行缺页中断服务程序。

 

P1410

【答案】B

【解析】需要在系统内核态执行的操作是整数除零操作(需要中断处理)和read系统调用函数,sin()函数调用是在用户态下进行的。

 

P1411

【答案】B

【解析】子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断调用子程序不仅要保存断点(PC的内容),还要保存程序状态字寄存器(PSW)的内容。在中断处理中,最重要的两个寄存器是PC和 PSWR。

 

P1412

【答案】D

【解析】trap指令、跳转指令和压栈指令均可以在用户态执行, 其中trap指令负责由用户态转换为内 核态。关中断指令为特权指令,必须在核心态才能执行,选 D。注意,在操作系统中,关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一,能把它关掉,说明执行这条指令的一定是权限非常大的机构(管态)。

 

P1413

【答案】D

【解析】内中断是指来自CPU和内存内部产生的中断,包括程序运算引起的各种错误,如地址非法、校验错、页面失效、非法指令、用户程序执行特权指令自行中断(INT) 和除数为零等,以上都是在指令的执行过程中产生的,因此A 正确。这种检测异常的工作肯定是由CPU (包括控制器和运算器)实现的,因此B 正确。内中断不能被屏蔽,一旦出现应立即处理,C 正确。对于D,考虑到特殊情况,如除数为零和自行中断(INT) 都会自动跳过中断指令,所以不会返回到发生异常的指令继续执行,因此错误。

 

P1414

A错误。程序计数器 (PC) 的内容由中断隐指令保存。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。

B正确。通用寄存器的内容由中断服务程序保存,中断服务程序属于操作系统。

C错误。快表 (TLB) 中的内容在处理外部中断时不需要保存。

D错误。Cache中的内容在处理外部中断时不需要保存。

本题选B。

P1415

【答案】C

【解析】A 选项中若R 1中的内容为0 , 则会出现内中断,从用户态变为内核态;B 选项软中断在内核态执行;C 选项寄存器取非不会产生中断,且不属于其他操作系统内核,故不会变为内核态;D 选项addr是主存地址,访存需要进入内核态。

 

P1416

【答案】A

【解析】中断是指来自CPU执行指令以外事件的发生,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成,希望处理机能够向设备发出下一个输入/输出请求,同时让完成输入/输出后的程序继续运行。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。异常也称内中断、例外或陷入(trap), 指源自CPU执行指令内部的事件,如程序的非法操作码、 地址越界、算术溢出、虚存系统的缺页及专门的陷入指令等引起的事件。A 错误。

 

P1417

【答案】C

【解析】执行系统调用的过程如下:正在运行的进程先传递系统调用参数,然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态。所以选项C 正确。

 

P1418

【答案】D

【解析】时钟中断的主要工作是处理和时间有关的信息及决定是否执行调度程序。和时间有关的所有信息包括系统时间、进程的时间片、延时、使 用 CPU的时间、各种定时器,因此I、II、III均正确。

 

P1419

【答案】C

【解析】用户可以在用户态调用操作系统的服务,但执行具体的系统调用服务程序是处于内核态的,Ⅰ正确;设备管理属于操作系统的职能之一,包括对输入/输出设备的分配、初始化、维护等,用户程序需要通过系统调用使用操作系统的设备管理服务,II正确;操作系统不同,底层逻辑、实现方式均不相同,为应用程序提供的系统调用接口也不同,III错误;系统调用是用户在程序中调用操作系统提供的子功能,IV正确。

 

P1420

答案】C

【解析】微内核结构将操作系统的很多服务移动到内核以外(如文件系统),且服务之间使用进程间通信机制进行信息交换,这种通过进程间通信机制进行的信息交换影响了系统的效率,所以I错。由于内核的服务变少,且一般来说内核的服务越少内核越稳定,所以Ⅲ错。而 II、IV正是微内核结构的优点。

 

P1421

【答案】C

【解析】进程映像是PCB、程序段和数据的组合,其中PCB是进程存在的唯一标志。

 

P1422

【答案】A

【解析】线程是处理机调度的基本单位,当然可以独立执行程序,A对;线程没有自己独立的地址空间,它共享其所属进程的空间,B 错;进程可以创建多个线程,C 错;与进程之间线程的通信可以直接通过它们共享的存储空间,D错。

 

P1423

【答案】B

【解析】在进程的整个生命周期中,系统总是通过其PCB对进程进行控制。也就是说,系统是根据进程的PCB而非任何其他因素来感知到进程存在的,PCB是进程存在的唯一标志。同时PCB常驻内存。A 和 D 选项的内容都包含在进程PCB中。

 

P1424

【答案】D

【解析】程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响。也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同。

 

P1425

【答案】C

【解析】引入线程后,进程仍然是资源分配的单位。线程是处理器调度和分派的单位,线程本身不具有资源,它可以共享所属进程的全部资源,C对,B、D 明显是错的。至于A ,可以这样来理解:假如有一个内核进程,它映射到用户级后有多个线程,那么这些线程之间的切换不需要在内核级切换进程,也就不需要内核的支持。

 

P1426

【答案】B

【解析】程序代码经过多次创建可以对应不同的进程,在同一个系统的进程(或线程)可以由系统调用的方法被不同的进程(或线程)多次使用。

PS:这道题目描述有点问题,想考察的是dll库初衷就是用来被各个进程共享的,是为了节省资源的。那么大家使用的应该是同一份数据,也就是同一个线程。

 

P1427

【答案】C

【解析】用户登录成功就需要为这个用户创建进程来解释用户的各种命令操作;设备分 配由内核自动完成,不需要创建新进程;启动程序执行的目的是创建一个新进程来执行程序。

 

P1428

【答案】A

【解析】在引入线程后,进程依然是资源分配的基本单位,线程是调度的基本单位,同一进程中的各个线程共享进程的地址空间。在用户级线程中,有关线程管理的所有工作都由应用程序完成,无须内核的干预,内核意识不到线程的存在。

 

P1429

【答案】D

【解析】进程中的线程共享进程内的全部资源,但进程中某线程的栈指针对其他线程是透明的,不能与其他线程共享。

 

P1430

【答案】A

【解析】A 中进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态。B 中进程刚完成I/O ,进入就绪队列等待被处理机调度,为了让其尽快处理I/O结果,因此应提高优先级。C 中进程长期处于就绪队列,为不至于产生饥饿现象,也应适当提高优先级。D 中进程的优先级不应该在此时降低,而应在时间片用完后再降低。

 

P1431

【答案】A

【解析】进程申请读磁盘操作的时候,因为要等待I/O操作完成,会把自身阻塞,此时进 程就变为了阻塞状态,当 I/O操作完成后,进程得到了想要的资源,就会从阻塞态转换到就绪态(这是操作系统的行为)。而降低进程优先级、分配用户内存空间和增加进程的时间片大小都不一定会发生,选A。

 

P1432

【答案】C

【解析】管道实际上是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户、单独构成的一种文件系统,并且只存在于内存中。它类似于通信中半双工信道的进程通信机制,一个管道可以实现双向的数据传输,而同一时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容量大小通常为内存上的一页,它的大小并不受磁盘容量大小的限制。当管道满时,进程在写管道会被阻塞,而当管道空时,进程在读管道会被阻塞,因此选C。

 

P1433

【答案】D

【解析】P(wait)操作表示进程请求某一资源,A、B 和 C 都因为请求某一资源会进入阻塞态,而 D 只是被剥夺了处理机资源,进入就绪态,一旦得到处理机即可运行。

 

P1434

【答案】C

【解析】进程等待某资源为可用(不包括处理机)或等待输入/输出完成均会进入阻塞态,因此I、II正确;Ⅲ中情况发生时,进程进入就绪态,因此Ⅲ错误,答案选C。

 

P1435

【答案】C

【解析】当被阻塞进程等待的某资源(不包括处理机)可用时,进程将会被唤醒。I/O结束后,等待该I/O结束而被阻塞的有关进程会被唤醒,即 I 正确;
某进程退出临界区后,之前会因需要进入该临界区而被阻塞的有关进程会被唤醒,即 II 正确;
当前时间片用完后进入就绪队列等待重新调度,即由运行态变为就绪态,即 III 错误。

 

P1436

【答案】B

【解析】应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口,内核为进程及其内部的每个线程维护上下文信息,调度也是在内核中由操作系统完成的,A 正确。在多线程模型中,用户级线程和内核级线程的连接方式分为多对一、一对一、多对多, “操作系统为每个用户线程建立一个线程控制块”属于一对一模型,B 错误。用户级线程的切换可以在用户空间完成,内核级线程的切换需要操作系统帮助进行调度,因此用户级线程的切换效率更高,C 正确。用户级线程的管理工作可以只在用户空间中进行,因此可以在不支持内核级线程的操作系统上实现,D 正确。

 

P1437

答案:B
解析:在内核态下,CPU可执行任何指令,在用户态下CPU只能执行非特权指令,而特权指令只能在内核态下执行。常见的特权指令有:
①有关对I/O设备操作的指令;
②有关访问程序状态的指令;
③存取特殊寄存器指令;
④其他指令。
A、C和D都是提供给用户使用的指令,可以在用户态执行,只是可能会使CPU从用户态切换到内核态。 

P1438

答案:B

解析:操作系统感知进程的唯一方式是通过进程控制块PCB,所以创建一个新进程时就是为其申请一个空白的进程控制块,并初始化一些必要的进程信息,如初始化进程标志信息、初始化处理机状态信息、设置进程优先级等。I、II 正确。创建一个进程时,一般会为其分配除CPU外的大多数资源,所以一般是将其设置为就绪态,让其等待调度程序的调度。

P1439

答案:C

解析:在分时系统的时间片轮转调度中,当系统检测到时钟中断时,会引出时钟中断处理程序,调度程序从就绪队列中选择一个进程为 其分配时间片,并修改该进程的进程控制块中的进程状态等信息,同时将时间片用完的进程放入就绪队列或让其结束运行。I、II、 III 正确。阻塞队列中的进程只有被唤醒进入就绪队列后,才能参与调度,所以该调度过程不使用阻塞队列。

P1440

答案:C
解析:最短寻道时间优先算法总是选择调度与当前磁头所在磁道距离最近的磁道。可以得出访问序列184, 182, 187, 176, 199,从而求出移动距离之和是0+2+5+11+23=41。

P1441

答案:D

解析:在时间片调度算法中,中断处理结束后,系统检测当前进程的时间片是否用完,如果用完,则将其设为就绪态或让其结束运行,若就绪队列不空,则调度就绪队列的队首进程执行,I可能。

当前进程阻塞时,将其放入阻塞队列,若就绪队列不空,则调度新进程执行,II可能。

进程执行结束会导致当前进程释放CPU,并从就绪队列中选择一个进程获得CPU, III可能。

进程时间片用完,会导致当前进程让出CPU,同时选择就绪队列的队首进程获得CPU,IV可能。

P1442

答案:C

解析:页面大小为4KB,低12位是页内偏移。虚拟地址为02A01H,页号为02H, 02H页对应的页表项中存在位为0,进程P分配的页框固定为2,且内存中已有两个页面存在。根据CLOCK算法,选择将3号页换出,将2号页放入60H页框,经过地址变换后得到的物理地址是60A01H。

P1443

答案:B
解析:在多级页表中,页表基址寄存器存放的是顶级页表的起始物理地址,故存放的是一级页表的起始物理地址。

P1444

答案:A

解析:删除一个文件时,会根据文件控制块回收相应的磁盘空间,将文件控制块回收,并删除目录中对应的目录项。B、C、D正确。快捷方式属于文件共享中的软连接,本质上是创建了一个链接文件, 其中存放的是访问该文件的路径,删除文件并不会导致文件的快捷方式被删除,正如在Windows上删除一个程序后, 其快捷方式可能仍存在于桌面,但已无法打开。

P1445

答案:C
解析:考虑极端情况,当临界资源数为n时,每个进程都拥有1个临界资源并等待另一个资源,会发生死锁。当临界资源数为n+1时,则n个进程中至少有一个进程可以获得2个临界资源,顺利运行完后释放自己的临界资源,使得其他进程也能顺利运行,不会产生死锁。

P1446

答案:C

解析:系统调用是由用户进程发起的,请求操作系统的服务。

A,当内存中的空闲页框不够时,操作系统会将某些页面调出,并将要访问的页面调入,这个过程完全由操作系统完成,不涉及系统调用。

B,进程调度完全由操作系统完成,无法通过系统调用完成。

C,创建新进程可以通过系统调用来完成,如Linux中通过fork 系统调用来创建子进程。

D,生成随机数只需要普通的函数调用,不涉及请求操作系统的服务,如C语言中random()函数。

P1447

答案:B

Ⅰ正确:增大内存的容量。增大内存可使每个程序得到更多的页框,能减少缺页率,进而减少换入/换出过程,可提高CPU的利用率。

Ⅱ错误:增大磁盘交换区的容量。因为系统实际已处于频繁的换入/换出过程中,不是因为磁盘交换区容量不够,因此增大磁盘交换区的容量无用。

Ⅲ正确:减少多道程序的度数。可以提高CPU的利用率,因为从给定的条件知道磁盘交换区的利用率为99.7%,说明系统现在已经处于频繁的换入/换出过程中,可减少主存中的程序。

Ⅳ错误:增加多道程序的度数。系统处于频繁的换入/换出过程中,再增加主存中的用户进程数,只能导致系统的换入/换出更频繁,使性能更差。

V错误:使用更快速的磁盘交换区。因为系统现在处于频繁的换入/换出过程中,即使采用更快的磁盘交换区,其换入/换出频率也不会改变,因此没用。

Ⅵ错误:使用更快速的CPU。系统处于频繁的换入/换出过程中,CPU处于空闲状态,利用率不高,提高CPU的速度无济于事。

综上分析:Ⅰ、Ⅲ可以改进CPU的利用率。

P1448

答案:D

缺页中断调入新页面,肯定要修改页表项和分配页框,所以Ⅰ、Ⅲ可能发生,同时内存没有页面,需要从外存读入,会发生磁盘I/O。

P1449

答案:A

在具有对换功能的操作系统中,通常把外存分为文件区和对换区。前者用于存放文件,后者用于存放从内存换出的进程。

抖动现象是指刚刚被换出的页很快又要被访问,为此又要换出其他页,而该页又很快被访问,如此频繁地置换页面,以致大部分时间都花在页面置换上,导致系统性能下降。

撤销部分进程可以减少所要用到的页面数,防止抖动。对换区大小和进程优先级都与抖动无关。

P1450

答案:B

采用连续分配方式时,会使相当一部分内存空间都处于暂时或”永久“的空闲状态,造成内存资源的严重浪费,也无法从逻辑上扩大内存容量,因此虚拟内存的实现只能建立在离散分配的内存管理的基础上。有以下三种实现方式:请求分页;请求分段;请求段页式。

虚存的实际容量受外存和内存容量之和限制,虚存的最大容量是由计算机的地址位数决定的。

P1451

答案:B

用户进程访问内存时缺页,会发生缺页中断。发生缺页中断时,系统执行的操作可能是置换页面或分配内存。系统内没有越界错误,不会进行越界出错处理。

P1452

答案:C

虚实地址转换是指逻辑地址和物理地址的转换。增大快表容量能把更多的表项装入快表,会加快虚实地址转换的平均速率;让页表常驻内存可以省去一些不在内存中的页表从磁盘上调入的过程,也能加快虚实地址转换;增大交换区对虚实地址转换速度无影响,因此Ⅰ、Ⅱ正确,选C。

P1453
答案:C 

对各进程进行固定分配时页面数不变,不可能出现全局置换。而A、B、D是现代操作系统中常见的3种策略

P1454

答案:A

打开文件操作是将该文件的FCB存入内存的活跃文件目录表,而不是将文件内容复制到主存,找到指定文件目录是打开文件之前的操作。

P1455

答案:C
将文件描述信息从目录项中分离,即应用了索引结点的方法,磁盘的盘块中可以存放更多的目录项,查找文件时可以大大减少其I/O信息量。

P1456
答案:D

在文件系统中,口令、存储控制和用户权限表都是常用的文件保护方法。

P1457

答案:D
相对于加密保护机制,访问控制机制的安全性较差。因为访问控制的级别和保护力度较小,因此它的灵活性相对较高。若访问控制不由系统实现,则系统本身的安全性就无法保证。加密机制若由系统实现,则加密方法将无法扩展。

 

P1458
答案:D

逻辑文件有两种:无结构文件(流式文件)和有结构式文件。连续文件和链接文件都属于文件的物理结构,而系统文件是按文件用途分类的。

P1459

答案:D
文件结构包括逻辑结构和物理结构。逻辑结构是用户组织数据的结构形式,数据组织形式来自需求,而物理结构是操作系统组织物理存储块的结构形式。

因此说,逻辑文件的组织形式取决于用户,物理结构的选择取决于文件系统设计者针对硬件结构(如磁带介质很难实现链接结构和索引结构)所采取的策略。

P1460
答案:B

直接存取即随机存取,采用连续分配和索引分配的文件都适用于直接存取方式,只有采用链接分配的文件不具有随机存取特性。

P1461

答案:B
在连续分配方式中,为了使系统能找到文件存放的地址,应在目录项的“文件物理地址”字段中,记录该文件第一条记录所在的盘块号和文件长度(以盘块数进行计量)。

P1462

答案:A
每个磁盘块中最多有1KB/4B = 256个索引项,则两级索引分配方式下单个文件的最大长度为2562561KB=64MB。

P1463

答案:D
第22个逻辑记录存放在第5个物理块中(22*100/512 = 4,余152),由于文件采用的物理结构是链接文件,因此需要从目录项所指的第一个物理块开始读取,共启动磁盘5次。修改后还需要写回操作,由于写回时已获得该块的物理地址,只需启动磁盘1次,因此共需启动磁盘6次。

P1464
答案:C

通常用户可以根据需要来确定文件的逻辑结构,而文件的物理结构是由操作系统的设计者根据文件存储器的特性来确定的,一旦确定,就由操作系统管理。

P1465

答案:B
索引表的表项中含有相应记录的关键字和存放该记录的逻辑地址;三级索引需要访问4次磁盘;随机存取时索引文件速度快,顺序存取时顺序文件速度快。

P1466

答案:B
文件的物理结构包括连续、链式、索引三种,其中链式结构不能实现随机访问,连续结构的文件不易于扩展。因此随机访问且易于扩展是索引结构的特性。

P1467

答案:C
每个磁盘索引块和磁盘数据块大小均为256B,每个磁盘索引块有256/4=64个地址项。因此,4个直接地址索引指向的数据块大小为4*256B;2个一级间接索引包含的直接地址索引数为2*(256/4),即其指向的数据块大小为2*(256/4)*256B。1个二级间接索引包含的直接地址索引数为(256/4)*(256/4),即其所指向的数据块大小为(256/4)*(256/4)*256B。因此,7个地址项所指向的数据块总大小为4*256+2*(256/4)*256+(256/4)*(256/4)*256=1082368B=4057KB。

P1468

答案:A
Ⅰ,当所读文件的数据不在内存时,产生中断(缺页中断),原进程进入阻塞态,直到所需数据从外存调入内存后,才将该进程唤醒。

Ⅱ,read系统调用通过陷入将CPU从用户态切换到核心态,从而获取操作系统提供的服务。

Ⅲ,要读一个文件,首先要用open系统调用打开该文件。open中的参数包含文件的路径名与文件名,而read只需使用open返回的文件描述符,并不使用文件名作为参数。read要求用户提供三个输入参数:1.文件描述符fd;2.buf缓冲区首址;3.传送的字节数n。read的功能是试图从fd所指示的文件中读入n个字节的数据,并将它们送至由指针buf所指示的缓冲区中。


 

P1469

答案:B

P1470

答案:D
可以把用户访问权限抽象为一个矩阵,行代表用户,列代表访问权限。这个矩阵有4行5列,1代表true,0代表false,所以需要20位,选D。

P1471
答案:D
P1472

答案:A
索引分配支持变长的文件,同时可以随机访问文件的指定数据块,A正确。

连接分配不支持随机访问,需要依靠指针依次访问,B错误。

连续分配的文件长度固定,不支持可变文件长度(连续分配的文件长度虽然也可变,但是需要大量移动数据,代价较大,相比之下不太适合),C错误。

动态分区分配是内存管理方式,不是磁盘空间的管理方式,D错误。

P1473

解答:

因为索引结点号占4B=32bit,最多可以表示 2^32 个索引结点号,所以该文件系统能创建的文件数量的上限为 2^32 。

本题选B。

P1474

答案:C
3200个目录项占用的盘块数为3200*64B/1KB = 200个。因为一级目录平均访盘次数为1/2盘块数(顺序查找目录表中的所有目录项,每个目录项为一个FCB),所以平均的访问磁盘次数为200/2 = 100次。

P1475

答案:D
脱机技术用于解决独占设备问题。虚拟技术与交换技术以多道程序设计技术为前提。多道程序设计技术由于同时在主存中运行多个程序,在一个程序等待时,可以去执行其他程序,因此提高了系统资源的利用率。

P1476
答案:C

实时系统必须能够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。

P1477
答案:D

因操作系统不允许用户直接执行某些“危险性高”的指令,因此用户态运行这些指令的结果会转成操作系统的核心态去运行。这个过程就是访管中断。

P1478

答案:A


计算机通过硬件中断机制完成由用户态到核心态的转换。

B不正确,核心态程序只有在操作系统进入核心态后才可以执行。

D中的中断处理程序一般也在核心态执行,因此无法完成“转换成核心态”这一任务。

若由用户程序将操作系统由用户态转换为核心态,则用户程序中就可使用核心态指令,这就会威胁到计算机的安全,所以C不正确。

计算机通过硬件完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生中断事件时,触发中断,硬件中断机制将计算机状态置为核心态。

P1479
答案:A

“访管”指令仅在用户态下使用,执行“访管”指令将用户态转变为核心态。

P1480

答案:C

广义指令即系统调用命令,它必然工作在核心态,所以答案为C。

广义指令的调用可能发生在用户态,调用广义指令的那条指令不一定是特权指令,但广义指令存在于核心态中,所以执行一定在核心态。

P1481

答案:D
当CPU检测到中断信号后,由硬件自动保存被中断程序的断点(即程序计数器PC),Ⅰ错误。

硬件找到该中断信号对应的中断向量,中断向量指明中断服务程序入口地址(各中断向量统一存放在中断向量表中,该表由操作系统初始化),Ⅲ正确。

接下来开始执行中断服务程序,保存PSW、保存中断屏蔽字、保存个通用寄存器的值,并提供与中断信号对应的中断服务,中断服务程序属于操作系统内核,Ⅱ和Ⅳ正确。


 

P1482

答案:C
Windows是宏内核操作系统,Ⅰ错误。

Ⅱ描述的是层次化构架的原则。

在微内核构架中,客户和服务器之间、服务器和服务器之间的通信采用消息传递机制,这就使得微内核系统能很好地支持分布式系统,Ⅲ正确。

添加系统服务时不必修改内核,这就使得微内核构架的可扩展性和灵活性更强;微内核构架的主要问题时性能问题,“使系统更高效”显然错误。


 

P1483

答案:D
操作系统的引导程序位于磁盘活动分区的引导扇区中。

引导程序分为两种:一种是位于ROM中的自举程序(BIOS的组成部分),用于启动具体的设备;另一种是位于装有操作系统硬盘的活动分区的引导扇区中的引导程序(称为启动管理器),用于引导操作系统。

P1484

【答案】D

P1485

答案:C

P1486

答案:A
BIOS将控制权交给排在首位的启动设备后,CPU将该设备主引导扇区的内容(主引导记录MBR)加载到内存中,然后由MBR检查分区表,查找活动分区,并将该分区的引导扇区的内容(分区引导记录PBR)加载到内存加以执行。

P1487

答案:A
软件能实现的功能也能由硬件实现,因为虚拟机软件能实现的功能也能由硬件实现,软件和硬件的分界面是系统结构设计者的任务,Ⅰ和Ⅱ正确。实现真正并行的是多喝处理机,多台虚拟机同时运行在同一物理机器上,类似于多个程序运行在同一个系统中。

P1488

答案:A
选项B错在优先级分为静态和动态两种,动态优先级是根据运行情况而随时调整的。

选项C错在系统发生死锁时有可能进程全部都处于阻塞态,或无进程任务,CPU空闲。

选项D错在进程申请处理器得不到满足时就处于就绪态,等待处理器的调度。

P1489
答案:D

I/O操作完成之前进程在等待结果,状态为阻塞态;

完成后进程等待事件就绪,变为就绪态。

P1490

答案:A
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,它包括PCB、程序和数据以及执行栈区,仅仅说进程是在多程序环境下的完整程序是不合适的,因为程序是静态的,它以文件形式存放于计算机硬盘内,而进程是动态的。

P1491

答案:B、D、D、C、B、A
C语言编写的程序在使用内存时一般分为三个段,它们一般是正文段(即代码和赋值数据段)、数据堆段和数据栈段。二进制代码和常量存放在正文段,动态分配的存储区在数据堆段,临时使用的变量在数据栈段。因此,可以确定全局赋值变量在正文段赋值数据段,未赋值的局部变量和实参传递在栈段,动态内存分配在堆段,常量在正文段,进程的优先级只能在PCB内。

 

P1492

答案:C
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使用一个线程来处理整个系统的键盘输入。

P1493

答案:D
进程处于运行态时,它必须以获得所需的资源,在运行结束后就撤销。只有在时间片到或出现了比现在进程优先级更高的进程时才转变成就绪态。

选项A使进程从阻塞态到就绪态;
选项B使进程从运行态到阻塞态;
选项C使进程撤销。

P1494

答案:C
进程有三种基本状态,处于阻塞态的进程由于某个事件不满足而等待。这样的事件一般是I/O操作,如键盘等,或是因互斥或同步数据引起的等待,如等待信号或等待进入互斥临界区代码段等,等待网络数据进入内存是为了进程同步。而等待CPU调度的进程处于就绪态,只有它是非阻塞态。

P1495

【答案】A

P1496

答案:A
当一个进程被唤醒时,这个进程就进入了就绪态,等待进程调度而占有CPU运行。进程被唤醒在某种情形下优先级可以增大,但一般不会变为最大,而由固定的算法来计算。也不会在唤醒后位于就绪队列的队首,就绪队列是按照一定的规则赋予其位置的,如先来先服务,或者高优先级优先,或者短进程优先等,更不能直接占有处理器运行。

P1497

答案:B

P1498

解答:

A正确。当一个父进程创建子进程时,父进程和子进程可以并发地执行各自的任务,彼此之间相对独立。

B错误。在常见的进程模型中,父进程与子进程通常拥有各自独立的虚拟地址空间。这意味着它们在内存中有不同的地址空间,彼此之间的数据不共享。当父进程创建子进程时,子进程会复制父进程的地址空间,但之后它们是独立的,对地址空间的修改不会相互影响。

C正确。进程控制块是操作系统用于管理和跟踪进程的数据结构。它包含了进程的各种属性和状态信息,例如进程ID、父进程ID、进程状态、程序计数器、寄存器状态、内存分配信息、打开文件列表等。当父进程创建子进程时,操作系统会为子进程分配一个新的进程控制块,以维护子进程的独立状态信息和程序执行上下文。虽然子进程可以继承父进程的一些属性(如文件描述符表),但它们有不同的进程ID和父进程ID,并且拥有各自的程序计数器、寄存器状态和其他进程控制块信息。通过不同的进程控制块,操作系统可以独立地管理和调度父进程和子进程的执行,实现进程的并发执行和协作。

D正确。临界资源 (Critical Resource) 是指在多个进程或线程之间共享使用的一种资源。由于临界资源的共享特性,需要采取特殊的保护机制来确保在任意时刻只有一个进程或线程可以访问该资源,以防止并发访问导致的数据不一致性和竞态条件。在父进程和子进程之间,如果需要同时使用同一临界资源,可以通过各种同步机制实现对该资源的互斥访问。

本题选B。

P1499

答案:A
时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得用户以为”独占“计算机的使用,因此它并没有偏好,也不会对特殊进程做特殊服务。时间片轮转增加了系统开销,所以不会使得系统高效运转,吞吐量和周转时间均不如批处理。但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求。

P1500

答案:B
先到先服务(FCFS)调度算法比较有利于长作业,而不利于短作业。

所谓CPU繁忙型作业,是指该类作业需要大量的CPU时间进行计算,而很少请求I/O操作,故采用FCFS可从容完成计算。I/O繁忙型作业是指CPU处理时,需频繁地请求I/O操作,导致操作完成后还要重新排队等待调度。所以CPU繁忙型作业更接近于长作业,若采用FCFS,则等待时间过长。时间片轮转法对于短作业和长作业的时间片都一样,多以地位也几乎一样。优先级调度有利于优先级高的进程,而优先级和作业时间长度是没有什么必然联系的。因此选B。

P1501

答案:D

进程(线程)调度的时机包括:

运行的进程(线程)运行完毕、
运行的进程(线程)自我阻塞、
运行的进程(线程)的时间片用完、
运行的进程(线程)所需的资源没有准备好、
运行的进程(线程)出现错误。
在CPU方式是可抢占方式时,就绪队列中的某个进程(线程)的优先级高于当前运行进程(线程)的优先级时,也会发生进程(线程)调度。

 

P1502

答案:A


Ⅰ选项正确,分时系统中,响应时间与时间片和用户数成正比。

Ⅱ选项正确。

Ⅲ选项错误,中断向量本身是用于存放中断服务例行程序的入口地址,因此中断向量地址就应是该入口地址的地址。

Ⅳ选项错误,中断由硬件保护并完成,主要是为了保证系统运行可靠、正确。提高处理速度也是一个好处,但不是主要目的。

综上分析,Ⅲ、Ⅳ选项错误。


 

P1503

答案:B

由于P2比P1晚5ms到达,P1先占用CPU,作业运行的甘特图如下:

P1504

答案:C
选项A、B、D属于可以进行处理机调度的情况。

对于选项C,当进程处于临界区时,说明进程正在占用处理机,只要不破坏临界资源的使用规则,就不会影响处理机的调度。比如,通常访问的临界资源可能是慢速的外设(如打印机),若在进程访问打印机时,不能进行处理机调度,则系统的性能将非常差。

P1505

答案:B
为了合理地设置进程优先级,应综合考虑进程的CPU时间和I/O时间。对于优先级调度算法,一般来说,I/O型作业的优先权高于计算型作业的优先权,这是由于I/O操作需要及时完成,它没有办法长时间地保存所要输入/输出的数据,所以考虑到系统资源利用率,要选择I/O繁忙型作业有更高的优先级。

P1506

答案:A
采用静态优先级调度且系统总是出现高优先级的任务时,优先级低的任务总是得不到处理机而产生饥饿现象;而短任务优先调度不管是抢占式的还是非抢占式的,当系统总是出现新来的短任务时,长任务会总是得不到处理机,产生饥饿现象,因此选项B、C、D都错误。

P1507

答案:B

这类调度题目最好画图。

因CPU、输入设备、输出设备都只有一个,因此各操作步骤不能重叠,画出运行时的甘特图后,就能清楚地看到不同作业间的时序关系,如下图所示

P1508

答案:D
由优先权可知,进程的执行顺序为P2 > P3 > P1 

P2的周转时间为1+15+24=40us;P3的周转时间为18+1+24+1+36=80us;P1 的周转时间为30+1+24+1+36+1+12=105us;平均周转时间为(40+80+105)/3=225/3=75us,因此选D。
 

P1509

答案:C
进程P1,P2依次创建后进入队列Q1 ,根据时间片调度算法的规则,进程P1,P2将依次被分配10ms的CPU时间,两个进程分别执行完一个时间片后都会被转入队列Q2,就绪队列Q2采用短进程优先调度算法,此时P1还需要20ms的CPU时间,P2还需要10ms的CPU时间,所以P2会被优先调度执行,10ms后进程P2执行完成,之后P1再调度执行,再过20ms后P1也执行完成。运行图表如下所示。

进程P1,P2的等待时间分别为图中的虚横线部分,平均等待时间=(P1等待时间+P2等待时间)/2=(20+10)/2,因此答案选C。


 

P1510

答案:C
在分时系统的时间片轮转调度中,当系统检测到时钟中断时,会引出时钟中断处理程序,调度程序从就绪队列中选择一个进程为其分配时间片,并且修改该进程的进程控制块中的进程状态等信息,同时将时间片用完的进程放入就绪队列或让其结束运行。Ⅰ、Ⅱ、Ⅲ正确。

阻塞队列中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以该调度过程不适用阻塞队列。


 

P1511

答案:D
多个进程可以共享系统中的资源,一次仅允许一个进程使用的资源称为临界资源。访问临界资源的那段代码称为临界区。

P1512

答案:A


信号量是一个特殊的整形变量,只有初始化和PV操作才能改变其值。通常,信号量分为互斥量和资源量,互斥量的初值一般为1,表示临界区只允许一个进程进入,从而实现互斥。当互斥量等于0时,表示临界区已有一个进程进入,临界区外尚无进程等待;当互斥量小于0时,表示临界区中有一个进程,互斥量的绝对值表示在临界区外等待进入的进程数。同理,资源信号量的初值可以是任意整数,表示可用的资源数,当资源数小于0时,表示所有资源已全部用完,而且还有进程正在等待使用该资源,等待的进程数就是资源量的绝对值。

P1513
答案:C

P操作即wait操作,表示等待某种资源直到可用。若这种资源暂时不可用,则进程进入阻塞态。注意,执行P操作时的进程处于运行态。

P1514
答案:C

只有就绪进程能获得处理器资源,被唤醒的进程并不能直接转换为运行态。

P1515
答案:B

互斥信号量的初值设置为1,P操作成功则将其减1,禁止其他进程进入;V操作成功则将其加1,允许等待队列中的一个进程进入。

P1516

答案:D
与互斥信号量初值一般置1不同,用P,V操作实现进程同步时,信号量的初值应根据具体情况来确定。若期望的消息尚未产生,则对应的初值应设为0;若期望的消息已存在,则信号量的初值应设为一个非0的正整数。

P1517
答案:D

P操作和V操作都属于原语操作,不可被中断。

P1518

答案:A
因为每次允许两个进程进入该程序段,信号量最大值取2。至多有三个进程申请,则信号量最小为-1,所以信号量可以取2,1,0,-1。

P1519

答案:B
mutex的初值为1,表示允许一个进程进入临界区,当有一个进程进入临界区且没有进程等待进入时,mutex减1,变为0。|mutex|为等待进入的进程数。因此选择B。

P1520

答案:D
由题意可知,系统原来存在等待进入临界区的进程,mutex小于等于-1,因此在执行V(mutex)操作后,mutex的值小于等于0。

P1521

答案:C
管程的signal操作与信号量机制中的V操作不同,信号量机制中的V操作一定会改变信号量的值S=S+1。而管程中的signal操作是针对某个条件变量的,若不存在因该条件而阻塞的进程,则signal不会产生任何影响。

P1522

答案:C、B
第一个括号:系统中有n个进程,其中至少有一个进程正在执行(处理器至少有一个),因此就绪队列中的进程个数最多有n-1个。B选项容易被错选,以为出现了处理器为空、就绪队列全满的情况,实际调度无此状态。

第二个括号:C选项容易被错选,阻塞队列有n-1个进程这种情况是可能发生的,但不是最多的情况。可能不少读者会忽视死锁的情况,死锁就是n个进程都被阻塞,所以最多可以有n个进程在阻塞队列。

P1523
答案:A

所谓互斥使用某临界资源,是指在同一时间按只允许一个进程使用此资源,所以互斥信号量的初值都为1。

P1524

答案:D

P1525

答案:C
将P1中的3条语句依次编号为1,2,3,将P2中的3条语句依次编号为4,5,6,则依次执行1,2,3,4,5,6得结果1,依次执行1,2,4,5,6,3得结果2,依次执行4,5,1,2,3,6得结果0.结果-1不可能得出。

P1526

答案:B
当进程退出临界区时置lock为FALSE,会负责唤醒处于就绪态得进程,A错误。

等待进入临界区得进程会一直停留在执行while(TSL(&lock))的循环中,不会主动放弃CPU,B正确。

让权等待,即进程不能进入临界区时,应立即释放处理器,防止进程忙等待。通过B的分析发现,上述伪代码并不满足“让权等待”的同步准则,C错误。

while(TSL(&lock))在关中断状态下执行时,若TSL(&lock)一直为true,不再开中断,则系统可能会因此终止,D错误。

P1527

答案:B

通过阅读两个线程代码可知,thread1和thread2均是对x进行加1操作,x的初始值为0,若要使得最终x=2,只能先执行完thread1再执行thread2,或先执行完thread2再执行thread1,因此仅有两种可能,选B。

P1528

答案:D

P1529

答案:C
实现临界区互斥需满足多个准则。
“忙则等待”准则,即两个进程不能同时访问临界区,Ⅰ正确。
“空闲让进”准则,若临界区空闲,则允许其他进程访问,Ⅱ正确。
“有限等待”准则,即进程应该在有限时间内访问临界区,Ⅲ正确。

Ⅰ、Ⅱ和Ⅲ是互斥机制必须遵循的原则。

Ⅳ是“让权等待”准则,不一定非得实现,如Peterson算法。


 

P1530

答案:B
发生死锁的4个必要条件:互斥、占有并请求、非剥夺和循环等待。

一次分配所有资源的方法是当进程需要资源时,一次性提出所有的请求,若请求的所有资源均满足则分配,只要有一项不满足,就不分配任何资源,该进程阻塞,直到所有的资源空闲后,满足进程的所有需求时再分配。这种分配方式不会部分地占有资源,因此打破了死锁的4个必要条件之一,实现了对死锁的预防。但是,这种分配方式需要凑齐所有资源,因此当一个进程所需的资源较多时,资源的利用率会较低,甚至会造成进程“饥饿”。

P1531

答案:D
资源有序分配策略可以限制循环等待条件的发生。

选项A判断是否为不安全状态;选项B破坏了占有请求条件;选项C破坏了非剥夺条件。

P1532
答案:B

资源数为9时,存在三个进程都占有三个资源,为死锁;资源数为10时,必然存在一个进程能拿到4个资源,然后可以顺序执行完其他进程。

P1533

答案:B
极端情况:
每个进程已经分配了两台磁带机,那么其中任何一个进程只要再分配一台磁带机即可满足它的最大需求,该进程总能运行下去直到结束,然后将磁带机归还给系统再次分配给其他进程使用。因此,系统中只要满足2X+1=11这个条件即可认为系统不会死锁,解得X=5,也就是说,系统中最多可以并发5个这样的进程是不会死锁的。

P1534

答案:C
不会发生死锁。因为每个进程都分得一个资源时,还有一个资源可以让任意一个进程满足,这样这个进程可以顺利运行完成进而释放它的资源。

P1535

答案:A
死锁检测一般采用两种方法:资源有向图法和资源矩阵法。

前驱图只是说明进程之间的同步关系,搜索树用于数据结构的分析,安全图并不存在。

注意死锁避免和死锁检测的区别:死锁避免是指避免死锁发生,即死锁没有发生;死锁检测是指死锁已出现,要把它检测出来。

P1536

答案:D
某个进程主动释放资源不会导致死锁,因为破坏了请求并保持条件,选项A错。

颠簸也就是抖动,这是请求分页系统中页面调度不当而导致的现象。

回退是指从此时此刻的状态回退到一分钟之前的状态,假如一分钟之前拥有资源X,它有可能释放了资源X,那就不能回到一分钟之前的状态,也就不是回退,选项C错。

由于进程过于“慷慨”,不断把自己已得到的资源送给别人,导致自己长期无法完成,所以是饥饿,选项D对。

P1537

答案:C

出现了环路,只是满足了循环等待的必要条件,而满足必要条件不一定会导致死锁,Ⅰ对;

没有环路,破坏了循环等待条件,一定不会发生死锁,Ⅱ错;

每种资源只有一个,又出现了环路,这是死锁的充分条件,可以确定是否有死锁,Ⅲ错;

即使每个进程至少有一条请求边。若资源足够,则不会发生死锁,但若资源不充足,则有发生死锁的可能,Ⅳ对。


 

P1538

答案:C

本题中两个进程不能正确地工作,运行结果的可能性如下说明。

不确定的原因是由于使用了公共变量x,考查程序中与变量x有关的语句共四处。

执行的顺序是1->2->3->4->5->6->7->8时,结果是y=1,z=1,t=2,u=2,x=2;

并发执行过程是1->2->5->6->3->4->7->8时,结果是y=0,z=0,t=2,u=2,x=0;

执行的顺序是5->6->7->8->1->2->3->4时,结果是y=1,z=1,t=2,u=2,x=1;

执行的顺序是5->6->1->2->7->8->3->4时,结果是y=1,z=1,t=2,u=2,x=1。

很明显,无论执行顺序如何,x的结果只能是0或1,因此语句7的条件一定成立,即t=u=2的结果是一定的;而y=z必定成立,只可能有0,1两种情况,又不可能出现x=1,y=z=0的情况,所以总共只有3中结果。


 

P1539
答案:C

一个进程再获得资源后,只能在使用完资源后由自己释放,即它的资源不能被系统剥夺,答案为C选项。

P1540
答案:C

死锁定理是用于检测死锁的方法。

P1541

答案:C
考虑最极端的情况。因为每个进程最多需要3台打印机,若每个进程已经占有了2台打印机,则只要还有多的打印机,总能满足一个进程达到3台的条件,然后顺利执行,所以将8台打印机分给K个进程,每个进程有2台打印机,这个情况最极端,K为4。

P1542

答案:B
银行家算法是避免死锁的方法,选项A、D错。

并非所有不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态;死锁状态必定是不安全状态。所以选项B对,选项C错。

P1543

答案:B
三个并发进程分别需要3,4,5台设备,当系统只有(3-1)+(4-1)+(5-1)=9台设备时,第一个进程分配2台,第二个进程分配3台,第三个进程分配4台。这种情况下,三个进程均无法继续执行下去,发生死锁。当系统中再增加1台设备,即10台设备时,最后1台设备分配给任意一个进程都可以顺利执行完成,因此保证系统不发生死锁的最小设备数为10。

P1544

答案:B
死锁的处理采用三种策略:死锁预防、死锁避免、死锁检测和解除。

死锁预防采用破坏产生死锁的4个必要条件中的一个或几个来防止发生死锁。其中之一的“破坏循环等待条件”,一般采用顺序资源分配法,首先给系统的资源编号,规定每个进程必须按编号递增的顺序请求资源,即限制了用户申请资源的顺序,因此Ⅰ的前半句属于死锁预防的范畴。

银行家算法是著名的死锁避免算法,其中的最大需求矩阵Max定义了每个进程对m类资源的最大需求量,系统在执行安全性算法中都会检查次资源试分配后,系统是否处于安全状态,若不安全则将本次的试探分配作废。在死锁的检测和解除中,系统为进程分配资源时不采取任何措施,但提供死锁的检测和解除手段,因此Ⅱ、Ⅲ正确。


 

P1545

答案:A
由题意可知,仅剩最后一个同类资源,若将其分给P1或P2,则均无法正常执行;若分给P3,则P3正常执行完成后,释放的这一个资源仍无法使P1,P2正常执行,因此不存在安全序列。

P1546

解答:

Ⅰ正确。从一个或多个进程中抢占足够数量的资源,然后将他们分配给死锁进程,解除其死锁状态。

II正确。死锁的预防方法能确保系统不发生死锁。死锁的预防方法是在系统设计阶段采取措施,通过破坏死锁发生的四个必要条件(互斥条件、请求和保持条件、不剥夺条件和循环等待条件),来确保系统不会进入死锁状态。

Ⅲ错误。银行家算法是一种死锁避免算法,可以判断系统是否存在安全序列,无法判断系统是否处于死锁状态。

Ⅳ正确。在死锁状态下,存在循环依赖关系,每个进程都在等待其他进程释放资源,因此至少有两个或两个以上的进程处于阻塞状态,无法继续执行。

综上,仅Ⅰ、Ⅱ、Ⅳ正确。

本题选B。

P1547

答案:A
覆盖和交换的提出就是为了解决主存空间不足的问题,但不是在物理上扩充主存,只是将暂时不用的部分换出主存,以节省空间,从而在逻辑上扩充主存。

P1548
答案:B

多进程的执行通过内存保护实现互不干扰,如页式管理中有页地址越界保护,段式管理中有段地址越界保护。

P1549
答案:D

页表的功能由一组专门的存储器实现,其始地址放在页表基址寄存器(PTBR)中。这样才能满足在地址变换时能够较快地完成逻辑地址和物理地址之间的转换。

P1550

答案:A
为使地址转换不影响到指令的执行速度,必须有硬件地址变换结构的支持,即需在系统中增设一个重定位寄存器,用它来存放程序(数据)在内存中的始址。在执行程序或访问数据时,真正访问的内存地址由相对地址与重定位寄存器中的地址相加而成,这时将始址存入重定位寄存器,之后的地址访问即可通过硬件变换实现。因为系统处理器在同一时刻只能执行一条指令或访问数据,所以为每道程序(数据)设置一个寄存器没有必要(同时也不现实,因为寄存器是很贵的硬件,而且程序的道数是无法预估的),而只需在切换程序执行时重置寄存器内容。

P1551

答案:D
可重入程序主要是通过共享来使用同一块存储空间的,或通过动态链接的方式将所需的程序段映射到相关进程中去,其最大的优点是减少了对程序段的调入/调出,因此减少了对换数量。

P1552

答案:A
实现分页、分段和段页式存储管理需要特定的数据结构支持,如页表、段表等。为了提高性能,还需要硬件提供快存和地址加法器等,代价高。分区存储管理是满足多道程序设计的最简单的存储管理方案,特别适合嵌入式等微型设备。

P1553

答案:B
页式管理中很重要的一个问题是页面大小如何确定。确定页面大小有很多因素,如进程的平均大小、页表占用的长度等。而一旦确定,所有的页面就是等长的(一般取2的整数幂倍),以便易于系统管理。

P1554

答案:A
引入段式存储管理方式,主要是为了满足用户的下列要求:方便编程、分段共享、分段保护、动态链接和动态增长。

P1555
答案:B

这里是指主存的访问,不是主存的分配。对主存的访问是以字节或字为单位的。例如,在页式管理中,不仅要知道块号,而且要知道页内偏移。

P1556

答案:A
在多个进程并发执行时,所有进程的页表大多数驻留在内存中,在系统中只设置一个页表寄存器(PTR),它存放页表在内存中的始址和长度。平时,进程未执行时,页表的始址和页表长度存放在本进程的PCB中,当调度到某进程时,才将这两个数据装入页表寄存器中。每个进程都有一个单独的逻辑地址,有一张属于自己的页表。

P1557
答案:A

在分段存储管理方式中,以段为单位进行分配,每段是一个连续存储区,每段不一定等长,段与段之间可连续,也可不连续。

P1558

答案:B
段式存储管理兼有页式管理和段式管理的优点,采用分段方法来分配和管理用户地址空间,采用分页方法来管理物理存储空间。但它的开销要比段式和页式管理的开销大。

P1559

答案:D

P1560

答案:C
Ⅰ正确:关闭TLB后,每当访问一条指令或存取一个操作数时都要先访问页表(内存中),得到物理地址后,再访问一次内存进行响应操作。

Ⅱ错误:凡是分区固定的都会产生内部碎片,而无外部碎片。

Ⅲ错误:页式存储管理对于用户是透明的。

Ⅳ错误:静态重定位是在程序运行之前由装配程序完成的,必须分配其要求的全部连续内存空间。而页式存储管理方案是将程序离散地分成若干页(块),从而可以将程序装入不连续的内存空间,显然静态重定位不能满足其要求。


 

P1561

答案:B
页大小为2^{10}B,页表项大小为2B,因此一页可以存放2^{9}个页表项,逻辑地址空间大小为2^{16}页,即共需2^16个页表项,因此需要2^{16}/2^{9}=2^{7}=128个页面保存页表项,即页目录表中包含表项的个数至少是128。

P1562
答案:C

编译后的程序需要经过链接才能装载,而链接后形成的目标程序中的地址也就是逻辑地址。

P1563

答案:C
无论采用什么页面置换算法,每种页面第一次访问时不可能在内存中,必然发生缺页,所以缺页次数大于等于n。

P1564

答案:D
虚拟存储器的最大容量是由计算机的地址结构决定的,与主存容量和外存容量没有必然的联系,其虚拟地址空间为2^{32}B。

P1565

答案:B
虽然从实际使用来说,虚拟存储器能使得进程的可用内存扩大到内外存容量之和,但进程的内存寻址仍由计算机的地址结构决定,这就决定了虚拟存储器理论上的最大容量。比如,64位系统环境下,虚拟内存技术使得进程可用内存空间达2^{64}B,但外存显然是达不到这个大小的。

P1566
答案:A

页表项中的合法位信息显示本页面是否在内存中,即决定了是否会发生页面故障。

P1567
答案:D

抖动是进程的页面置换过程中,频繁的页面调度(缺页中断)行为,所有的页面调度策略都不可能完全避免抖动。

P1568
答案:B

请求分页存储管理就是为了解决内存容量不足而使用的方法,它基于局部性原理实现了以时间换取空间的目的。它的主要特点自然是间接扩充了内存。

P1569

答案:C
计算机系统中,为了提高系统的存取速度,在地址映射机制中增加一个小容量的硬件部件——快表(又称相关联存储器TLB),用来存放当前访问最频繁的少数活动页面的页号。快表查找内存块的物理地址消耗的时间大大降低,使得系统效率得到很大提高。

P1570

答案:C
页面大小为4KB,因此页内偏移为12位。系统采用48位虚拟地址,因此虚页号48-12=36位。采用多级页表时,最高级页表项不能超出一页大小;每页能容纳的页表项数为4KB/8B=512=2^{9},36/9=4,因此应采用4级页表,最高级页表项正好占据一页空间,所以本题选择C。

 

P1571

答案:B
FIFO算法可能产生Belady现象,例如页面走向为1,2,3,4,1,2,5,1,2,3,4,5时,当分配3帧时产生9次缺页中断,分配4帧时产生10次缺页中断,Ⅰ正确。

最近最少使用法不会产生Belady现象,Ⅱ错误。

若页面在内存中,则不会产生缺页中断,即不会出现页面的调入/调出,而不是虚拟存储器(包括作为虚拟内存那部分硬盘),故Ⅲ错误、Ⅳ正确。

P1572

答案:D
用于交换空间的磁盘利用率已达97.7%,其他设备的利用率为5%,CPU的利用率为20%,说明在任务作业不多的情况下交换操作非常频繁,因此判断物理内存严重短缺。

P1573

操作系统是管理系统软硬件资源的最基本的系统软件,他可以为用户使用计算机提供友好的接口
主要功能:
1、进程管理。主要是对处理机进行管理。
2、存储管理。主要是对内存的分配、保护和扩充。
3、设备管理。对所有输人、输出设备的管理。
4、文件管理。主要涉及文件的逻辑组织和物理组织,目录的结构和管理。
5、作业管理。为用户提供一个友好的环境,方便用户组织自己的工作流程。
主要特征:
并发性:指两个或多个事件在同一时间间隔内发生;(并行性:在同一时刻…)
共享性:系统中的资源可供内存中多个并发执行的进程共同使用;
虚拟性:把一个物理上的实体变成若干个逻辑上的对应物; 异步性:进程的执行并不是一气呵成的,而是以不可预知的速度向前推进.
 

P1574

进程定义:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的基本单位.   
线程定义:线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源。

关系:一个程序至少有一个进程,一个进程至少有一个线程。

区别:
从粒度性分析:线程粒度小于进程
从健壮性分析:一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些.
从开销分析: 线程开销小,但不利于资源的管理和保护;进程与之相反。
 

P1575

1.虚拟内存: 最适合用来管理大型对象或者结构数组
2.内存映射文件: 最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行多个进程之间共享数据
3.内存堆栈: 最适合用来管理大量的小对象

P1576

程序轮询是一种效率较低的方式,现代计算机系统中已很少应用。等待时间很长,CPU利用率不高;
中断容易遗漏一些问题,CPU利用率高。

P1577

临界资源: 并发进程访问的那一段的资源。
临界区:每个进程中访问临界资源的那段程序称为临界区,每次只准许一个进程进入临界区,进入后不允许其他进程进入。如果有若干个进程要求进入空闲的临界区,一次仅允许一个进程进入。且其他试图进入临界区的进程必须等待。进入临界区的进程要在有限时间内退出,以便其他进程能及时进入自己的临界区。如果不能进入自己的临界区,就应该让出CPU,避免进程出现忙等现象。

P1578

页是信息的物理单位,分页是为了减少内存的外零头,提高内存的利用率。这是便于系统管理的需要,而不是用户的需要。

段是信息的逻辑单位,它含有一组其意义相对完整的信息。便于用户的需要

P1579

1.管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在有血缘关系的进程间使用,进程的血缘关系通常是指父子进程关系。
2.命名管道:也是半双工的通信方式,但是它允许无亲缘关系关系进程间通信。
3.信号:是一种比较复杂的通信方式,用于通知接收进程某一事件已经发生。
4.信号量:信号量是一个计数器,可用来控制多个进程对共享资源的访问。它通常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。
5.消息队列:消息队列是由消息组成的链表,存放在内核中,并由消息队列标识符标识。
6.共享内存:就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问,它是针对其他进程间的通信方式运行效率低而专门设计的。
7.套接字:套接口也是进程间的通信机制,与其他通信机制不同的是它可用于不同及其间的进程通信。

P1580

1.锁机制:(互斥锁、条件变量、读写锁)  

  • 互斥锁提供了以排他方式防止数据结构被并发修改的方法。  
  • 读写锁允许多个线程同时读共享数据,而对写操作是互斥的。  
  • 条件变量可以以原子的方式进行阻塞进程,直到某个特定条件为真为止。

2.信号量机制:包括无名信号量和命名线程信号量
3.信号机制:类似进程间的信号处理

P1581

死锁的概念:在2个或多个并发进程中,如果每个进程持有某有资源而又都等待别的进程释放它或他们现在保持的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗地讲,就是2个或多个进程被无限期地阻塞、相互等待的一种状态。

死锁产生的原因:系统对于不可剥夺的资源不合理分配

死锁产生的条件:( 只要下述一个条件不成立,就不会发生死锁。)
  1.互斥条件:一个资源每次只能被一个进程使用
  2.不可剥夺条件:进程已获得资源,在未使用完之前,不能被其他进程强行剥夺,只能主动释放
  3.请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
  4.循环等待条件:即进程集合{p0,p1,p2,p3……pn};p0正在等待p1占用的资源,p1正在等待p2占用的资源,pn正在等待p0占用的资源。

避免死锁的四种方法:

死锁预防:破坏死锁的四个必要条件中的一个或几个,来预防死锁的发生;
死锁避免:将系统分为安全和不安全状态,每当系统为进程分配资源时都要检测系统是否会进入不安全状态,若会,则停止分配,进入等待状态;
死锁检测:若不加任何限制措施,系统可在为进程分配资源的同时,记录下来进程的请求和分配信息,然后按某种算法计算系统是否会发生死锁;
死锁解除:系统发生死锁时通常采用撤销进程或剥夺进程资源的方法使系统解除死锁。

P1582

互斥:指某一个资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的
同步:是指在互斥的基础上(大多数情况下),通过其它机制实现访问者对资源的有序访问。大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源。
同步:体现的是一种协作性。互斥:体现的是排它性。
进程同步的主要任务:是对多个相关进程在执行次序上进行协调,以使并发执行的诸进程之间能有效地共享资源和相互合作。从而使程序的执行具有可再现性。
同步机制遵循的原则:
 1.空闲让进;
 2.忙则等待;
 3.有限等待;
 4.让权等待;

P1583

线程同步是指多个线程同时访问某资源时,采用一系列的机制以保证最多只能一个线程访问该资源。线程同步是多线程中必须考虑和解决的问题,以为很有可能发生多个线程同时访问(主要是写操作)同一资源,如果不进行线程同步,很可能会引起数据混乱,造成线程死锁等问题。

线程同步的方式:临界区、互斥量、信号量、信号   
临界区:通过对多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问。
互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会同时被多个线程访问。
信号量:它允许多个线程同一时刻访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目。信号量对象与其他前面几种方法不同,信号允许多个线程同时使用共享资源。
信号:通过通知操作的方式来保持多线程的同步,还可以方便实现多线程的优先级比较操作。

P1584

1.先来先服务(FCFS):此算法的原则是按照作业到达后备作业队列(或进程进入就绪队列)的先后次序选择作业(或进程)
2.短作业优先(SJF:Shortest Process First):这种算法主要用于作业调度,它从作业后备序列中挑选所需运行时间最短的作业进入主存运行。
3.时间片轮转调度算法:当某个进程执行的时间片用完时,调度程序便终止该进程的执行,并将它送到就绪队列的末尾,等待分配下一时间片再执行。然后把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证队列中的所有进程,在已给定的时间内,均能获得一时间片处理机执行时间。
4.高响应比优先:按照高响应比(已等待时间+要求运行时间)/要求运行时间 优先的原则,在每次选择作业投入运行时,先计算此时后备作业队列中每个作业的响应比RP。选择最大的作业投入运行。
5.优先权调度算法:按照进程的优先权大小来调度。使高优先权进程得到优先处理的调度策略称为优先权调度算法。注意:优先数越多,优先权越小。
6.多级队列调度算法:多队列调度是根据作业的性质和类型的不同,将就绪队列再分为若干个队列,所有的作业(进程)按其性质排入相应的队列中,而不同的就绪队列采用不同的调度算法。
 

P1585

进程和程序是既有联系又有区别。
主要区别:
1.程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态概念。
2.程序的存在是永久的,而进程则是有生命的,它因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。
3.程序仅是指令的有序集合。而进程则是由程序、数据和进程控制块组成。
4.进程与程序之间不是一一对应的,一个进程可以执行多个程序。

P1586

安全状态是指系统按照某种进程顺序,为进程分配资源,使得每个进程都能获取所需的最大资源,并顺利完成。

不是,但是死锁状态一定是不安全状态。

P1587

就是采用一定的方法将一定的外存容量模拟成内存,同时对程序进出内存的方式进行管理,从而得到一个比实际内存容量大得多的内存空间,使得程序的运行不受内存大小的限制。

特征:
多次性:作业无须一次调入,允许分多次调入内存;
对换性:作业在运行过程中无须常驻内存,可以根据需要进行换入换出;
虚拟性:从逻辑上扩充内存容量。

P1588

【答案】C

P1589

文件目录,又称文件控制块,存储的是文件的管理信息,控制对象是单个文件;
目录文件,存储的是若干个文件目录,控制对象是整个文件系统; 目前广泛采用的树形目录结构,优点是:允许文件重命名,实现了文件分类。

P1590

系统调用是操作系统与应用程序之间的接口,它是用户程序间接操作计算机资源的唯一途径。
一般过程调用工作在用户态,可以无限制嵌套调用; 系统调用运行在核心态,不可以嵌套调用。

P1591

设备独立性是指用户程序独立于所使用的具体设备。 实现方式是系统为每个用户进程配置一张用于联系逻辑设备名和物理设备名的映射表,以实现使用逻辑设备名来请求物理设备。

P1592

DMA方式是指内存与外设只需要在DMA控制器的控制下进行数据传输,而不需要进行CPU的干预。 与中断方式的主要区别是:
1.中断方式在每个数据需要传输时都需要中断CPU,而DMA方式是在所要求传送的一批数据全部传送完毕时才中断CPU;
2.中断方式中数据传输是由CPU控制完成的,而DMA方式中数据传输是在DMA控制器控制下完成的。

P1593

主要区别:
1、范围不同:
一般中断只需要保护现场,然后就直接跳到需及时处理的地方。
缺页中断除了保护现场之外,还要判断内存中是否有足够的空间,然后再把所需页调进来再使用。
2、次数不同
在指令执行期间产生和处理缺页中断信号,一条指令在执行期间,可能产生多次缺页中断。
一般中断只产生一次,发生中断指令后转入相应处理程序进行处理,恢复被中断程序现场。

P1594

至少需要在系统中增设一个重定位寄存器,用来存放正在执行作业的内存地址,每次访问数据时,由硬件自动将相对地址与重定位寄存器中的起始地址相加,形成实际的物理地址。

P1595

 不剥夺并不是一个好的策略。因为除了交互性以外,及时性是很重要的性能因素。当一个作业被阻塞后,CPU就完全空闲了,别的用户的及时性就无法保证了,而完全可以把这些时间分配给别的作业运行。以提高整体的吞吐量。

P1596

采用可变分区方式管理时,一般均采用动态重定位方式装入作业; 地址变换要靠硬件支持,主要是两个寄存器:基址寄存器和限长寄存器,这两个值确定了一个分区的位置和大小; 限长寄存器存放作业所占分区的长度;
基址寄存器则存放作业所占分区的起始地址;
地址转换时:根据逻辑地址与限长值比较,如果不有超过这个值,表示访问地址合法,再加上基址寄存器中的值就得到了绝对地址了,否则形成“地址越界”中断。

P1597

大多数操作系统都有个空闲任务,它是一个特殊的任务。仅当CPU无事可做的时候由操作系统调度器载入它。HLT停机指令使处理器处于暂时停机状态.而空闲任务几乎总是由一个重复执行HLT停机指令的循环组成。

P1598

1、最佳置换算法(Optimal):即选择那些长时间不使用的,或者是在最长时间内不再被访问的页面置换出去。(它是一种理想化的算法,性能最好,但在实际上难于实现)。

2、先进先出置换算法FIFO:该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。

3、最近最久未使用置换算法LRU(Least Recently
Used):该算法是选择最近最久未使用的页面予以淘汰,系统在每个页面设置一个访问字段,用以记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面。

4、Clock置换算法:也叫最近未用算法NRU(Not
RecentlyUsed)。该算法为每个页面设置一位访问位,将内存中的所有页面都通过链接指针链成一个循环队列。当某页被访问时,其访问位置“1”。在选择一页淘汰时,就检查其访问位,如果是“0”,就选择该页换出;若为“1”,则重新置为“0”,暂不换出该页,在循环队列中检查下一个页面,直到访问位为“0”的页面为止。
5、最少使用置换算法LFU:该算法选择最近时期使用最少的页面作为淘汰页。

P1599

缓冲与cache操作的对象就不一样。 缓冲(buffer)是为了提高内存和硬盘或其他I/0设备之间的数据交换的速度而设计的。 cache(缓存)是为了提高cpu和内存之间的数据交换速度而设计。
cpu在执行程序所用的指令和读数据都是针对内存的也就是从内存中取得的。由于内存读写速度慢,为了提高cpu和内存之间数据交换的速度,在cpu和内存之间增加了cache,它的速度比内存快,所以把这块内容放入cache后cpu就不用在访问内存了这就提高了访问速度。当然若cache中没有cpu所需要的内容还是要访问内存的。
缓冲是根据磁盘的读写设计的把分散的写操作集中进行减少磁 盘碎片和硬盘的反复寻道从而提高系统性能。
简单来说缓冲是即将要被写入磁盘的而cache是被从磁盘中读出来的。 缓冲是由各种进程分配的被用在如输入队列等方面。
两者都加快了系统的反应速度

P1600

银行家算法(Banker’s Algorithm)是一个避免死锁(Deadlock)的著名算法。它以银行借贷系统的分配策略为基础,判断并保证系统的安全运行。
  在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。银行家在客户申请的贷款数量不超过自己拥有的最大值时,都应尽量满足客户的需要。在这样的描述中,银行家就好比操作系统,资金就是资源,客户就相当于要申请资源的进程。
  银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源,但系统在进行资源分配之前,应先计算此次分配资源的安全性,若分配不会导致系统进入不安全状态,则分配,否则等待。为实现银行家算法,系统必须设置若干数据结构
 

P1601

【答案】D

P1602

【答案】D

P1603

【答案】C

P1604

【答案】C

P1605

【答案】C

P1606

【答案】B

P1607

【答案】D

P1608

【答案】D

P1609

【答案】C

P1610

【答案】B

P1611

【答案】B

P1612

【答案】C

P1613

【答案】C

P1614

【答案】D

P1615

【答案】B

P1616

【答案】C

P1617

【答案】D

P1618

【答案】C

P1619

【答案】C

P1620

【答案】B

P1621

【答案】A

P1622

【答案】B

P1623

【答案】D

P1624

【答案】D

P1625

【答案】A

P1626

【答案】A

P1627

【答案】A

P1628

【答案】D

P1629

【答案】B

P1630

【答案】C

P1631

【答案】B

P1632

【答案】D

P1633

【答案】D

P1634

【答案】B

P1635

【答案】A

P1636

【答案】D

P1637

【答案】A

P1638

【答案】B

P1639

【答案】B

P1640

【答案】C

P1641

【答案】D

P1642

C

P1643

【答案】A

P1644

【答案】D

P1645

【答案】C

P1646

【答案】D

P1647

【答案】D

P1648

【答案】A

P1649

【答案】B

P1650

【答案】D

P1651

【答案】D

P1652

【答案】C

P1653

【答案】D

P1654

【答案】A

P1655

【答案】B

P1656

【答案】C

P1657

【答案】D

P1658

【答案】A

P1659

【答案】A

P1660

【答案】B

P1661

【答案】B

P1662

【答案】C

P1663

【答案】B

P1664

【答案】C

P1665

【答案】D

P1666

【答案】A

P1667

【答案】D

P1668

【答案】D

P1669

【答案】C

P1670

【答案】A

P1671

【答案】A

P1672

【答案】D

P1673

【答案】B

P1674

【答案】B

P1675

【答案】A

P1676

【答案】D

P1677

【答案】C

P1678

【答案】B

P1679

【答案】D

P1680

【答案】C

P1681

【答案】D

P1682

【答案】B

P1683

【答案】B

P1684

【答案】D

P1685

【答案】A

P1686

【答案】B

P1687

【答案】D

P1688

【答案】C

P1689

【答案】D

P1690

【答案】C

P1691

【答案】D

P1692

【答案】A

P1693

【答案】B

P1694

【答案】D

P1695

【答案】B

P1696

【答案】A

P1697

【答案】B

P1698

【答案】D

P1699

【答案】D

P1700

【答案】A

P1701

【答案】D

P1702

【答案】A

P1703

【答案】D

P1704

【答案】D

P1705

【答案】D

P1706

【答案】D

P1707

【答案】D

P1708

【答案】A

P1709

【答案】D

P1710

【答案】B

P1711

【答案】A

P1712

【答案】D

P1713

【答案】A

P1714

【答案】B

P1715

【答案】B

P1716

【答案】C

P1717

【答案】A

考查系统调用的设备标识。
用户程序对 I/O 设备的请求采用逻辑设备名,而在程序实际执行时使用物理设备名。
P1718

【答案】A

P1719

【答案】A

P1720

【答案】C

P1721

【答案】D

P1722

【答案】D

P1723

【答案】C

P1724

【答案】C

P1725

【答案】C

P1726

【答案】D

P1727

【答案】B

P1728

【答案】B

P1729

【答案】A

P1730

【答案】C

P1731

【答案】D

P1732

【答案】D

P1733

【答案】A

P1734

【答案】D

P1735

【答案】D

P1736

【答案】D

P1737

【答案】C

P1738

【答案】B

P1739

【答案】D

P1740

【答案】B

P1741

【答案】D

P1742

【答案】C

P1743

【答案】B

P1744

【答案】C

P1745

【答案】D

P1746

【答案】C

P1747

【答案】D

P1748

【答案】C

P1749

【答案】A

P1750

【答案】A

P1751

【答案】C

P1752
考查几种基本的调度算法概念。
高响应比优先调度算法,同时考虑每个进程的等待时间和需要的执行时间,从中选出响应比最高的进程投入执行。响应比R定义如下:
响应比R = (等待时间+执行时间) / 执行时间
P1753

A

考查分区分配存储管理方式的保护措施。
分区分配存储管理方式的保护措施是设置界地址寄存器。每个进程都有自己独立的进程空间,如果 一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界,即当程序要访问某个内存单元时, 由硬件检查是否允许,如果允许则执行,否则产生地址越界中断,由操作系统进行相应处理。
P1754

C

考查分段存储管理系统。
段地址为 32 位二进制数,其中 8 位表示段号,则段内位移占用 32-8=24 位二进制数,故最大段长
为 2^24字节。
P1755

A

考查磁盘的调度算法。
类似于电梯调度的思想。首先,磁头选择与当前磁头所在磁道距离最近的请求作为首次服务的对象(110),当磁头沿途相应访问请求序列直到达到一端末(110,170,180,195),再反向移动响应另一端的访问请求(68,45,35,12)。
P1756

A

考查文件控制块的内容。
在文件控制块中,通常含有以下 3 类信息,即基本信息、存取控制信息及使用信息。
P1757

B

考查软/硬链接建立的属性。
建立符号链接(软链接)时,引用计数值直接复制;建立硬链接时,引用计数值加 1。删除文件时, 删除操作对于符号链接是不可见的,这并不影响文件系统,当以后再通过符号链接访问时,发现文件不 存在,直接删除符号链接;但是对于硬链接则不可以直接删除,引用计数值减 1,若值不为 0,则不能删除此文件,因为还有其它硬链接指向此文件。
P1758
解答:
定义信号量 odd 控制 P1 与 P2 之间的同步;even 控制 P1 与 P3 之间的同步;empty 控制生产者与消费者之
间的同步;mutex 控制进程间互斥使用缓冲区。程序如下:
semaphore odd = 0, even = 0, empty = N, mutex = 1;
P1( )
{
  x = produce();
  ∥生成一个数
  P(empty);
  ∥判断缓冲区是否有空单元
  P(mutex);
  ∥缓冲区是否被占用
  Put();
  V(mutex);
  ∥释放缓冲区
  if(x%2 == 0)
    V(even);
    ∥如果是偶数,向 P3 发出信号
  else
    V(odd);
    ∥如果是奇数,向 P2 发出信号
  }
P2( )
{
  P(odd);
  ∥收到 P1 发来的信号,已产生一个奇数
  P(mutex);
  ∥缓冲区是否被占用
  getodd();
  V(mutex);
  ∥释放缓冲区
  V(empty);
  ∥向 P1 发信号,多出一个空单元
  countodd();
}
P3( )
{
  P(even);
  ∥收到 P1 发来的信号,已产生一个偶数
  P(mutext);
  ∥缓冲区是否被占用
  geteven();
  V(mutex);
  ∥释放缓冲区
  V(empty);
  ∥向 P1 发信号,多出一个空单元
  counteven();
}

 

P1759
解答:
(1) 根据页式管理的工作原理,应先考虑页面大小,以便将页号和页内位移分解出来。页面大小为 4KB,即 2^12,则得到页内位移占虚地址的低 12 位,页号占剩余高位。可得三个虚地址的页号 P 如下(十六进制的一位数字转换成 4 位二进制,因此,十六进制的低三位正好为页内位移,最高位为页号):2362H:P=2,访问快表 10ns,因初始为空,访问页表 100ns 得到页框号,合成物理地址后访问主存 100ns,共计 10ns+100ns+100ns=210ns。
1565H:P=1,访问快表 10ns,落空,访问页表 100ns 落空,进行缺页中断处理 10^8 ns,访问快表 10ns,合成物理地址后访问主存 100ns,共计 10ns+100ns+10^8 ns+10ns+100ns=100 000 220ns。
25A5H:P=2,访问快表,因第一次访问已将该页号放入快表,因此花费 10ns 便可合成物理地址,访问主存 100ns,共计 10ns+100ns=110ns。
(2) 当访问虚地址 1565H 时,产生缺页中断,合法驻留集为 2,必须从页表中淘汰一个页面,根据题目的置换算法,应淘汰 0 号页面,因此 1565H 的对应页框号为 101H。由此可得 1565H 的物理地址为 101565H。
P1760

解答:

微内核是提供操作系统核心功能的内核的精简版本,它设计成在很小的内存空间内增加移植性,提供模块化设计,以使用户安装不同的接口。

微内核操作系统的优点:

①提高了系统的可扩展性。

②增强了系统的可靠性。

③可移植性强。

④提供了对分布式系统的支持

⑤融入了面相对象的技术。

I错误。微内核操作系统相比宏内核操作系统运行效率有所降低。在微内核操作系统中,因为客户和服务器、服务器和服务器直接的通信都需要通过微内核,所以在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的切换。

Ⅱ正确。微内核操作系统的设计理念是将核心操作系统功能限制在最小的内核中,将其他功能模块以外部服务的形式运行在用户态。这种设计使得操作系统核心更小、更简单,减少了代码复杂度和错误产生的可能性,从而提高了系统的可靠性。

Ⅲ正确。微内核操作系统通过将功能划分为不同的服务来实现,这些服务以独立的地址空间运行,彼此之间隔离,因此相对较容易实现安全性控制。由于核心内核非常简单,少量的核心代码意味着较少的漏洞和攻击面,从而提高了系统的安全性。

Ⅳ正确。微内核操作系统的设计使得各个功能模块以外部服务的形式存在,可以动态地加载和卸载这些服务模块,从而实现系统的灵活可扩展性。新的功能可以以插件或模块的形式添加,而不需要修改核心内核,这样可以减少对系统其他模块的影响,提高了系统的可扩展性。

综上,Ⅱ、Ⅲ、Ⅳ正确。

本题选D。

P1761

解答:

中断向量表是用于存储中断处理程序入口地址的数据结构。中断向量表的索引对应着中断类型号或中断向量号,而其中存储的值是对应中断类型的处理程序的入口地址。

使用数组作为中断向量表的数据结构有以下几个优点:

①快速访问:数组通过索引可以直接定位到对应位置的中断处理程序入口地址,具有常量时间复杂度的访问性能。这是因为中断类型号或中断向量号是连续的整数,可以通过简单的计算得到对应的数组下标。

②紧凑存储:由于中断类型号或中断向量号是连续的整数,使用数组可以直接按照顺序将中断处理程序的入口地址存储在连续的内存空间中,这样可以节省内存空间。

因此,中断向量表适合采用数组作为数据结构。

四个选项中也只有选项A支持随机访问。

本题选A。

P1762

解答:

因为物理内存大小为16 GB,页大小为4 KB,页框大小与页大小相等,页框数量最大为16 GB/4 KB = 2^22 。因为采用位图法,每个页框状态只需要1个比特位表示,所以位图所占的空间大小为 2^22 ×1 bit = 512 KB。

本题选C。

P1763

解答:

A错误。阻塞过程完成时,某进程从运行态进入阻塞态。

B错误。执行 CPU 调度完成时,某进行从就绪态进入运行态。

C错误。在操作系统中,当一个进程发起某种需要等待的操作(如等待I/O操作完成或等待某个信号),它会被标记为睡眠状态,然后被放入等待队列中。当满足等待条件时,操作系统会将进程从等待队列中唤醒,使其重新变为可执行状态。

D正确。当CPU执行系统调用时,会触发从内核态转换到用户态。系统调用是用户程序通过请求操作系统提供的服务或资源的一种机制,当用户程序需要执行特权操作或获取系统资源时,会通过系统调用发出请求。在执行系统调用期间,CPU会从用户态切换到内核态,以便操作系统执行相应的操作。完成系统调用后,CPU将再次切换回用户态,继续执行用户程序。因此,执行系统调用是导致CPU从内核态转换到用户态的操作。

本题选D。

P1764

解答:

A错误。发生键盘输入后,该线程可能需要等待键盘输入完成,说明该线程不具有执行所需的所有系统资源,进入阻塞态。

B错误。发生缺页异常后,该线程可能需要等待缺页处理程序处理完成,说明该线程不具有执行所需的所有系统资源,进入阻塞态。

C正确。该线程主动出让CPU后,不再不占用CPU,进入就绪态。

D错误。该线程执行信号量的wait()操作,说明该线程不具有执行所需的所有系统资源,如果信号量条件不满足,则进入阻塞态。

本题选C。

P1765

解答:

A正确。每个进程在运行时都被分配了独立的虚拟地址空间。

B正确。C语言中malloc()函数用于动态内存分配,返回的是一个指向分配内存的虚拟地址。

C正确。操作系统可以对进程的不同部分设置不同的权限,例如只读、可读写等。

D错误。虚拟地址空间的大小由操作系统决定。计算机系统一般按字节编址,32位操作系统的虚拟地址空间的大小为 2^32B=4GB ,64位操作系统的虚拟地址空间大小为 2^64B 。

本题选D。

P1766

解答:

按时间序列进程分析:

0ms时刻,只有P1进入就绪队列,开始运行P0。

20ms时刻,P2进入就绪队列,P1运行了20ms-0ms=20ms,其CPU执行时间为60ms,剩余CPU执行时间为60ms-20ms=40ms。就绪队列中存在P1和P2两个进程。系统采用基于优先权的抢占式进程调度算法,P2优先级值比P1优先级值大,值越大优先权越高,P2抢占执行。

30ms时刻,P3进入就绪队列,P2运行了30ms-20ms=10ms,其CPU执行时间为42ms,剩余CPU执行时间为42ms-10ms=32ms。就绪队列中存在P1、P2、P3三个进程,此时所有进程都以就绪,系统采用基于优先权的抢占式进程调度算法,值越大优先权越高,优先级值从大到小依次为P3、P2、P1,此时P3抢占执行。

30ms+13ms=43ms时刻,P3执行完毕,P2执行。

43ms+32ms=75ms时刻,P2执行完毕,P1执行。

75ms+40ms=115ms时刻,P1执行完毕,此时所有进程均已执行完毕。

进程周转时间 = 进程完成时刻-进程进入就绪队列的时刻。

P1周转时间 = P1进程完成时刻-P1进程进入就绪队列的时刻 = 115ms-0ms = 115ms;

P2周转时间 = P2进程完成时刻-P2进程进入就绪队列的时刻 = 75ms-20ms = 55ms;

P3周转时间 = P3进程完成时刻-P3进程进入就绪队列的时刻 = 43ms-30ms = 13ms;

P1、P2和P3的平均周转时间 = (P1周转时间 + P2周转时间 + P3周转时间)/3 = 61ms。

本题选B。

P1767

解答:

每个进程的虚拟地址空间是独立的,它们使用的页号是相对于各自的地址空间的。对于进程 R 和 S 共享的数据 data,可能位于不同的页面中,因此其对应的页号 p1 和 p2 不一定相等。

一段数据物理地址空间是确定的,对应的起始页框号是唯一的。对于进程 R 和 S 共享的数据 data,位于同一个页框中,因此两个页所对应的页框号分别为 f1 和 f2 一定相等。

本题选C。

P1768

解答:

索引节点是文件系统中用来记录文件的元数据的数据结构,包括索引节点编号、文件大小、访问权限、修改日期、数据的位置等。索引节点和文件一一对应,它跟文件内容一样会被持久化到磁盘,所以,索引节点同样占磁盘。

链接计数是文件系统用于统计一个文件被引用的次数,每当有一个进程打开该文件时,链接计数就会加1。当进程关闭文件时,文件系统会相应地将链接计数减1。当链接计数减到0时,表示没有任何进程打开该文件了,文件系统可以将其相关的资源进行释放。

A错误。进程P可以通过目录中文件F的目录项再次访问文件F,暂时不能删除。

B正确。由于初始时文件F仅被进程P打开并访问,索引节点中的链接计数为1。当进程P关闭文件F时,文件系统需要完成的操作是将文件内存索引节点中的链接计数减1,此时索引节点中的链接计数减1后为0,表示没有任何进程打开该文件了,文件系统可以将其相关的资源进行释放,包括文件F的索引节点所占的内存空间,文件F的所占的内存空间。

C错误。题目要求关闭文件F,没有要求删除文件F。只有执行删除文件F,文件磁盘索引节点中的链接计数减1,当磁盘索引节点引用计数为0的时候,会释放F的索引节点所占的外存空间,如果该索引节点为硬链接的索引节点,那么还需要释放文件F指向的文件实体所占的外存空间。当释放F的索引节点所占的外存空间后,该索引节点不复存在,也就无法在外存中通过该索引节点访问文件F。

D错误。题目要求关闭文件F,没有要求删除文件F,磁盘索引节点计数中的链接计数不受影响。

本题选B。

P1769

解答:

Ⅰ正确。设备分配需要考虑设备的类型。不同类型的设备有不同的特性和操作方式,因此在进行设备分配时需要根据设备的类型进行相应的处理。

Ⅱ正确。设备分配需要考虑设备的访问权限。某些设备可能需要受限制地访问,只允许特定的进程或用户进行访问,而其他进程或用户则被禁止访问。

Ⅲ正确。设备分配时需要考虑设备的占用状态。如果设备已经被其他进程或用户占用,那么在进行设备分配时就需要进行相应的冲突检测和资源管理,以确保设备的正确分配和互斥使用。

Ⅳ正确。设备分配涉及到逻辑设备与物理设备的映射关系。在计算机系统中,逻辑设备是通过操作系统层面进行管理的,而物理设备则是实际的硬件设备。设备分配需要建立逻辑设备与物理设备之间的映射关系,以便进行设备的访问和控制。

综上所述,设备分配需要考虑Ⅰ、Ⅱ、Ⅲ、Ⅳ。

本题选D。

P1770

解答:

本题问题(1)考察Swap指令的应用,问题(2)考察Swap指令用硬件逻辑实现的原因。

假设线程T0和T1均要访问临界区,伪代码如下:

bool lock = FALSE;    // 共享变量
...
void T0() {
    bool key = TRUE;
    if (key == TRUE)
        swap key, lock;    // 交换key和lock的值
    临界区;
    lock = TRUE;
    ...
}
void T1() {
    bool key = TRUE;
    if (key == TRUE)
        swap key, lock;    // 交换key和lock的值
    临界区;
    lock = TRUE;
    ...
}

(1) 按照上述伪代码执行,发现线程T1和T2均能够进入临界区,无法实现互斥访问临界区。

执行“swap key, lock;”后,key为FALSE,lock为TRUE,lock为TRUE满足进入临界区前上锁条件,key为FALSE可以进入临界区,所以key为TRUE应该起到拦截效果,同时为了进入临界区,需要进行轮询。所以第一处修改如下:

①进入区中的语句“if (key == TRUE) swap key, lock;”存在错误,修改为“while (key == TRUE) swap key, lock;”。

此外,退出临界区后需要进行解锁,否则其他线程无法访问临界区。所以第二处修改如下:

②退出区中的语句“lock = TRUE;”存在错误,修改为“lock = FALSE;”。

修改后如下线程T0和T1访问临界区的伪代码如下:

bool lock = FALSE;    // 共享变量
...
void T0() {
    bool key = TRUE;
    while (key == TRUE)
        swap key, lock;    // 交换key和lock的值
    临界区;
    lock = FALSE;
    ...
}
void T1() {
    bool key = TRUE;
    while (key == TRUE)
        swap key, lock;    // 交换key和lock的值
    临界区;
    lock = FALSE;
    ...
}

实现了多线程互斥访问临界区。

(2) 第一问。否。

第二问。Swap指令为原子操作。但用函数调用语句“newSwap(&key, &lock)”代替指令“swap key, lock”后,因为多个线程可以并发执行newSwap(),newSwap()执行时传递给形参b的是共享变量lock的地址,在newSwap()中对lock既有读操作又有写操作,并发执行时不能保证实现两个变量值的原子交换,从而会导致并发执行的线程同时进入临界区。

将newSwap代替swap后,修正后的线程T0和T1访问临界区的伪代码如下:

bool lock = FALSE;    // 共享变量
...
void T0() {
    bool key = TRUE;
    while (key == TRUE) {
        bool temp = key;   ①
        key = lock;        ②
        lock = temp;       ③
    }
    临界区;
    lock = FALSE;
    ...
}
void T1() {
    bool key = TRUE;
    while (key == TRUE) {
        bool temp = key;   ④
        key = lock;        ⑤
        lock = temp;       ⑥
    }
    临界区;
    lock = FALSE;
    ...
}

例如按照①②④⑤③⑥的顺序执行,则T0和T1能够同时进入临界区,进而产生冲突。

为了保证Swap指令的原子性,可使用的方案有通过软件加互斥锁实现或者通过硬件逻辑直接实现,相比使用软件加互斥锁实现的方案,通过硬件逻辑直接实现明显更加安全和高效。所以Swap指令是由硬件逻辑直接实现的,不会被中断。

P1771

解答:

(1) 正确的操作顺序如下:

②将进程P插入阻塞队列:由于进程P执行了从键盘接收输入的系统调用(例如执行C语言的scanf()函数),需要等待用户输入完成才能继续执行。因此,进程P会被插入阻塞队列,等待键盘中断处理程序的处理。

⑥用户在键盘上输入字符:用户在键盘上输入字符,键盘控制器会将字符传递给操作系统进行处理。

④启动键盘中断处理程序:当键盘控制器有新的输入字符时,会发出中断信号通知操作系统,启动相应的键盘中断处理程序。

③将字符从键盘控制器读入系统缓冲区:键盘控制器会将用户在键盘上输入的字符读入系统缓冲区,准备供后续处理。

①将进程P插入就绪队列:当键盘中断处理程序完成了对输入字符的处理,并且准备唤醒等待输入的进程时,会将进程P从阻塞队列移动到就绪队列,准备继续执行。

⑤进程P从系统调用返回:当进程P从阻塞队列移到就绪队列后,它会被调度执行。在该过程中,进程P会在系统调用结束后从系统调用返回,继续执行后续的指令。

综上,正确的操作顺序是②、⑥、④、③、①、⑤。

第一问。操作①的前一个操作是③,后一个操作是⑤。

第二问。操作⑥的后一个操作是④。

(2) 第一问。在上述操作中,CPU一定会从进程P切换到其他进程的操作是②将进程P插入阻塞队列。当进程P被插入阻塞队列后,它无法继续执行,因此CPU会在此时切换到其他可执行的进程。

第二问。在上述操作中,CPU调度程序才能选择进程P执行的操作是①将进程P插入就绪队列。当进程P被插入就绪队列后,CPU调度程序可以从就绪队列中选择它来执行。在此之前,进程P处于阻塞状态,不可被调度执行。只有当进程P被插入就绪队列后,CPU调度程序才有机会选择它作为下一个要执行的进程。

(3) 键盘驱动程序负责与硬件键盘进行交互,并将键盘输入的字符传递给操作系统进行处理。在完成键盘输入的过程中,键盘驱动程序会读取键盘控制器的输入,将字符存储到系统缓冲区中,以便其他进程或系统调用可以访问该字符。因此完成上述操作的代码属于键盘驱动程序的操作是③将字符从键盘控制器读入系统缓冲区。

(4) 第一问。当键盘中断处理程序执行时,进程P处于阻塞状态。因为当键盘中断处理程序被触发时,进程P已经执行了系统调用并被插入阻塞队列。该进程暂停执行,等待键盘输入的中断处理程序完成并将其从阻塞队列移动到就绪队列中。只有在进程P从阻塞队列移到就绪队列后,才有机会被CPU调度执行。因此,在键盘中断处理程序执行时,进程P处于阻塞状态或等待状态。

第二问。当键盘中断处理程序被触发时,CPU处于内核态。键盘中断处理程序通常在内核态下执行,因为它需要对硬件进行直接的访问和操作,例如读取键盘控制器、处理键盘输入等。在内核态下执行可以获得更高的权限和对系统资源的直接访问能力,从而快速响应中断并处理相应的操作。

P1772

A正确。多道程序系统可以同时运行多个进程,使它们在系统中并发执行。通过调度算法,系统可以在不同进程之间进行快速切换,实现并发执行。

B正确。在计算机的早期,多道程序系统中CPU一次读取多个程序放入内存,不必支持虚拟存储管理。

C正确。在多道程序系统中,多个进程可能同时访问和使用共享资源,如内存、文件系统、设备等。为了避免冲突和资源竞争,操作系统需要实现对共享资源的管理,例如使用锁机制或信号量等机制来协调进程对共享资源的访问。

D不正确。进程数越多,由于竞争CPU的资源,实际上可能降低CPU利用率。

本题选D。

P1773

A正确。中断向量表是用于处理各种硬件中断和异常的数据结构。在操作系统初始化过程中,需要创建中断向量表并初始化其中的中断向量。中断向量表将每个中断的唯一编号映射到相应的中断处理程序地址,以便在发生对应的中断或异常时,能够正确地进行处理。

B错误。文件系统的根目录是文件系统的最顶层目录,包含着文件和子目录的层次结构。根目录通常是在文件系统格式化或创建的过程中创建的,而不是在操作系统初始化过程中创建。操作系统初始化时可能会加载和初始化文件系统,但根目录本身通常是在文件系统创建过程中创建的。

C错误。硬盘分区表是记录硬盘上分区信息的数据结构,用于标识硬盘上的分区位置和大小,并记录每个分区的起始扇区和类型等信息。硬盘分区表通常是在磁盘分区或格式化过程中创建的,而不是在操作系统初始化过程中创建。

D错误。文件系统的索引节点表是记录文件元数据和索引信息的数据结构,用于记录文件的属性(如权限、大小、创建时间等)以及文件数据在存储设备上的位置,以实现对文件的管理和访问控制。索引节点表通常是在文件系统格式化或创建的过程中创建的,并在操作系统初始化时加载和初始化。

本题选A。

P1774

按时间序列进程分析:

  1. 0ms时刻,只有P0进入就绪队列,开始运行P0。
  2. 10ms时刻,P1、P2进入就绪队列,P0运行了10ms-0ms=10ms,其CPU执行时间为100ms,剩余CPU执行时间为100ms-10ms=90ms。就绪队列中存在P0、P1、P2三个进程。系统采用基于优先权的抢占式进程调度算法,三个进程中P2的优先级值最小,值越小优先权越高,P2抢占执行。
  3. 15ms时刻,P3进入就绪队列,P2运行了15ms-10ms=5ms,其CPU执行时间为20ms,剩余CPU执行时间为20ms-5ms=15ms。就绪队列中存在P0、P1、P2、P3四个进程,此时所有进程都以就绪,系统采用基于优先权的抢占式进程调度算法,值越小优先权越高,优先级值从小到大依次为P3、P2、P0、P1,此时P3抢占执行。

综上,从0ms开始到4个进程都运行结束为止,进程执行序列为P0、P2、P3、P2、P0、P1,发生进程调度的总次数为6。

本题选C。

P1775

使用银行家算法,保证可用资源大于或等于某进行尚需资源,该进程可以输出到序列,并回收该进程已分配资源。若所有进程均可被输出到序列,则存在安全序列,该输出序列为安全序列,否则不存在安全序列。

该时刻可用资源只能满足P0的需求,将资源分配给P0,P0完成后,系统分配资源的情况如表(a)所示,此时可用资源能满足剩余所有进程,即P1和P2。

系统中存在的安全序列的个数为1×2!=2。

本题选B。

P1776

在计算机系统中,CPU有两种运行模式:用户态和内核态(也称特权态)。

用户态是指进程执行在受限的环境下,只能访问自己的地址空间和受限的资源,不能直接访问操作系统核心代码或硬件资源。在用户态下运行的进程执行的指令被称为非特权指令,因为这些指令没有对系统的底层资源进行直接的控制和访问权限。

内核态是指操作系统内核执行在特权模式下,具有对系统的完全控制和访问权限,可以执行特权指令和访问系统的底层资源。在内核态下运行的代码可以执行特权指令,控制系统的运行和访问所有资源。

CPU处于用户态时只能执行非特权指令。CPU处于内核态时即能执行非特权指令也能特权指令。

综上,C正确,A、B和D错误。

本题选C。

P1777

I正确。进程P需要读文件,说明进程P不具有执行所需的所有系统资源,进入阻塞态。

Ⅱ错误。进程P的时间片用完,说明进程P不占用CPU,进入就绪态。

Ⅲ正确。进程P申请外设,说明进程P不具有执行所需的所有系统资源,进入阻塞态。

Ⅳ正确。进程P执行信号量的wait()操作,说明进程P不具有执行所需的所有系统资源,如果信号量条件不满足,进入阻塞态。

综上,仅Ⅰ、Ⅲ、Ⅳ正确。

本题选D。

P1778

缺页异常处理过程是指在访问某个页时,发现该页不在内存中而需要从外存中调入的情况。

A正确。淘汰内存中的页并不是缺页异常处理的必要步骤。淘汰页是在内存空间不足时,为了给新的页腾出空间而选择淘汰一些旧的页。在处理缺页异常时,并不一定需要进行淘汰操作。

B错误。在处理缺页异常时,需要建立页号与页框号之间的对应关系,以便将对应的页调入内存或者进行其他操作。这是确保后续内存访问可以正确映射的步骤,是缺页异常处理过程中一定包含的操作。

C错误。当发生缺页异常时,需要将缺失的页从外存读入到内存中,以满足进程的访问需求。是缺页异常处理过程中一定包含的操作。

D错误。在页表中,通常会使用一位存在位来表示该页是否在内存中,当发生缺页异常处理完成时,需要修改页表中相应页的存在位,将其置为1,表示该页已经调入内存。

本题选A。

P1779

A错误。页面置换算法的选择会直接影响到系统的缺页率。不同的页面置换算法具有不同的策略和性能指标,会对缺页率产生影响。

B错误。工作集是指进程在其过去的t个虚拟执行时间中访问的页的集合。如果工作集较小,可以更容易将常用页面保留在内存中,从而减少缺页率。因此工作集的大小会对缺页率产生影响。

C错误。较多的进程意味着可能会有更多的内存页被占用,如果这些进行被分配的内存有限,则对内存资源的竞争会更加激烈,从而增加了发生页面置换的机会,导致更高的缺页率。

D正确。页缓冲队列是一种用于缓存磁盘上常用页数据的数据结构,通过减少对磁盘的直接访问,提高了系统的IO性能和响应速度。与缺页率无关。

本题选D。

P1780

在x86架构的处理器上,将CPU模式从用户态切换为内核态可以通过系统调用或陷阱来实现。以下是通常的步骤:

  1. 用户程序通过发起系统调用或触发异常,例如访问特权指令或引发保护异常。
  2. CPU接收到异常或中断信号后,会暂停用户态的执行,并保存用户态下的程序状态(如程序计数器、标志寄存器等)。
  3. CPU切换到内核态,并将控制权交给内核。这通常通过将程序计数器指向内核代码的入口地址来实现。
  4. 在内核态下,操作系统可以处理具体的系统调用或异常,并执行相应的内核代码。
  5. 处理完系统调用或异常后,CPU可以将返回值等结果保存在合适的位置。
  6. CPU通过加载用户程序保存的程序状态,将控制权切回用户态,恢复用户程序的执行。

I错误。保存断点和程序状态字由中断隐指令完成。中断隐指令并不是指令系统中的一条真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。

Ⅱ正确。保存通用寄存器的内容由中断服务程序完成。中断服务程序是由操作系统提供和管理的。

Ⅲ正确。当用户程序发起系统调用时,CPU会切换到内核态,进入操作系统指定的系统调用服务程序中。在系统调用服务程序中,操作系统会根据系统调用号和参数来执行相应的操作,并返回结果给用户程序。

IV错误。将CPU模式从用户态改为内核态由硬件完成,硬件会执行一系列操作,包括将栈指针切换到内核栈,修改指令指针以跳转到相应的内核代码,修改特权级别等,从而实现CPU模式从用户态到内核态的切换。

综上,仅Ⅱ、Ⅲ正确。

本题选B。

P1781

驱动程序是与硬件设备交互的软件模块,它负责控制和管理设备的操作。驱动程序的设计和实现通常与设备的I/O控制方式密切相关。不同类型的设备可能采用不同的I/O控制方式,例如内存映射I/O、端口映射I/O、DMA等。驱动程序需要与设备的特定I/O控制方式进行交互,以正确地进行设备操作。

A不正确。驱动程序与I/O控制方式是相关的。

B正确。驱动程序负责设备的初始化工作,包括设置设备的寄存器、配置设备参数、启动设备等。

C正确。在驱动程序执行期间,可能需要等待设备的操作完成或等待其他资源的可用性。这可能导致执行驱动程序的进程进入阻塞态,直到条件满足。

D正确。驱动程序提供对设备的读/写操作的接口,应用程序可以通过系统调用调用驱动程序提供的读/写方法以与设备进行数据交换。

本题选A。

P1782

解答:

(1) 由题45(a)图可知,stu目录下有course和doc两个文件,查题45(b)图中的表可知,course的索引节点号为2,doc的索引节点号为10。因为目录项由文件名和索引节点号构成,所以目录文件stu中两个目录项的内容是:

(2) 查题45(b)图中的表可知,文件doc和文件course1的索引节点号都是10,说明两者共享同一个索引节点,指向同一个文件,所以两者的磁盘块号相同。文件course1占用的磁盘块的块号为30,所以文件doc占用的磁盘块的块号 x 的值为30。

(3) 需要读2个磁盘块。先读course1的索引节点所在的磁盘块,再读course1的内容所在的磁盘块。若目录文件course的内容已在内存,course1的目录项在文件course的目录中,根据course1的目录项可知其索引节点号为10,首先读取10号索引节点所在的磁盘块,索引节点中包含文件的地址项,然后读取30号磁盘块的内容。

(4) 存取course2需要使用索引节点的一级和二级间接地址项。文件course2的大小增长到6MB,磁盘块大小为4KB,文件course2需占用6MB/4KB=1536个磁盘块。每个地址项占4B,一个磁盘块可容纳4KB/4B=1024个地址项。每个索引节点包含直接地址项10个,一级、二级和三级间接地址项各1个。所以直接地址项可记录10×1=10个磁盘块,直接地址项和一级间接地址可记录10×1+1×1024=1034,直接地址项、一级间接地址和二级间接地址可记录10×1+1×1024+1× 1024^2 =1049610。文件course2中的地指项位于100号索引节点,即对应一个索引节点,占用1536个磁盘块,1034<1536≤1049610。所以存取course2需要使用到索引节点的的间接地址项包括一级和二级间接地址项。

P1783

解答:

题目已经给出了AOV网。

列出前置关系:

进行拓扑排序:

A, B, C, D, E, F

每个同步关系一个信号量。即每个AOV网中每条边(表示一个同步关系)构造一个信号量,默认初始为0。

semaphore S_AC = 0;    //控制操作A和C的执行顺序
semaphore S_BC = 0;    //控制操作B和C的执行顺序
semaphore S_CD = 0;    //控制操作C和D的执行顺序
semaphore S_CE = 0;    //控制操作C和E的执行顺序
semaphore S_EF = 0;    //控制操作E和F的执行顺序

cobegin
Process T1() {
    // process A
    完成操作A;
    signal(S_AC);    // V(S_AC);
    // process E
    wait(S_CE);    // P(S_CE);
    完成操作E;
    signal(S_EF);    // V(S_EF);
    // process F
    wait(S_EF);    // P(S_EF);
    完成操作F;
}
Process T2() {
    // process B
    完成操作B;
    signal(S_BC);    // V(S_BC);
    // process C
    wait(S_AC);    // P(S_AC);
    wait(S_BC);    // P(S_BC);
    完成操作C;
    signal(S_CD);    // V(S_CD);
    signal(S_CE);    // V(S_CE);
    // process D
    wait(S_CD);    // P(S_CD);
    完成操作D;
}
coend

上述同步关系可以进行简化,同一个线程中的同步关系可以不用设置信号量,跨线程执行的只有 C 的前置 A 和 E 的前置 C。只需要删除不跨线程的信号量即可,简化后如下:

semaphore S_AC = 0;    //控制操作A和C的执行顺序
semaphore S_CE = 0;    //控制操作C和E的执行顺序

cobegin
Process T1() {
    // process A
    完成操作A;
    signal(S_AC);    // V(S_AC);
    // process E
    wait(S_CE);    // P(S_CE);
    完成操作E;
    // process F
    完成操作F;
}
Process T2() {
    // process B
    完成操作B;
    // process C
    wait(S_AC);    // P(S_AC);
    完成操作C;
    signal(S_CE);    // V(S_CE);
    // process D
    完成操作D;
}
coend

当然,考场上时间紧迫,没有优化到最简也是没有关系的。

P1784

解答:

(1) 因为信号量S是能够被多个进程共享的遍历,多个进程都可以通过wait()和signal()对S进行读、写操作。所以,在wait()和signal()操作中对S的访问必须是互斥的。

(2) 方法1是错误的。在wait()中,当S<=0时,关中断后,其他进程无法修改S的值,while语句陷人死循环。方法2是正确的。

(3) 用户程序不能使用开/关中断指令实现临界区互斥。因为开中断和关中断指令都是特权指令。

P1785

解答:

(1) 系统启动过程中执行步骤如下:

  1. ROM中的引导程序执行:计算机打开时,会首先执行ROM中的引导程序,它通常称为BIOS(基本输入/输出系统)或UEFI固件。这个引导程序负责进行基本的硬件初始化和自检,并加载磁盘引导程序。
  2. 磁盘引导程序执行:ROM中的引导程序将控制权传递给硬盘的第一个扇区,也就是主引导记录。磁盘引导程序解析分区表,选择要引导的分区,然后将控制权传递给选定分区的分区引导程序。
  3. 分区引导程序执行:分区引导程序位于被选定的分区的第一个扇区,它负责完成该分区的引导过程。分区引导程序会加载并执行操作系统的初始化程序。
  4. 操作系统的初始化程序执行:操作系统的初始化程序负责进一步初始化和配置系统,加载核心操作系统的组件并启动操作系统的运行。

综上,执行顺序依次是 ROM中的引导程序、磁盘引导程序、分区引导程序、操作系统的初始化程序。

(2) 把硬盘制作为启动盘的执行步骤如下:

  1. 磁盘的物理格式化:这个步骤是在磁盘制造阶段完成的,它将磁盘划分为扇区、磁道和柱面,并建立扇区标识和校验等必要的数据结构。
  2. 对磁盘进行分区:在硬盘制作为启动盘之前,需要将磁盘划分为若干个分区。分区操作通常由磁盘分区工具完成,例如fdisk、diskpart等。根据需求和设计,确定分区的类型、大小和位置等参数。
  3. 逻辑格式化:对每个分区进行逻辑格式化,也称为文件系统格式化。逻辑格式化由操作系统的工具完成,例如Windows的格式化工具或Linux的mkfs命令。它会在每个分区的首扇区建立文件系统的元数据结构,并为文件系统准备存储空间。
  4. 操作系统的安装:通过操作系统的安装程序,将操作系统的文件复制到相应的分区中。安装程序通常会对文件进行拷贝、配置和初始化等操作,以便正确安装操作系统。

综上,4个操作的执行顺序依次是磁盘的物理格式化、对磁盘进行分区、逻辑格式化、操作系统的安装。

(3) 磁盘扇区的划分是在磁盘的物理格式化操作中完成的。文件系统根目录的建立是在逻辑格式化操作中完成的。

P1786

解答:

A错误。各进程可以以读或写的方式打开文件F,取决于进程的操作需求和权限。

B正确。系统打开文件表 (System Open File Table) 是操作系统内核中维护的数据结构,用于跟踪和管理所有打开的文件。系统打开文件表记录了每个打开的文件的相关信息,包括文件描述符 (File Descriptor)、文件状态标志 (File Status Flags)、文件指针位置 (File Position Pointer) 等。系统打开文件表使得操作系统能够在多个进程之间共享已经打开的文件。整个系统只有一张系统打开文件表,其中有一个表项包含文件F的属性。

C错误。用户打开文件表 (User Open File Table) 是每个进程在用户空间维护的数据结构,用于跟踪和管理该进程打开的文件。每个进程在其用户地址空间中都有一个用户打开文件表,用于记录该进程打开的文件的相关信息,包括文件描述符 (File Descriptor)、文件状态标志 (File Status Flags)、文件指针位置 (File Position Pointer) 等。其中的表项与系统打开文件表的表项相对应,不同用户进程打开文件表关于同一个文件的表项不一定相同,例如读写指针位置不一定相同。这种设计使得多个进程能够独立地管理和访问同一个文件,而不会相互干扰。

D错误。当进程关闭文件 F 时,并不会立即删除系统打开文件表中关于该文件的表项。系统打开文件表中的表项只有在所有的进程都关闭了文件 F 之后才会被删除。这样可以确保其他进程在需要访问文件时仍能够找到相应的信息。

本题选B。

P1787

解答:

I正确。就绪队列的数量需要合理设置,数量过多会浪费系统资源,数量过少会导致进程无法充分执行。

Ⅱ正确。不同就绪队列具有不同的优先级。较高优先级的队列中的进程将被优先选择执行,而较低优先级的队列则是后备队列。

Ⅲ正确。对于每个就绪队列,可以使用不同的调度算法来选择下一个要执行的进程。通常,较高优先级的队列使用抢占式调度算法,而较低优先级的队列使用非抢占式调度算法。这些调度算法的选择与各就绪队列的特性和调度目标密切相关。

Ⅳ正确。多级反馈队列调度算法允许进程在不同的就绪队列之间迁移。迁移条件可以是时间片用尽、优先级的变化、等待时间等。这些条件决定了一个进程何时从一个队列迁移到另一个队列,以便重新调度和执行。

综上,Ⅰ、Ⅱ、Ⅲ和Ⅳ正确。

本题选D。

P1788

解答:

在将表格转化为已分配资源、尚需资源、可用资源三栏的形式。进程Pi尚需资源=进程Pi资源最大需求-进程Pi已分配资源,可用资源=资源总数-所有进程已分配资源之和,如图(a)所示。

使用银行家算法,保证可用资源大于或等于某进行尚需资源,该进程可以输出到序列,并回收该进程已分配资源。若所有进程均可被输出到序列,则存在安全序列,该输出序列为安全序列,否则不存在安全序列。

模拟过程如图(b)、(c)、(d)所示。存在安全序列P2、P1、P3。

本题选B。

P1789

解答:

I正确。较低的缺页率意味着较少的页面置换操作,从而减少了系统的I/O开销和额外的访存开销,从而减少平均访存时间。

Ⅱ正确。在请求分页系统中,当发生缺页时,需要从磁盘读取相应的页面到内存中。磁盘读写时间是影响有效访存时间的重要因素之一。较低的磁盘读写时间可以加快页面的加载和替换操作,从而减少平均访存时间。

Ⅲ正确。内存访问时间指的是从CPU发出一个访存请求到得到相应数据的时间。较低的内存访问时间能够提高请求分页系统的响应速度,从而减少平均访存时间。

Ⅳ正确。执行缺页处理程序所需的CPU时间会影响有效访存时间。较低的CPU时间可能导致请求分页系统的响应速度变慢,从而增加平均访存时间。

综上,Ⅰ、Ⅱ、Ⅲ和Ⅳ正确。

本题选D。

P1790

解答:

A正确。在设备独立性的系统中,每个物理设备都会被视为一个文件,拥有一个对应的设备文件路径和文件名。通过使用文件名,应用程序可以通过标准的文件操作接口(如打开、读取、写入等)来访问和操作物理设备,而无需直接与设备的底层硬件驱动程序进行交互。

B正确。当用户程序使用逻辑设备名来访问物理设备时,系统提供了一种映射机制,将逻辑设备名映射到相应的物理设备。

C正确。具备设备独立性的系统需要建立逻辑设备与物理设备之间的映射关系。这种映射关系允许系统将用户程序对逻辑设备的操作转换为对实际物理设备的操作。

D错误。对于具备设备独立性的系统,系统根据抽象的逻辑设备名来访问物理设备,而不依赖于具体的物理设备。这样,当更换物理设备时,只需要进行逻辑设备与新物理设备之间的映射关系的修改,而不需要修改应用程序。

本题选D。

P1791

解答:

列出前置关系:

可以画出AOV网:

进行拓扑排序:

A,B,C,D,E

每个同步关系一个信号量,即每个AOV网中每条有向边(表示一个同步关系)构造一个信号量,默认初始为0。

semaphore S_AC = 0;    //控制操作A和C的执行顺序
semaphore S_BC = 0;    //控制操作B和C的执行顺序
semaphore S_CE = 0;    //控制操作C和E的执行顺序
semaphore S_DE = 0;    //控制操作D和E的执行顺序

cobegin
Process A() {
    完成操作A;
    signal(S_AC);    // V(S_AC);
}
Process B() {
    完成操作B;
    signal(S_BC);    // V(S_BC);
}
Process C() {
    wait(S_AC);    // P(S_AC);
    wait(S_BC);    // P(S_BC);
    完成操作C;
    signal(S_CE);    // V(S_CE);
}
Process D() {
    完成操作D;
    signal(S_DE);    // V(S_DE);
}
Process E() {
    wait(S_CE);    // P(S_CE);
    wait(S_DE);    // P(S_DE);
    完成操作E;
}
coend

 

P1792

解答:

(1) 第一问。数组元素a[i][j]的虚拟地址 = 数组a的起始虚拟地址+(i×数组a的行数+j)×数组元素占地址单元数。数组a[1024][1024]的起始虚拟地址为1080 0000H,行数为1024,每个数组元素占4字节,按字节编址,每个数组元素占4个地址单元。数组元素a[1][2]的虚拟地址 = 1080 0000H + (1024×1+2)×4=1080 1008H 。

第二问。数组元素a[1][2]的虚拟地址1080 1008H =,对应的页目录号是0001000010B=042H,页号是00 0000 0001B=001H。

第三问。因为该程序运行时,其进程的页目录起始物理地址为0020 1000H,页目录项长度为4字节,按字节编址,每个页目录项占4个地址单元,数组元素a[1][2]所在页目录号为042H,所以对应的页目录项的物理地址是0020 1000H+4×042H=0020 1108H。

第四问。因为该目录项中存放的页框号为00301H,页表项长度为4字节,按字节编址,每个页表项占4个地址单元,数组元素a[1][2]对应页号是001H,页内偏移为4×001H=004H,根据虚拟地址结构,页内偏移占12位,拼接页框号00301H和页内偏移004H得到a[1][2]所在页对应的页表项的物理地址为00301004H。

(2) 第一问。因为数组要求支持随机访问,所以数组a在虚拟地址空间中所占区域必须连续。

第二问。因为系统采用请求分页存储管理方式,操作系统使用地址映射技术将虚拟地址映射到物理地址,这种映射关系可以是灵活的,不一定要求数组a在物理内存中占据连续的区域。所以数组 a 在物理地址空间中所占区域不必连续。

(3) 因为数组a在虚拟地址空间连续存放,系统采用请求分页存储管理方式,操作系统使用地址映射技术将虚拟地址映射到物理地址,数组a在同一页框中的元素连续存放,所以当访问方式和数组存放方式一致时,对数组遍历局部性更好。因为数组a按行优先方式存放,所以对数组a按行遍历局部性更好。

P1793

解答:

Ⅰ正确。位图是一种使用位表示磁盘块分配情况的数据结构。每个位对应一个磁盘块,位的值表示该磁盘块的分配状态(已分配或未分配)。

II错误。索引节点是在文件系统中用于表示和管理文件或目录的索引数据结构。

Ⅲ正确。空闲磁盘块链是一种使用链表来管理磁盘块分配的数据结构。链表中的每个节点表示一个空闲磁盘块,通过链接在一起形成一个链表,可以按顺序或随机方式分配空闲磁盘块。

Ⅳ正确。文件分配表是一种表格形式的数据结构,用于记录和管理文件在磁盘上的分配情况。每个表项对应一个磁盘块,表项的值表示所指向的下一个磁盘块的位置。

综上,仅Ⅰ、Ⅲ、Ⅳ正确。

本题选B。

P1794

解答:

分段存储管理系统是一种操作系统中的内存管理方式,通过将程序和数据划分为不同大小的段 (segment),并分配给它们特定的内存区域,来管理内存的使用。每个段都代表了程序或数据的逻辑单元,有自己的起始地址和长度。分段系统的一个突出优点,是易于实现段的共享,即允许若干个进程共享一个或多个分段,且对段的保护也十分简单易行。

A正确。当多个进程共享同一个段时,为了节省内存空间,物理内存中只需要保存一份该段的内容,而不是为每个进程都保存一份。

B错误。在分段存储管理系统中,每个进程都有自己的段表,段表中的段号是由该进程自己管理的。如果进程P1和P2共享段S,它们可以分别在它们的段表中有不同的段号来表示段S。实际上,共享段的段号可以不同,只要在段表中的其他属性(例如段的基地址、段的长度等)相同即可。这样可以确保进程通过不同的段号访问同一个共享段。

C正确。共享段表中的段表项会记录共享段S的相关信息,比如段号、段长度、共享权限等。P1和P2可以通过共享段表中的段表项来获取段S的描述信息,以便访问和使用共享段S。

D正确。当进程P1和P2都结束运行或者显式释放共享段S时,操作系统会检查共享段S的使用计数器或引用计数器。如果计数器的值为零,表示没有任何进程在使用该共享段,操作系统会将该段的内存空间回收。

本题选B。

P1795

解答:

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。

根据题意,模拟过程如下(红色表示未命中,蓝色表示未命中且置换,绿色表示命中):

产生页置换的总次数是5。

本题选C。

P1796

解答:

虚拟地址20501225H= ,对应的页目录号是0010000001B=081H,页号是01 0000 0001B=101H。

本题选A。

P1797

解答:

首次适应算法:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。

最佳适应算法:从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。

最差适应算法:它从全部空闲区中找出能满足作业要求的、且大小最大的空闲分区,从而使空闲链表中的结点大小趋于均匀。

循环首次适用算法:每次查找的起始位置是从上次查找位置的下一个位置开始,把最先能够满足要求的空闲区分配给作业。

当系统中存在多个不同大小的空闲分区时,如果选择最佳适应的方式去分配内存,会导致许多小的空闲分区被保留下来,而较大的分区被分割成较小的部分,从而增加了内存碎片的数量和总碎片的大小。相比而言,首次适应算法、最坏适应算法和循环首次适应算法相对来说更容易获得较大的连续空闲区,减少了内存碎片的发生。因此,最容易产生内存碎片的算法是最佳适应算法。

本题选C。

P1798

解答:

哲学家进餐问题有多种解决方案,主要有

方法一:至多只允许有n-1位哲学家同时去拿左边的筷子,最终能保证至少有一位哲学家能够进餐,并在用毕时能释放出他用过的两只筷子,从而使更多的哲学家能够进餐。

semaphore count = n-1;    // 可进餐名额数量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(count);
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(count);
    }
}
CoEnd

方法二:仅当哲学家的左、右两只筷子均可用时,才允许他拿起筷子进餐。

semaphore mutex = 1;   // 保证每个时刻只有一个哲学家取筷子的互斥信号量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(mutex);
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        V(mutex);
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
    }
}
CoEnd

方法三:规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反。

semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        if (i%2==1) {
            P(chopsticks[i]);    // 取左边筷子
            P(chopsticks[(i+1)%n]);    // 取右边筷子
        } else {
            P(chopsticks[(i+1)%n]);    // 取右边筷子
            P(chopsticks[i]);    // 取左边筷子
        }
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
    }
}
CoEnd

由于本题引入了新资源碗,每位哲学家必须取到一个碗和两侧的筷子后,才能就餐。

方法一

使用哲学家进餐问题的模板一:综合考虑碗的数量m和最大可进餐名额数量n-1,限制碗的数量为 min{m, n-1},得到新的最大可进餐名额数量。本题适合采用方法一,伪代码如下:

semaphore bowls = min(n-1, m);    // 可用碗数量即可进餐名额数量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(bowls);
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(bowls);
    }
}
CoEnd

方法二

使用哲学家进餐问题的模板二:仅当哲学家的左、右两只筷子和碗均可用时,才允许他拿起筷子进餐。这里需要引入互斥信号量,保证进餐请求能够按照顺序执行,根据银行家算法,对于任意一个请求序列,均存在安全序列,不会产生死锁。这里拿左、右两只筷子和碗的顺序不会影响结果的正确性。

semaphore bowls = m;    // 所有碗资源的信号量
semaphore mutex = 1;   // 保证每个时刻只有一个哲学家取筷子的互斥信号量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(mutex);
        P(bowls);    // 取碗
        P(chopsticks[i]);    // 取左边筷子
        P(chopsticks[(i+1)%n]);    // 取右边筷子
        V(mutex);
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(bowls);    // 放回碗
    }
}
CoEnd

由于方法二会限制进餐请求的顺序,相比方法一降低了并行度。

方法三

使用哲学家进餐问题的模板三:规定奇数号哲学家先拿他左边的筷子,然后再去拿右边的筷子,而偶数号哲学家则相反。若 m≥n ,每个哲学家一定都能拿到碗,若 m<n ,则会对同时进餐的名额产生限制,要求拿到碗的哲学家才能去拿筷子。

semaphore bowls = m;    // 所有碗资源的信号量
semaphore chopsticks[n];   // 所有筷子资源的信号量
for (int i=0; i<n; i++) {
    chopsticks[i] = 1;
}
CoBegin
Process 哲学家i() {
    while (true) {
        思考;
        P(bowls);    // 取碗
        if (i%2==1) {
            P(chopsticks[i]);    // 取左边筷子
            P(chopsticks[(i+1)%n]);    // 取右边筷子
        } else {
            P(chopsticks[(i+1)%n]);    // 取右边筷子
            P(chopsticks[i]);    // 取左边筷子
        }
        进餐;
        V(chopsticks[i]);    // 放回左边筷子
        V(chopsticks[(i+1)%n]);    // 放回右边筷子
        V(bowls);    // 放回碗
    }
}
CoEnd

如果不使用上述方法,可能会产生死锁,在碗资源数不足的情况下,可能会出现一部分哲学家拿到筷子但拿不到碗,一部分哲学家拿到碗但拿不到筷子,举个例子,有A、B、C、D共4个哲学家,依次围坐在一张圆桌边,有4根筷子,2个碗,A、C各拿到2根筷子,B、D各拿到1个碗,4人均无法进餐,处于死锁状态。

P1799

解答:

(1) 因为该计算机系统中的磁盘有300个柱面,每个柱面有10个磁道,每个磁道有200个扇区,扇区大小为512B,所以磁盘的容量是300×10×200×512B= 3×10^5KB 。

(2) 因为每个柱面有10个磁道,每个磁道有200个扇区,每个簇包含2个扇区,所以每个柱面有10×200/2=1000个簇,柱面号默认从0开始编号,100260号簇位于⌊100260/1000⌋=100号柱面,60005号簇位于⌊60005/1000⌋=60号柱面,101660号簇位于⌊101660/1000⌋=101号柱面,110560号簇位于⌊110560/1000⌋=110号柱面。磁头在85号柱面上,最短寻道时间优先 (SSTF) 调度算法,总是访问距离当前柱面最近的柱面。模拟过程如下:

访问柱面的先后次序是100、101、110、60,对应访问簇的先后次序是100260、101660、110560、60005。

(3) 第一问。第 100530 簇在磁盘上的物理地址由其所在的柱面号、磁道号、扇区号构成。柱面号、磁道号、扇区号默认从0开始编号。

柱面号 = ⌊ 簇号/每个柱面的簇数 ⌋ = ⌊100530/1000⌋=100;

磁道号 = ⌊ (簇号 mod 每个柱面的簇数) / 每个磁道的簇数 ⌋ = ⌊(100530 mod 1000)/100⌋ = 5;

扇区号 = (簇号 mod 每个磁道的簇数) × 每个簇包含扇区数 = (100530 mod 100) × 2 = 60。

第二问。将簇号转换成磁盘物理地址的过程由磁盘驱动程序完成。

P1800

答案解析

(1)是的,实现的代码可以被视为临界区。临界区是指在并发编程中,当多个进程同时访问和修改共享数据时,必须进行互斥访问的代码区域。
在这个例子中,进程P1和P2都需要执行C1,即它们都需要将个数据分组写入缓冲区 B。如果这两个进程同时执行C1,那么它们可能会试图问时写入数据分组,这可能会导致数据的不一致性。因此,我们需要确保在任何时刻,只有一个进程可以执行C1。这就需耍将执行C1的代码区域定义为临界区,并使用适当的同步机制(如互斥锁或信号量)来保证在同一时刻只有一个进程可以进入临界区。
所以,实现C1的代码是临界区,因为它涉及到对共享资源〈在这里是缓冲区B)的修改,而这个修改需要被同步,以防止数据的不一致性。

(2)在这个间题中,我们可以使用两个信号量:一个用于保护缓冲区B〔我们称之为mutex ),另一个用于同步进程P1和P2〔我们称之为full。mutex用于确保在同一时刻只有一个进程可以访向缓冲区B,而full用于表示缓冲区B是否已满。
初始时,mutex的值为1,表示缓冲区B是可用的;full的值为0,表示缓冲区B是空的。
以下是进程P1和P2的代码:

//进程P1
P1(){
    wait(mutex); //最请求访问溪冲区B
    //执行C1,将一个数据分组写入B中
    signal(mutex); //释放对缓冲区B的访问 
    signal(full); //表示缓冲区B已满
}

//进程P2
P2(){
    wait(full); //等待缓冲区书变为满
    wait(mutex); //请求访问缓冲区B
    //执行C2,从B中读出一个数据分组
    signal(mutex); 释放对没冲区B的访问
}

在这个代码中。wait操作表示请求一个信号量,如果信号量的值大于0,那么就将其减1;如果信号量的值为0,那么就阻塞,直到信号量的值大于0。signal操作表示释放一个信号量,将其值加1。

(3)在这个问题中,我们可以使用一个信号量:一个用于保护缓冲区B〔我们称之为mutex )。mutex用于确保在同一时刻只有一个进程可以访问缓冲区B。
初始时,mutex 的值为1,表示缓冲区B是可用的。
以下是进程P1和P2的代码:

//进程P1
P1(){
    wait(mutex); //请求访问缓冲区B
    //执行C3,对B中的数据分组进行修改
    signal(mutex); //释放对缓冲区B的访问
}
//进程P2
P2(){
    wait(mutex); //请求访问缓冲区B
    //执行C3,对B中的数据分组进行修改
    signal(mutex); //释放对缓冲区B的访问
}

在这个代码中,wait( )操作表示请求一个信号量,如果信号量的值大于0,那么就将其减1;如果信号量的值为0,那么就阻塞,直到信号量的值大于0;signal( )操作表示释放一个信号量,将其值加1。
所以。实现C3的代码是临界区,因为它涉及到对共享资源(在这里是缓冲区B)的修改,而这个修改需要被同步,以防止数据的不一致性。

P1801

P1802

P1803
P1804

P1805

参考解析

A.伙伴算法是一种特殊的内存分配算法。它在分配和回收内存时,只合并大小相等的空闲分区。这种算法的优点是简单且执行速度快,但可能会导致内存碎片:

B.最佳适应算法:它在分配内在时,会选择大小最接近所需的空闲分区。这种算法的优点是可以减少内存的浪贵,但可能会导致大量的小碎片。

C.最坏适应算法:它在分配内存时。会选择大小最大的空闲分区。这种算法的优点是可以减少内存的碎片。但可能会导致大量的大碎片。

D.首次适应算法:它在分配内存时,会选择第一个满足所需的空闲分区。这种算法的优直是简单且执行速度快,但可能会导效内存的碎片。

P1806

P1807

P1808

P1809

P1810