操作系统:死锁 //程序耦合性

来源:互联网 发布:网络与司马是什么意思 编辑:程序博客网 时间:2024/06/01 10:35

   死锁:如果有一组线程,每个线程都在等待一个事件的发生,这个事件只能由改组线程里面的另一线程发出,则我们称这组线程发生了死锁。

   死锁发生的四个条件:

   1.死锁发生的必要条件是条件有限。

   2.持有等待,也就是所一个线程在请求新的资源的时候它原先获得的资源并不会释放。

   3. 不能抢占。

   4.循环等待条件。

 

    死锁的应对:

    1.容许发生死锁

    1)假装没看见不理睬

    2)在死锁发生后,想办法予以解决。

     2.不容许发生死锁

    1)通过生活中的周全考虑,避免难题。

    2)通过将发生死锁的必要条件消除,杜绝死锁地发生。

    

     关于死锁确实可以不予理会,因为有时候要杜绝死锁要花费的时间和精力过大,倒不如如果死锁发生就直接重启,但是还是有死锁发生后将他修复的方法,也就是先检查死锁,再去修复他,但是我们还可以通过死锁发生的必要条件去防范死锁的发送。

    1.动态死锁的预防:优点是无需等待死锁的发生,而是在死锁发生前拒绝会让死锁发生的资源请求。

                                      缺点就是计算过于繁琐。(有银行家算法)

    2.死锁的静态防止:

1)消除资源独占条件

2)消除保持和请求条件

3)消除非抢占条件

4)消除循环等待条件





耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决于模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。

      

0 0
原创粉丝点击