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