• 2022-05-30
    考虑这样一种资源分配策略:对资源的申请和释放可以在任何时刻进行。如果一个进程的资源得不到满足,则考查所有由于等待资源而被阻塞的进程,如果它们有申请进程所需要的资源,则把这些资源取出分给申请进程。 例如,考虑一个有三类资源的系统,Available = (4,2,2)。进程A申请(2,2,1),可以满足;进程B 申请(1,0,1),可以满足;若A再申请(0,0,1),则被阻塞(无资源可分)。此时,若C申请(2,0,0),它可以分得剩余资源(1,0,0), 并从A已分得的资源中获得一个资源,于是,进程A的分配向量变成:Available =(1,2,1),而需求向量变成:Need =(1,0,1)。 (1)这种分配方式会导致死锁吗?若会,举一个例子;若不会,说明死锁的哪一个必要条件不成立。 (2)会导致某些进程的无限等待吗?
  • (1)在本例中不会产生死锁,因为它不满足死锁的第3个必要条件,即不剥夺条件。进程所获得的资源在未使用完毕之前,可以被其他进程剥夺。这样,系统就不会产生死锁。(2)这种方法会导致某些进程无限期的等待。因为被阻塞的进程的资源可以被剥夺,所以被阻塞的进程所拥有资源数量不会因为进程的推进而逐渐增加。这样,随着进程的向前推进,并不能保证进程一定能获得需要的全部资源。例如,本题中的进程A申请(2,2,1)后再申请(0,0,1)被阻塞。此后,进程C又剥夺了进程A的一个资源,使得进程A的资源变为(1,2,1),其需求向量为(1,0,1)。之后,若再创建的进程总是只申请第1和第3类资源,总是占有系统所剩余的第1和第3类资源的全部,且不被阻塞,那么,进程A将会无限期地等待。

    举一反三

    内容

    • 0

      假设某操作系统采用非剥夺法来分配资源,且对资源的申请和释放可以在任何时候进行。当进程A请求资源得不到满足时, ①若没有因等待资源而阻塞的其他进程,则进程A (24) 。 ②若有因等待资源而阻塞的其他进程,则 (25) 检查所有由于等待资源而被阻塞的进程的资源占有情况。若占有了进程A所需的资源,则将资源取出并分配给进程A,那么该策略 (26) 。 A: 申请进程 B: 系统进程 C: 用户进程 D: 设备管理程序

    • 1

      如果3个进程共享某一种临界资源,每次最多可以允许2个进程进入互斥临界区,则信号量的变化范围是( )。 A: 2、1、0、-1 B: 3、2、1、0 C: 2、1、0、-1、-2 D: 1、0、-1、-2

    • 2

      N个进程共享M个资源,每个进程一次只能申请/释放一个资源,每个进程最多需要M个资源,所有进程总共的资源需求少于M+N个,证明该系统此时不会产生死锁。

    • 3

      假设某操作系统采用非剥夺法来分配资源,且对资源的申请和释放可以在任何时候进行。当进程A请求资源得不到满足时, ①若没有因等待资源而阻塞的其他进程,则进程A (24) 。 ②若有因等待资源而阻塞的其他进程,则 (25) 检查所有由于等待资源而被阻塞的进程的资源占有情况。若占有了进程A所需的资源,则将资源取出并分配给进程A,那么该策略 (26) 。 A: 可直接阻塞 B: 释放其他进程已占有的资源,并撤销相关进程 C: 释放申请进程已占有的资源,并撤销该进程 D: 不可直接阻塞

    • 4

      在银行家算法中,系统中有4种类型的资源(A,B,C,D)和5个进程P0,P1,P2,P3,P4,若出现下述资源分配情况: 进程 已分配资源数 还需要资源数 Available A B C D A B C D A B C D P0 0 0 3 1 0 0 1 3 1 6 4 3 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P3 0 3 3 2 0 6 5 4 P4 0 0 0 4 0 6 6 6 试问: (1)该状态是否安全? (2)若进程P2提出请求Request(1,2,3,4)后,系统能否将资源分配给它?