两个进程A和B,每一个进程都需要读取数据库中的记录1,2,3假如这两个进程都以1、2、3的次序读取记录,系统将不会发生死锁。但如果A以3、2、1的次序读取记录,B以1、2、3的次序读取记录,则死锁可能会发生。试计算两个进程读取记录的次序如果不确定,那么系统保证不发生死锁的概率是多少
参考答案:概率为1/3。
每个进程读取3个记录的顺序为3!即6种。两者结合则有6*6=36种可能排列。其中不难看出,只要是两个进程第一次申请的记录相同,则不会发生死锁,即其中一个进程得到第一个记录,另一个进程因为等待此记录而阻塞,不会申请其它记录,确保所有记录都可由第一个进程读完后再释放给第二个进程。两个进程第一次同时申请记录1的排列有四种。
A:1,2,3,B:1,2,3
A:1,2,3,B:1,3,2
A:1,3,2,B:1,2,3
A:1,3,2,B:1,3,2
同理,两个进程第一次同时申请记录2的排列也为四种,同时申请记录3的排列也为四种,也就是共有12种排列是不会发生死锁的,故系统保证不发生死锁的概率为12/36=1/3。