操作系统-死锁问题
进程死锁的原因可归结为两点:竞争资源、进程间推进顺序非法。
可能发生死锁:
1.设系统中由六个并发的进程,共同竞争的R1类资源有68个,为使系统有可能会发生死锁,每个进程需要R1类资源最少为( )。
A.14 B.12 C.69 D.13
可能会发生死锁,即系统按照某种极端的分配(每个进程都刚好缺少一个资源)发生死锁。
设每个进程需要的资源最少为X。
6 * (X - 1) >= 68
简单的理解下:有可能发生死锁:最极端的情况是每个进程都刚好缺少一个该类型资源(X - 1),如果进程拥有的该类型资源再多一个,那么整个进程就可以运行完。
————————————————————————————————————————————————————————
一定不会发生死锁:2.设系统中共同竞争的R1类资源有74个,每个进程需要R1类资源最多为15个,为使系统一定不会发生死锁,并发进程最多为( )个。
A.7 B.4 C.5 D.6
系统一定不会发生死锁,即无论资源怎么分配,资源都可以至少满足一个进程
设并发进程为X个。
X * (15 - 1) + 1 <= 74
简单的理解下:每个进程需要资源最多为15个,即为15个的时候就可以运行完该程序,如果每个程序都为14(15 - 1)那么每个进程都不可以运行,
如果在此基础上在给1个,那么这些进程一定可以按某种顺序完成。因此,只要系统最少拥有每个进程缺一个资源的基础上加上一个资源即可运行完整个程序。
基本公式:计算死锁时,假设有m个共享资源,n个进程,每个进程所需的最大资源数为w,那么m>n*(w-1)时,才会不死锁。如果每个进程所需的资源数不同,则先平均分配,只要有一个进程满足了资源要求,就不会死锁。