问题
问答题
某银行计算机系统要实现一个电子转账系统,基本的业务流程是:首先对转出方和转入方的账户进行加锁,然后进行转账业务,最后对转出方和转入方的账户进行解锁。如果不采取任何措施,系统会不会发生死锁为什么请设计一个能够避免死锁的办法。
答案
参考答案:系统会死锁。因为对两个账户进行加锁操作是可以分割进行的,若此时有两个用户同时进行转账,P1先对账户A进行加锁,再申请账户B;P2先对账户B进行加锁,再申请账户A,此时产生死锁。解决的办法是:可以采用资源顺序分配法对A、B账户进行编号,用户转账时只能按照编号由小到大进行加锁;也可以采用资源预分配法,要求用户在使用资源之前将所有资源一次性申请到。