different process requests for the same resource and they both wait others to make a move first.
死锁发生需要有什么条件?
- 互斥,就是在一段时间内某一资源自能由一个进程占有
- 请求和保持,就是说在当前进程已经占有资源的情况下,还在请求其他已经被其他进程占有的资源,就是既不得不到想要的,也不愿意放开已经拥有的。
- 不剥夺 就是说进程已经获得资源 自能由自己释放 其他人夺不走
- 环路等待 意思是死锁发生的时候 必然存在一个进程和资源形成的环形链,每个进程都在等待。
遇到操作系统的死锁怎么解决?
首先我们要想如何预防死锁,比如说对资源进行排序,使得每个进程访问资源的顺序是一定的。
如果难以预防死锁,那么只能避免死锁,也就是说要找到一个安全的序列,使得系统按照这个顺序为每个进程分配资源,能避免死锁。有几个算法是用来解决这个的。
什么是数据库的死锁?
就是当多线程同时访问一个数据库,每个进程拥有的锁都是其他进程所必需的。
如何解决数据库死锁?
所有并发事务按同一顺序访问对象,而且要合理安排表的访问顺序
避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度
保持事务在一个批处理中,减少完成事务可能的延迟并释放锁。
把数据的储存进行空间离散化,就是说把一个表中的数据分散到若干离散的空间去。第一,将大表按行或列分解为若干小表; 第二,按不同的用户群分解。
















