一----进程与线程区别
1.定义方面:进程是程序的运行(是一个实体),线程是进程中的一个执行分支,(进程可以创建多个线程,),
2.角色方面:在支持线程机制的系统中,进程是系统资源分配的单位,线程是CPU调度的单位。
3.资源共享方面:进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。
4.独立性方面:进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。
5.其他:两者都可以并发
二----死锁
1.定义:死锁是指多个进程循环等待它方占有的资源而无限期僵持下去的局面。当两个或两个以上的进程同时对多个互斥资源提出使用要求时,有可能导致死锁
2.互斥条件:即一次只有一个进程可以使用资源,其它进程不能访问已经分配给其它进程的资源
3.占有且等待:一个进程等待其它进程释放资源的时候,它已知占有这个资源
4.不可抢占:其它进程不能强行占用已经分配给进程的资源
5.循环等待:存在一个闭合链,链中的进程至少占据链中下一个进程的所需的一个资源
三-----如何避免死锁
1.预防占有且等待:让进程一次性申请完所有的资源。
2.预防不可抢占:(1)当占有资源的进程进一步申请资源的时候,拒绝,然后强制释放当前占用的资源。必要时可再申请。(2)当一个进程请求被另外一个进程所占据的资源的时候,操作系统可以抢占这个占据资源的进程。要求释放资源。第二种方案只有在任意两个进程优先级不同的情况下.
3.预防循环等待:定义资源访问线性序列
四—进程线程间的通信方式
进程
进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket。
线程
1.临界区:通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。
2.互斥量Synchronized/Lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问
3.信号量Semphare:为控制具有有限数量的用户资源而设计的,它允许多个线程在同一时刻去访问同一个资源,但一般需要限制同一时刻访问此资源的最大线程数目。
4.事件(信号),Wait/Notify:通过通知操作的方式来保持多线程同步,还可以方便地实现多线程优先级的比较操作。