1,死锁的四个条件:
互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放;
请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请求进程阻塞,但又对自己已获得的其它资源保持不放;
不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放;
环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链
2,信号量:是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。
信号量的特性如下:信号量是一个非负整数(车位数),所有通过它的线程/进程(车辆)都会将该整数减一(通过它当然是为了使用资源),当该整数值为零时,所有试图通过它的线程都将处于等待状态。在信号量上我们定义两种操作: Wait(等待) 和 Release(释放)。
3,最常用的进程间通信的方式有:信号,信号量,消息队列,共享内存
信号和信号量是不同的,他们虽然都可用来实现同步和互斥,但前者是使用信号处理器来进行的,后者是使用P,V*作来实现的。
4,线程的状态:1.新建 2.就绪 3.运行 4.阻塞 5.死亡
5,信号和信号量的区别
信号:使用信号处理器来进行的, 使用信号要先知道有哪些信号,在Linux下有31个需要记住的通用信号,据说也是systemV中最常用的那些,信号是实现约定的固定的值。
信号量:使用P,V*作来实现的,而信号量是一个变量记录着某些特定信息。 分为有名和无名两种。进程间通信用有名信号量,同一进程内部通信一般用无名信号量。