• 操作系统——进程与线程の选择题整理


    进程与线程

    1、进程与程序的根本区别是()
    A、静态和动态特点
    B、是不是被调入内存
    C、是不是具有就绪、运行和等待三种状态
    D、是不是占有处理器

    解析:选A
    动态性是进程最重要的特性,操作系统引入进程的概念,是为了从变化的角度动态地分析和研究程序的执行。
    程序是静态的。

    2、下面的叙述中,正确的是()
    A、进程获得处理器运行是通过调度得到的
    B、优先级是进程调度的重要依据,一旦确定不能改动
    C、在单处理器系统中,任何时刻都只有一个进程处于运行态
    D、进程申请处理器而得不到满足时,其状态变为阻塞态

    解析:选A
    对于A,进程获得处理器运行是通过调度得到的。
    对于B,优先级是进程调度的重要依据,可以改变。
    对于C,在单处理器系统中,任何时刻都最多只有一个进程处于运行态,即可以是0个也可以是1个。
    对于D,进程申请处理器而得不到满足时,其状态变为就绪态。阻塞态是在等待I/O操作或其他除了处理机之外的资源的状态。

    3、操作系统是根据()来对并发执行的进程进行控制和管理的
    A、进程的基本状态
    B、进程控制块
    C、多道程序设计
    D、进程的优先权

    解析:选B
    在进程的整个生命周期中,系统总是通过其PCB对进程进行控制,PCB是进程存在的唯一标志。进程的基本状态和进程的优先权都存在在PCB中。
    多道程序设计只是提供了进程并发执行的条件,并不能控制和管理进程的并发执行。

    4、若一个进程实体由PCB、共享正文段、数据堆段和数据栈段组成,请指出下列C语言程序中的内容及相关数据结构各位于哪一段中。
    a.全局赋值变量()
    b.未赋值的局部变量()
    c.函数调用实参传递值()
    d.用malloc()要求动态分配的存储区()
    e.常量值(如1995、“string”)()
    f.进程的优先级()
    A、PCB
    B、正文段
    C、堆段
    D、栈段

    解析:选B、D、D、C、B、A
    二进制代码和常量放在正文段
    动态分配的存储区在数据堆段
    临时用的变量在数据栈段
    进程相关的信息放在PCB

    5、系统动态DLL库中的系统线程,被不同的进程所调用,它们是()的线程
    A、不同
    B、相同
    C、可能不同,也可能相同
    D、不能被调用

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

    6、PCB是进程存在的唯一标志,下列()不属于PCB。
    A、进程ID
    B、CPU状态
    C、堆栈指针
    D、全局变量

    解析:选D
    全局变量一般放在正文段中。
    PCB中主要包括:进程标志信息(对应进程ID)、进程控制信息、进程资源信息(对应堆栈指针)、CPU现场信息(对应CPU状态)。

    7、在一个多道系统中,若就绪队列不空,就绪的进程数目越多,处理器的效率()
    A、越高
    B、越低
    C、不变
    D、不确定

    解析:选C
    对于处理器来说,因为就绪队列一直不空,因此它处理完一个就立刻会有下一个进来,无论就绪队列长短,处理器都是一直在忙,所以就绪队列的长短并不会影响处理器的效率。
    处理机的效率=忙碌时间/总的时间

    8、在以下描述中,()并不是多线程系统的特长
    A、利用线程并行的执行矩阵乘法运算
    B、Web服务器利用线程响应HTTP请求
    C、键盘驱动程序为每个正在运行的应用配备一个线程,用以响应该应用的键盘输入
    D、基于GUI的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作。

    解析:选C
    整个系统只有一个键盘,且键盘输入的速度是比较慢的,完全可以用一个线程来处理整个系统的键盘输入。
    多线程系统:包括多对一模型、一对一模型、多对多模型,处理并发能力比较强。

    9、下列说法中,不正确的是()
    A、一个进程可以创建一个或多个线程
    B、一个线程可以创建一个或多个线程
    C、一个线程可以创建一个或多个进程
    D、一个进程可以创建一个或多个进程

    解析:选C
    进程可以创建进程和线程
    线程可以创建线程
    线程不可以创建进程

    10、下列选项中,导致创建新进程的操作是()
    a.用户登陆成功
    b.设备分配
    c.启动程序执行
    A、仅a和b
    B、仅b和c
    C、仅a和c
    D、a、b、c

    解析:选C
    对于a,用户登陆成功后,系统要创建一个用户管理的进程,包括用户桌面、环境等。所有用户进程都会在该进程下创建和管理。
    对于b,设备分配是通过在系统中设置相应的数据结构实现的,不需要创建进程,是操作系统中I/O核心子系统的内容
    对于c,启动程序执行是引起创建进程的典型事件

    11、下列关于管道(Pipe)通信的叙述中,正确的是()
    A、一个管道可以实现双向数据传输
    B、管道的容量仅受磁盘容量大小限制
    C、进程对管道进行读操作和写操作都可能被阻塞
    D、一个管道只能有一个读进程或一个写进程对其操作

    解析:选C
    对于A,一个管道通信相当于是半双工,即一个时刻只能发或者收,不能又发又收,因此不是双向数据传递,是单向数据传递。
    对于B,管道的容量为内存上的一页,与磁盘容量大小无关。
    对于C,当管道满时,写操作会被阻塞,当管道空时,读操作会被阻塞
    对于D,在某一时刻,一个管道只能有一个读进程或一个写进程对其操作


    处理机调度

    1、下面有关选择进程调度算法的准则中,不正确的是()
    A、尽快相应交互式用户的请求
    B、尽量提高处理器利用率
    C、尽可能提高系统吞吐量
    D、适当增长进程就绪队列的等待时间

    解析:选D
    选择进程调度算法的准则:
    ①公平,确保每个进程获得合理的CPU份额;
    ②有效,使CPU尽可能地忙碌;
    ③响应时间,使交互用户的响应时间尽可能短;
    ④周转时间,使批处理用户等待输出的时间尽可能短;
    ⑤吞吐量,使单位时间处理的进程数尽可能最多。
    PS:适当增长进程就绪队列的等待时间并不会提高CPU的效率。

    2、若每个作业只能建立一个进程,为了照顾短作业用户,应采用();为了照顾紧急作业用户,应采用();为了能实现人机交互,应采用();而能使短作业、长作业和交互作业用户都满意,应采用()
    A、FCFS调度算法
    B、短作业优先调度算法
    C、时间片轮转调度算法
    D、多级反馈队列调度算法
    E、剥夺式优先级调度算法

    解析:选B、E、C、D
    FCFS调度算法的好处就是方便简单,易于实现,不会产生饥饿
    短作业优先调度算法的好处就是照顾短作业用户,短作业可以优先处理
    时间片轮转调度算法的好处就是可以使每个用户都尽快得到响应,便于用户的交互。
    多级反馈队列调度算法的好处就是尽量满足不同种类的用户的需求,因为多级的设计中可以采用不同的调度算法。
    剥夺式优先级调度算法的好处就是对于紧急作业可以优先处理。

    3、一个作业8:00到达系统,估计运行时间为1h,若10:00开始执行此作业,其响应比应是()
    A、2
    B、1
    C、3
    D、0.5

    解析:选C
    响应比=(等待响应的时间+要求服务的时间)/要求服务的时间=(10-8+1)/1=3/1=3

    4、一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它们的计算和I/O操作顺序如下:
    P1:计算60ms,I/O 80ms,计算20ms
    P2:计算120ms,I/O 40ms,计算40ms
    若不考虑调度和切换时间,则完成两个作业需要的时间最少是()
    A、240ms
    B、260ms
    C、340ms
    D、360ms

    解析:选B
    在I/O操作的时候,并不会占用处理机,因此可以进行计算操作。
    在这里插入图片描述

    5、若某单处理器多进程系统中有多个就绪态进程,则下列关于处理机调度的叙述中,错误的是()
    A、在进程结束时能进行处理机调度
    B、创建新进程后能进行处理机调度
    C、在进程处于临界区时不能进行处理机调度
    D、在系统调用完成并返回用户态时能进行处理机调度

    解析:选C
    进程处于临界区时证明此时进程正在占用处理机,只要不破坏临界资源的使用规则,就不会影响处理机的调度。
    例如此时正在打印,如果不对处理及进行调度,那么在打印完成前电脑都不能干别的事,计算机效率会下降,因此在打印的时候,只要不破坏打印机的使用,就可以用计算机干其他的事,即进行处理机的调度。

    6、某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为1μs。在T时刻就绪队列中有三个进程P1、P2和P3,其在就绪队列中的等待时间,需要的CPU时间和优先权如下表所示。
    在这里插入图片描述
    若优先权值大的进程优先获得CPU,从T时刻起系统开始进程调度,则系统的平均周转时间为()
    A、54μs
    B、73μs
    C、74μs
    D、75μs

    解析:选D
    周转时间是从一个进程提交,到处理完所用的时间。
    平均周转时间是周转时间之和/进程数量。
    完成一次进程调度的时间(1μs)+进程切换的系统时间(1μs)+等待时间(已经等待的时间+等别的进程执行完需要的时间,即在本进程前执行的进程的执行实现)+需要的CPU时间
    因为按照”优先权值大的进程优先获得CPU“的规律,执行顺序为P2,P3,P1。因此计算如下:
    P2的周转时间:1+1+15+24=41
    P3的周转时间:1+1+18+24+36=80
    P1的周转时间:1+1+30+24+36+12=104
    平均周转时间:(41+80+104)/3=75μs


    同步与互斥

    1、下列对临界区的论述中,正确的是()
    A、临界区是指进程中用于实现进程互斥的那段代码
    B、临界区是指进程中用于实现进程同步的那段代码
    C、临界区是指进程中用于实现进程通信的那段代码
    D、临界区是指进程中用于访问临界资源的那段代码

    解析:选D
    临界区是指进程中用于访问临界资源的那段代码,实现进程互斥或进程同步的功能。

    2、若一个信号量的初值为3,经过多次PV操作后当前值为-1,这表示等待进入临界区的进程数是()
    A、1
    B、2
    C、3
    D、4

    解析:选A
    信号量的初值为3表示允许同时3个进程使用,当3个都被占用后,信号量的值变为0,此时再有进程申请使用,信号量的值变为-1,并不能被满足,置于等待队列,因此等待进入临界区的进程数是1。

    3、一个正在访问临界资源的进程由于申请等待I/O操作而被中断时,它()
    A、允许其他进程进入与该进程相关的临界区
    B、不允许其他进程进入任何临界区
    C、允许其他进程抢占处理器,但不得进入该进程的临界区
    D、不允许任何进程抢占处理器

    解析:选C
    一个正在访问临界资源的进程由于申请等待I/O操作而被中断时,会进入阻塞态,此时处理器被让出,在就绪态排队等候的进程可以使用处理器。
    当临界资源被访问时,会被上锁,此时任何进程不允许访问该临界资源,只有该进程用完解锁后才可以被其他进程访问,进程由于申请等待I/O操作而被中断时,并不会释放临界资源,因此临界资源还处于被上锁的状态,因此不允许其他的进程访问。

    4、用P,V操作实现进程同步,信号量的初值为()
    A、-1
    B、0
    C、1
    D、由用户确定

    解析:选D
    进程同步允许多个进程同时访问同一个临界资源,因此信号量的初值由用户确定。
    进程互斥要求临界资源最多只能被一个进程在某一时刻访问,因此信号量的初值为1

    5、一个进程因在互斥信号量mutex上执行V(mutex)操作而导致唤醒另一个进程时,执行V操作后mutex的值为()
    A、大于0
    B、小于0
    C、大于等于0
    D、小于等于0

    解析:选D
    从”唤醒另一个进程“可知,系统在执行该进程前存在等待执行的进程,因此mutex一定是小于等于-1的,执行V(mutex)会使信号量加1,因此执行V操作之后,mutex的值为小于等于0。

    6、以下关于管程的叙述中,错误的是()
    A、管程是进程同步工具,解决信号量机制大量同步操作分散的问题。
    B、管程每次只允许一个进程进入管程
    C、管程中signal 操作的作用和信号量机制中的V操作相同
    D、管程是被进程调用的,管程是语法范围,无法创建和撤销

    解析:选B
    管程:一种代表共享资源的数据结构,由名称、数据结构、一组操作、初始值构成。类似于一个类。是进程同步工具,解决信号量机制大量同步操作分散的问题,保证了进程互斥,不用程序员自己实现互斥,降低了死锁发生的可能。管程把对共享资源的操作封装起来,每次仅允许一个进程进入管程。管程是被进程调用的,是一种程序设计语言的结构成分,可以被创建和撤销。
    管程中的signal操作可以唤醒一个因x条件而阻塞的进程,仅是唤醒功能,是没有值的,每次执行signal操作都会唤醒一个进程。而V操作是有值的,其值为mutex,每次执行V操作,都会使mutex值加1。两者相似但不相同。

    7、下列关于PV操作的说法中,正确的是()
    a.PV操作是一种系统调用的命令
    b.PV操作是一种低级进程通信原语
    c.PV操作是由一个不可能被中断的过程组成
    d.PV操作是是由两个不可被中断的过程组成的
    A、a、c
    B、b、d
    C、a、b、d
    D、a、d

    解析:选B
    PV操作是一种低级进程通信原语,不是系统调用的命令。高级通信不仅适用于本机,还适用于网络,包括共享存储、消息传递、管道通信。
    PV操作是是由P操作和V操作这两个不可被中断的过程组成的。

    8、在9个生产者,6个消费者共享容量为8的缓冲器的生产者-消费者问题中,互斥使用缓冲器的信号量初始值为()
    A、1
    B、6
    C、8
    D、9

    解析:选A
    因为是互斥使用缓冲器,所以一次只允许最多一个进程使用,因此缓冲器的信号量初始值为1
    如果是同步使用,那初始值就是8

    9、进程P0和进程P1的共享变量定义及其初值为:

    boolean flag[2];
    int turn = 0;
    flag[0]=false;flag[1]=false;
    
    • 1
    • 2
    • 3

    若进程P0和进程P1访问临界资源的类C代码实现如下:

    //进程P0									//进程P1
    void P0()									void P1()
    {											{	
    	while(true)									while(true)
    	{											{
    		flag[0]=true;①								flag[1]=true;⑥
    		turn=1;②									turn=0;while(flag[1]&&(turn==1));while(flag[0]&&(turn==0));⑧
    		临界区;④										临界区;⑨
    		flag[0]=flase;⑤								flag[1]=flase;}											}
    }											}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    则并发执行进程P0和进程P1时产生的情况是()
    A、不能保证进程互斥进入临界区,会产生“饥饿”现象
    B、不能保证进程互斥进入临界区,不会产生“饥饿”现象
    C、能保证进程互斥进入临界区,会产生“饥饿”现象
    D、能保证进程互斥进入临界区,不会产生“饥饿”现象

    解析:选D
    先执行进程P0和先执行P1过程上一样,此处仅分析先执行P0的情况。
    执行顺序为:①⑥②⑦,执行完后【flag[0]=true; flag[1]=true; turn=0;】,再执行③,此时不满足循环条件,因此不进入循环,再执行⑧,满足循环条件,进入循环。再执行④,当处理机轮到P1时,还在循环中,因此执行的是⑧,处理机给到P0时,执行⑤。处理机给到P1,执行③,此时不满足循环条件,跳出循环。处理机给到P0,执行①,处理机给到P1,执行⑨。处理机给到P0,执行②【flag[0]=true; flag[1]=true; turn=1;】,处理机给到P1,执行⑩。后略。
    由上可以看到,代码可以保证两个进程互斥地进入临界区,且不会发生”饥饿“现象。

    10、进程P1和进程P2均包含并发执行的线程,部分伪代码描述如下所示。
    在这里插入图片描述
    下列选项中,需要互斥执行的操作是()
    A、a=1与a=2
    B、a=x与b=x
    C、x+=1与x+=2
    D、x+=1与x+=3

    解析:选C
    两个进程中的x是互相独立的互不干扰,只需要考虑进程内部两个并发执行的线程之间是否存在互斥操作即可。
    在P1中,a分别在各个线程中独自定义,互不干涉,无论先执行谁,都是Thread1中的a=1,Thread2中的a=2。对于Thread1中的x先执行的话是1,后执行的话是3。Thread2中的x先执行的话是2,后执行的话是3,因此x+=1与x+=2存在互斥。
    在P2中,a,b分别在各个线程中独自定义,互不干涉,无论先执行谁,都是Thread3中的a=0,Thread4中的b=0。对于Thread3中的x先执行的话是3,后执行的话是7。Thread4中的x先执行的话是4,后执行的话是7,因此x+=3与x+=4存在互斥。

    11、若x是管程内的条件变量,则当进程执行x.wait()时所做的工作是()
    A、实现对变量x的互斥访问
    B、唤醒一个在x上阻塞的进程
    C、根据x的值判断该进程是否进入阻塞态
    D、阻塞该进程,并将之插入x的阻塞队列中

    解析:选D
    x.wait()时所做的工作是,阻塞该进程,并将之插入x的阻塞队列中。不用判断,一股脑加入阻塞队列,如果可以直接执行,那么signal操作会将其唤醒。
    x.signal()所做的工作是,唤醒一个在x上阻塞的进程。
    实现对变量x的互斥访问是通过wait()操作和signal()操作共同实现的。


    死锁

    1、解除死锁通常不采用的方法是()
    A、终止一个死锁进程
    B、终止所有死锁进程
    C、从死锁进程处抢夺资源
    D、从非死锁进程处抢夺资源

    解析:选D
    对于A,终止一个死锁进程,释放掉它占有的资源,将这些资源给其他死锁进程,可能会解除死锁,此时虽然释放掉这些资源可能还有别的死锁没被接触,但不会对非死锁的进程有什么影响。
    对于B,终止所有死锁进程,死锁肯定被解除了。
    对于C,从死锁进程处抢夺资源,给其他进程使用,等其他进程用完释放后,再给原先死锁的进程,此时资源数量变多,可能就不会产生死锁了。
    对于D,从非死锁进程处抢夺资源,将这些资源给死锁的进程,也不一定会解除死锁,反而原先非死锁的进程现在也没法执行了。

    2、在下列死锁的解决方法中,属于死锁预防策略的是()
    A、银行家算法
    B、资源有序分配算法
    C、死锁检测算法
    D、资源分配图化简法

    解析:选B
    在这里插入图片描述

    3、有两个并发进程,对于如下这段程序的运行,正确的说法是()

    int x,y,z,t,u;
    P1()										P2()
    {											{	
    	while(1)									while(1)
    	{											{
    		x=1;										x=0;
    		y=0;										t=0;
    		if x>=1 then y=y+1;							if x<=1 then t=t+2;
    		z=y;										u=t;
    	}											}
    }											}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    A、程序能正确运行,结果唯一
    B、程序不能正确运行,可能有两种结果
    C、程序不能正确运行,结果不确定
    D、程序不能正确运行,可能会死锁

    解析:选C
    在这里插入图片描述
    第一种情况:
    执行顺序为①②③④⑤⑥⑦⑧,此时结果为x=0;y=1;z=1;t=2;u=2
    第二种情况:
    执行顺序为①②③⑤⑥⑦④⑧,此时结果为x=0;y=1;z=1;t=2;u=2
    第三种情况:
    执行顺序为①②⑤⑥③④⑦⑧,此时结果为x=0;y=0;z=0;t=2;u=2
    第四种情况:
    执行顺序为①⑤②⑥③⑦④⑧,此时结果为x=0;y=0;z=0;t=2;u=2
    第五种情况:
    执行顺序为⑤⑥⑦⑧①②③④,此时结果为x=1;y=1;z=1;t=2;u=2
    第六种情况:
    执行顺序为⑤⑥⑦①②③⑧④,此时结果为x=1;y=1;z=1;t=2;u=2
    第七种情况:
    执行顺序为⑤⑥①②⑦⑧③④,此时结果为x=1;y=1;z=1;t=2;u=2
    第八种情况:
    执行顺序为⑤①⑥②⑦③⑧④,此时结果为x=1;y=1;z=1;t=2;u=2
    综上所述,一共有三种结果,程序不能正确运行。

    4、假设具有5个进程的进程集合P={P0,P1,P2,P3,P4},系统中有三类资源A,B,C,假设在某时刻有如下状态,见下表。
    在这里插入图片描述
    请问当x,y,z取下列哪些值时,系统是出于安全状态的()
    a.1,4,0
    b.0,6,2
    c.1,1,1
    d.0,4,7
    A、b、c
    B、a、b
    C、仅a
    D、a、c

    解析:选C
    在这里插入图片描述
    对于a,【1,4,0】
    先分给P2,满足所有需求,用完后释放所有资源=>1,4,0 - 1,0,0 + 2,3,5 = 2,7,5
    再分给P0,满足所有需求,用完后释放所有资源=>2,7,5 - 0,0,1 + 0,0,4 = 2,7,8
    再分给P1,满足所有需求,用完后释放所有资源=>2,7,8 - 0,7,5 + 1,7,5 = 3,7,8
    再分给P3,满足所有需求,用完后释放所有资源=>3,7,8 - 0,6,2 + 0,6,4 = 3,7,10
    再分给P4,满足所有需求,用完后释放所有资源=>3,7,10 - 0,6,4 + 0,6,5 = 3,7,11
    综上所述,可以使所有进程顺利完成,其中一种安全序列为:P2→P0→P1→P3→P4,系统处于安全状态。


    对于b,【0,6,2】
    先分给P0,满足所有需求,用完后释放所有资源=>0,6,2 - 0,0,1 + 0,0,4 = 0,6,5
    再分给P3,满足所有需求,用完后释放所有资源=>0,6,5 - 0,6,2 + 0,6,4 = 0,6,7
    再分给P4,满足所有需求,用完后释放所有资源=>0,6,6 - 0,6,4 + 0,6,5 = 0,6,8
    此时0,6,8既不能满足P1的0,7,5;也不能满足P2的1,0,0。因此这种情况下,不存在安全序列,系统处于不安全状态


    对于c,【1,1,1】
    先分给P0,满足所有需求,用完后释放所有资源=>1,1,1 - 0,0,1 + 0,0,4 = 1,1,4
    再分给P2,满足所有需求,用完后释放所有资源=>1,1,4 - 1,0,0 + 2,3,5 = 2,4,9
    此时2,4,9即不能满足P1的0,7,5;也不能满足P3的0,6,2;也不能满足P4的0,6,4。因此这种情况下,不存在安全序列,系统处于不安全状态


    对于d,【0,4,7】
    先分给P0,满足所有需求,用完后释放所有资源=>0,4,7 - 0,0,1 + 0,0,4 = 0,4,10
    此时0,4,10即不能满足P1的0,7,5;也不能满足P2的1,0,0;也不能满足P3的0,6,2;也不能满足P4的0,6,4。因此这种情况下,不存在安全序列,系统处于不安全状态

    5、下列关于银行家算法的叙述中,正确的是()
    A、银行家算法可以预防死锁
    B、当系统处于安全状态时,系统中一定无死锁进程
    C、当系统处于不安全状态时,系统之一定会出现死锁进程
    D、银行及算法破坏了思索必要条件中的”请求和保持“条件

    解析:选B
    对于A,银行家算法是避免死锁。
    对于B,C,当系统处于安全状态时,一定无死锁;当有死锁的时候,一定是不安全的。但是不安全不一定就是有死锁,无死锁也不一定是安全的。
    对于D,破坏了思索必要条件中的”请求和保持“条件是预防死锁。

    6、若系统S1采用死锁避免方法,S2采用死锁检测方法。下列叙述中,正确的是()
    a.S1会限制用户申请资源的顺序,而S2不会
    b.S1需要进程运行所需的资源总量信息,而S2不需要
    c.S1不会给可能导致死锁的进程分配资源,而S2
    A、仅a、b
    B、仅b、c
    C、仅a、c
    D、a、b、c

    解析:选B
    限制用户申请资源的顺序是死锁预防中的破坏循环等待条件——顺序资源分配法。死锁检测和死锁避免都不会限制用户申请资源的顺序。
    死锁避免需要进程运行所需的资源总量信息,从而决定要不要分配给某一些进程资源,保证能够顺利进行而不产生死锁。死锁检测方法不需要进程运行所需的资源总量信息,只用知道资源的申请和分配情况就行。
    死锁避免就是通过不给可能导致死锁的进程分配资源,给不会造成死锁的进程分配资源,使之用完以后释放更多的资源来使整个系统顺利进行。死锁检测方法只是检测有没有死锁产生,不会进行资源分配。

    7、系统中有3个不同的临界资源R1,R2和R3,被4个进程P1,P2,P3和P4共享。各进程对资源的需求为:P1申请R1和R2,P2申请R2和R3,P3申请R1和R3,P4申请R2。若系统出现死锁,则处于死锁状态的进程数至少是()
    A、1
    B、2
    C、3
    D、4

    解析:选C
    P1申请R1和R2。用完后释放,对剩下的三个进程分配资源,无论如何分配,都不会产生死锁。
    P2申请R2和R3。用完后释放,对剩下的三个进程分配资源,无论如何分配,都不会产生死锁。
    P3申请R1和R3。用完后释放,对剩下的三个进程分配资源,无论如何分配,都不会产生死锁。
    P4申请R2。用完后释放,产生死锁的情况有如下:
    ①将R1分配给P1,R2分配给P2,R3分配给P3,会导致系统出现死锁,此时进程数为3。
    ②将R1分配给P1,R2分配给P1,R3分配给P2,会导致系统出现死锁,此时进程数为3。
    由此可知,处于死锁状态的进程数至少是3个。

  • 相关阅读:
    过期视频怎么恢复?如何从手机、电脑和其他设备中恢复?
    如何使用VisualSVN在Windows系统上设置SVN服务器并公网远程访问
    javafx-全局快捷键
    java+springboot+vue高校毕业生就业统计管理系统022xr
    【PAT 1033】 To Fill or Not to Fill 贪心算法&模拟
    论文阅读笔记(十一)——BioInformatics Agent (BIA)
    RabbitMQ 笔记
    现货白银图表分析的依据
    在Red Hat 8环境下安装Gradle
    开设自己的网站系类02配置服务器
  • 原文地址:https://blog.csdn.net/qq_45741986/article/details/126351378