東京大学 情報理工学系研究科 コンピュータ科学専攻 2015年8月実施 専門科目I 問題4
标签:
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
系统有进程 和同类资源 。进程 必须同时占有 个资源才能完成;资源只被占用而不被消耗,进程完成后会释放;同一资源不能同时分配给多个进程。
(1)当 且 时,举例说明死锁发生的资源分配与释放时序。
(2)举出一种防止(1)中死锁的方法,并说明限制或缺点。
(3)当 时,判断能否发生死锁并说明理由。
(4)设 且 ,记 。用 表示保证任意 都不会死锁的最大 。
Kai
(1)
先把 分配给 ,再把 分配给 。此后 等待 , 等待 ;两者都未取得所需的两个资源,因而都不会完成并释放资源。
(2)
可采用一次性分配:只有在某进程所需的全部资源均空闲时,才把这些资源同时分配给它;否则该进程不占有任何资源并等待。这样消除了“占有并等待”,不会形成上述死锁。
缺点是已经空闲的部分资源也可能长期闲置,并可能造成等待时间增加或饥饿;实现时还需用互斥操作保证“检查并分配”具有原子性。
(3)
不会。若三个进程均未完成,则每个进程最多只能占有 个资源,总共至多占有 个。由于 ,至少还有一个空闲资源;将它分配给某个已占有一个资源的进程,该进程即可凑齐两个资源、完成并释放资源。因此不存在所有进程都无法继续的状态。
(4)
在死锁状态中,每个未完成进程至多持有 个资源,同时必须没有空闲资源。因此死锁的必要条件为
所以当 时,死锁不可能发生。
该界是紧的:当 时,取
则 。让 持有 个资源、 持有剩余一个资源,二者都还差一个资源,便形成死锁。边界情形 或 时,可行的最大总需求本身也等于 。故答案为