标签:概念区分
1、程序、进程、线程简洁概括
程序是二进制文件,是永久性的,一个进程对应一个程序,一个程序可能对应多个进程
进程是承担分配系统资源的一个实体
线程是操作系统调度的基本单位
2、死锁产生的原因、产生的必要条件、产生的基本场景是什么?如何避免死锁?
产生原因:
(1)不同线程有交集
(2)使用锁不恰当
必要条件:
(1)互斥
(2)循环等待(不释放现有锁资源而申请锁资源)
(3)请求保持(请求新的锁资源,保持现有的锁资源)
(4)不剥夺
产生的基本场景:
(1) 同一线程先后两次调用lock, 第二次调用时,由于锁已被占用,该线程需要挂起等待别的线程释放锁,而锁被自己占用,该线程又被挂起而没机会释放锁,因此就永远处于挂起等待状态了
(2)线程A获得了锁1,线程B获得了锁2,线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线程A和线程B就永远处于挂起等待状态了
避免死锁:
互斥这一属性不能破坏
对于循环等待:可释放现有锁
对于请求保持:可释放现有锁
对于不剥夺:优先级高可以剥夺
标签:概念区分
原文地址:http://frankenstein.blog.51cto.com/10918184/1827041