2.1.8.2 下列关于线程的叙述中,正确的是()。
A.线程包含CPU现场,可以独立执行程序; B.每个线程有自己独立的地址空间; C.进程只能包含一个线程; D.线程之间的通信必须使用系统调用函数
线程是处理机调度的基本单位,当然可以独立执行程序;线程没有自己独立的地址空间,它共享其所属进程的空间;进程可以创建多个线程;与进程之间的通信可以直接通过它们共享的存储空间。选A
2.1.8.8 在单处理器系统中,若同时存在10个进程,则处于就绪队列中的进程最多有()个。
A.1 B.8 C.9 D.10
单处理器系统的10个进程不可能都处于就绪态,但9个处于就绪态、1个正在运行是可能存在的;还要想到。可能10个进程都处于阻塞态。选C
2.1.8.11 一个进程的基本状态可以从其他两种基本状态转变过去,这个基本的状态一定是()
A.运行态 B.阻塞态 C.就绪态 D.终止态
选C
2.1.8.12 并发程序失去封闭性,是指()
A.多个相对独立的进程以各自的速度向前推进 B.并发进程的运行结果与速度无关 C.并发进程执行时,在不同时刻发生的错误 D.并发进程共享变量,其执行结果与速度有关
程序封闭性是指进程执行的结果只取决于进程本身,不受外界影响;也就是说,进程在执行过程中不管是不停顿地执行,还是走走停停,进程的执行速度都不会改变它的执行结果。失去封闭性后,不同速度下的执行结果不同,选D。
2.1.8.14 进程在处理器上执行时,()
A.进程之间是无关的,具有封闭特性; B.进程之间都有交互性,相互依赖,相互制约,具有并发性; C.具有并发性,即同时执行的特性; D.进程之间可能是无关的,但也可能是有交互性的。
选项A和B太绝对,进程之间有可能具有相关性,也有可能是相互独立的,选项C错在“同时”,选D
2.1.8.16 在多对一的线程模型中,当一个多线程进程中的某个线程被阻塞后,()
A.该进程的其他线程仍可继续运行 B.整个进程都将阻塞 C.该阻塞线程将被撤销 D.该阻塞线程将永远不可能再执行
在多对一的线程模型中,由于只有一个内核级线程,用户级线程的“多”对操作系统透明,因此操作系统内核只能感知到一个调度单位的存在。因此该进程的一个线程被阻塞后,该进程就被阻塞,进程的其他线程当然也都被阻塞,选B。作为对比,在一对一模型中将每个用户级线程都映射到一个内核级线程,所以当某个线程被阻塞时,不会导致整个进程被阻塞。
2.1.8.18 下列几种关于进程的叙述,()最不符合操作系统对进程的理解。
A.进程是在多程序环境中的完整程序 B.进程可以由程序、数据和PCB描述 C.线程是一种特殊的进程 D.进程是程序在一个数据集合上的运行过程,它是系统进行资源分配和调度的一个独立单元。
进程是一个独立的运行单位,也是操作系统进行资源分配和调度的基本单位,它包括PCB、程序和数据以及执行栈区,仅仅说进程是在多程序环境下的完整程序是不合适的,因为程序是静态的,它以文件形式存放于计算机硬盘内,而进程是动态的。选A
2.1.8.22 系统动态DLL库中的系统线程,被不同的进程所调用,它们是()的线程。
A.不同 B.相同 C.可能不同,也可能相同 D.不能被调用
选B
2.1.8.23 PCB是进程存在的唯一标志,下列()不属于PCB。
A.进程ID B.CPU状态 C.堆栈指针 D.全局变量
进程实体主要是代码、数据和PCB。因此,要清楚了解PCB内所含的数据结构内容,主要有四大类:进程标志信息、进程控制信息、进程资源信息、CPU现场信息。由上述可知,全局变量与CPU无关,它只与用户代码有关。选D
2.1.8.33 在以下描述中。()并不是多线程系统的特长。
A.利用线程并行地执行矩阵乘法运算 B.web服务器利用线程相应HTTP请求 C.键盘驱动程序为每个正在运行的应用配备一个线程,用以相应该应用的键盘输入 D.基于GUI的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作。
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使用一个线程来处理整个系统的键盘输入。选C
2.1.8.43 下面关于用户级线程和内核级线程的描述中,错误的是()
A.采用轮转调度算法,进程中设置内核级线程和用户级线程的效果完全不同 B.跨进程的用户级线程调度也不需要内核参与,控制简单 C.用户级线程可以在任何操作系统中运行 D.若系统中只有用户级线程,则处理机的调度对象是进程。
采用轮转调度算法时,如果进程中分别设置100个用户级线程和100个内核级线程,则前者的执行时间是后者的100倍;在用户级线程中,系统感知不到线程的存在,调度的对象式进程,因此,跨进程的用户级线程调度需要内核参与;用户级线程不需要内核的支持,与系统平台无关,对线程管理的代码是属于用户程序的一部分。选B
2.1.8.47 下列选项中,降低进程优先级的合理时机是()
A.进程时间片用完 B.进程刚完成I/O操作,进入就绪队列 C.进程长期处于就绪队列 D.进程从就绪态转为运行态
进程时间片用完,可降低其优先级让其他进程被调度进入执行状态;进程刚完成I/O,进入就绪队列等待被处理机调度,为了让其尽快处理I/O结果,应该提高优先级;进程长期处于就绪队列,为不产生饥饿现象,应适当提高优先级;选A
2.1.8.51 下列关于管道(pipe)通信的叙述中,正确的是()
A,一个管道可实现双向数据传输 B.管道的容量仅受磁盘容量大小限制 C.进程对管道进行读操作和写操作都可能被阻塞 D.一个管道只能有一个读进程或一个写进程对其操作
管道是一种固定大小的缓冲区,管道的大小通常为内存的一页,其大小并不是受磁盘容量大小的限制;一个普通管道只允许单向通信,若要实现父子进程双向通信,则需要定义两个管道,而每个管道向不同方向发送数据;当管道满时,写进程在写管道会被阻塞,而管道空时,读进程在读管道会被阻塞;父进程创建一个管道后,由于管道是一种特殊的文件,因此所有子进程也继承了父进程的管道,并使用它来与父进程进行通信。选C
2.1.8.55 下列关于线程的描述中,错误的是()
A.内核级线程的调度由操作系统完成 B.操作系统为每个用户级线程建立一个线程控制块 C.用户级线程间的切换比内核级线程间的切换效率高 D.用户级线程可以在不支持内核级线程的操作系统上实现
应用程序没有进行内核级线程管理的代码,只有一个到内核级线程的编程接口,内核为进程及其内部的每个线程维护上下文信息,调度也是在内核中由操作系统完成的;
在多线程模型中,用户级线程和内核级线程的连接方式分为多对一、一对一、多对多,“操作系统为每个用户级线程建立一个线程控制块”属于一对一模型;
用户级线程的切换可以在用户空间完成,内核级线程的切换需要操作系统帮助进行调度,因此用户级线程的切换效率更高;
用户级线程的管理工作可以只在用户空间中进行,因此可以在不支持内核级线程的操作系统上实现,选B。
2.2.7.1 时间片轮转调度算法是为了()
A.多个用户能及时干预系统 B.使系统变得高效 C.优先级较高的进程得到及时响应 D.需要CPU时间最少的进程最先做
时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得用户以为“独占”计算机的使用,它并没有偏好,也不会对特殊进程做特殊服务,时间片轮转增加了系统开销,所以不会使得系统高效运转,吞吐量和周转时间均不如批处理,但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求,选A。
2.2.7.3 ()有利于CPU繁忙型的作业,而不利于I/O繁忙型的作业。
A.时间片轮转调度算法 B.先来先服务调度算法 C.短作业(进程)优先算法 D.优先权调度算法
FCFS调度算法比较有利于长作业,而不利于短作业。CPU繁忙型作业是指该类作业需要占用很长的CPU时间,而很少请求I/O操作,因此CPU繁忙型作业类似于长作业,采用FCFS可以从容完成计算。I/O繁忙型作业是指作业执行时需频繁请求I/O操作,即可能频繁放弃CPU,所以占用CPU的时间不会太长,一旦放弃CPU,必须重新排队等待调度,采用SJF比较适合,选B。
2.2.7.14 下列调度算法中,()调度算法是绝对可抢占的。
A.先来先服务 B.时间片轮转 C.优先级 D.短进程优先
和可抢占对立的是主动放弃,时间片轮转算法是按固定的时间配额来运行的,一旦时间到,不管是否完成,当前的进程必须撤下,调度新的进程;而优先级算法和短进程优先算法都可以分为抢占式和不可抢占式,选B。
2.2.7.15 作业是用户提交的,进程是由系统自动生成的,除此之外,两者的区别是()
A.两者执行不同的程序段 B.前者以用户任务为单位,后者以操作系统控制为单位 C.前者是批处理的,后者是分时的 D.后者是可并发执行,前者则不同
作业是从用户角度出发的,它由用户提交,以用户任务为单位;进程是从操作系统出发点,由系统生成,是操作系统的资源分配和独立运行的基本单位,选B。
2.2.7.22 下列说法中,正确的是()
①分时系统的时间片固定,因此用户数越多,响应时间越长; ②UNIX是一个强大的多用户、多系统操作系统,支持多种处理器架构,按照操作系统分类,属于分时操作系统; ③中断向量地址是中断服务例行程序的入口地址; ④中断发生时,由硬件保护并更新程序计数器(PC),而不是由软件完成,主要是为了提高处理速度
分时系统中,响应时间与时间片和用户数成正比,①正确;中断向量本身是用于存放中断服务例行程序的入口地址,因此中断向量地址就应是该入口地址的地址,③错误;中断由硬件保护并完成,主要是为了保证系统运行可靠、正确,提高处理速度也是一个好处,但不是主要目的,所以选①②
一般来说,I/O型作业的优先权要高于计算型作业的优先权,这是由于I/O操作需要及时完成,它没有办法长时间地保存需要输入/输出的数据。
2.2.7.35 在下列内核的数据结构或程序中,分时系统实现时间片轮转调度需要使用的是()
①进程控制块 ②时钟中断处理程序 ③进程就绪队列 ④进程阻塞队列
阻塞队列中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以选①②③
2.3.8.6 临界区是指并发进程访问共享变量段的()
A. 管理信息 B.信息存储 C.数据 D.代码程序
所谓临界区,并不是指临界资源,如共享的数据、代码或硬件设备等,而是指访问临界资源的那段代码程序,如P/V操作、加减锁等。操作系统访问临界资源时,关心的是临界区的操作过程,具体对临界资源做和操作是应用程序的事,操作系统并不关心,选D。
2.3.8.9 以下()属于临界资源。
A.磁盘存储介质 B.公用队列 C.私用数据 D.可重入的程序代码
临界资源与共享资源的区别在于,在一段时间内能否允许被多个进程访问(并发使用),显然磁盘属于共享设备。公用队列可供多个进程使用,但一次只可供一个进程使用,试想若多个进程同时使用公用队列,势必造成队列中的数据混乱而无法使用。私用数据仅供一个进程使用,不存在临界区问题,可重入的程序代码一次可供多个进程使用。
2.3.8.12 在操作系统中,P,V操作是一种()
A.机器指令 B.系统调用指令 C.作业控制指令 D.低级进程通信原语
选D
2.3.8.18 用P,V操作实现进程同步,信号量的初值为()
A.-1 B.0 C.1 D.由用户确定
与互斥信号量初值一般置1不同,用PV操作实现进程同步时,信号量的初值应根据具体情况来确定。若期望的消息尚未发生,则对应的初值应设为0;若期望的消息已存在,则信号量的初值应设为一个非0的正整数。
2.3.8.21 用来实现进程同步与排斥的PV操作实际上是由()过程组成的。
A.一个可被中断的 B.一个不可被中断的 C.两个可被中断的 D.两个不可被中断的
P操作和V操作都属于原语操作,不可被中断,选D。
2.3.8.26 一个系统中共有5个并发进程涉及某个相同的变量A,变量A的相关临界区是由()个临界区构成的
A.1 B.3 C.5 D.6
这里的临界区是指访问临界资源A的那段代码(临界区的定义),那么5个并发进程共有5个操作共享变量A的代码段,选C。
2.3.8.28 以下关于管程的叙述中,错误的是()
A.管程是进程同步工具,解决信号量机制大量同步操作分散的问题 B.管程每次只允许一个进程进入管程 C.管程中signal操作的作用和信号量机制中的V操作相同 D.管程是被进程调用的,管程是语法范围,无法创建和撤销
管程的signal操作与信号量机制中的V操作不同,信号量机制中的V操作一定会改变信号量的值S=S+1,而管程中的signal操作是针对某个条件变量的,若不存在因该条件而阻塞的进程,则signal不会产生任何影响,选C
2.3.8.32 下列关于临界区和临界资源的说法中,正确的是()
①银行家算法可以用来解决临界区问题 ②临界区是指进程中用于实现进程互斥的那段代码 ③公用队列属于临界资源 ④私用数据属于临界资源
临界资源是指每次仅允许一个进程访问的资源。每个进程中访问临界资源的那段代码称为临界区。银行家算法是避免死锁的算法;每个进程中访问临界资源的那段代码称为临界区;公用队列可供多个进程使用,但一次只可供一个程序使用;私用数据仅供一个进程使用,不存在临界区问题;所以只有③正确。
2.3.8.37 在9个生产者、6个消费者共享容量为8的缓冲器的生产者-消费者问题中,互斥使用缓冲器的信号量初始值为()
A.1 B.6 C.8 D.9
所谓互斥使用某临界资源,是指在同一时间段只允许一个进程使用该资源,所以互斥信号量的初值都为1。
2.3.8.38 信箱通信是一种()通信方式。
A.直接通信 B.间接通信 C.低级通信 D.信号量
选B
2.3.8.48 在下列同步机制中,可以实现让权等待的是()
A.Peterson方法 B.swap指令 C.信号量方法 D.TestAndSet指令
硬件方法实现进程同步时不能实现让权等待,b和d错误;Peterson算法满足有限等待但不满足让权等待;记录型信号量由于引入阻塞机制,消除了不让权等待的情况,选C
2.4.6.9 解除死锁通常不采用的方法是()
A.终止一个死锁进程 B.终止所有死锁进程 C.从死锁进程处抢夺资源 D.从非死锁进程处抢夺资源
解除死锁的方法有,①剥夺资源法:挂起某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程; ②撤销进程法:强制撤销部分甚至全部死锁进程并剥夺这些进程的资源;所以选D
2.4.6.12 引入多道程序技术的前提条件之一是系统具有()
A.多个CPU B.多个终端 C.中断功能 D.分时功能
多道程序技术要求进程间能实现并发,需要实现进程调度以保证CPU的工作效率,而并发性的实现需要中断功能的支持,选C
2.4.6.14 以下有关资源分配图的描述中,正确的是()
A.有向边包括进程指向资源类的分配边和资源类指向进程申请边两类 B.矩形框表示进程,其中圆点表示申请同一类资源的各个进程 C.圆圈节点表示资源类 D.资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态
进程指向资源的有向边称为申请边,资源指向进程的有向边称为分配边;矩形框表示资源,其中的圆点表示资源数量;圆圈节点表示进程;选D
2.4.6.18 某个系统采用下列资源分配策略。若一个进程提出资源请求得不到满足,而此时没有由于等待资源而被阻塞的进程,则自己被阻塞。而当此时已有等待资源而被阻塞的进程,则检查所有由于等待资源而被阻塞的进程。若它们有申请进程所需要的资源,则将这些资源取出并分配给申请进程,这种分配策略将会导致()
A.死锁 B.颠簸 C.回退 D.饥饿
某个进程主动释放资源不会导致死锁,因为破坏了请求并保持条件; 颠簸也就是抖动,这是请求分页系统中页面调度不当而导致的现象; 回退是指从此时此刻的状态退回到一分钟以前的状态,假如一分钟以前拥有资源X,它有可能释放了资源X,那就不称回到一分钟之前的状态,也就不是回退; 由于进程过于“慷慨”,不断把自己已得到的资源送给别人,导致自己长期无法完成,所以是饥饿,选D。
系统进入不安全状态后,便可能进入死锁状态;
只要系统处于安全状态,系统便可避免进入死锁状态;
死锁状态一定是不安全状态。
银行家算法是避免死锁的方法≠预防死锁。
死锁的处理采用三种策略:死锁预防、死锁避免、死锁检测和解除。
死锁预防采用破坏产生死锁的4个必要条件中的一个或几个来防止发生死锁。其中之一的“破坏循环等待条件”,一般采用顺序资源分配法,首先给系统的资源编号,规定每个进程必须按编号递增的顺序请求资源,即限制了用户申请资源的顺序;
银行家算法是著名的死锁避免算法,系统在执行安全性算法中都会检查此次资源试分配后,系统是否处于安全状态,若不安全则本次的试探分配作废;
在死锁的检测和解除中,系统为进程分配资源时不采取任何措施,但提供死锁的检测和解除手段。