Linux 进程控制
1.常用的系统调用
Fork(), exec(),wait(), exit, getpid(), getppid()
2.进程同步
信号,
管道,
管道分为有名管道和匿名管道,有名管道只能用于父子进程之间。
锁,
消息队列,
信号量,
共享内存
几种进程同步方式比较:管道速度慢容量有限,消息队列容量受限还要考虑上次未读完数据,信号量不能传递复杂消息,共享内存要注意同步的问题。
3.线程同步
互斥锁:完全锁
读写锁:特殊的锁,有读加锁、写加锁、不加锁三种状态;当处于读加锁时,可以共享 锁,获得并发能力。
条件变量:把请求线程放入等待队列表中,当资源释放时调用。
4.死锁
形成原因:互相形成竞态,各自拥有对方所需要的资源。
解决办法:
a. 有序申请,比如:A打印机、B磁盘,不管使用哪一个资源,都必须先申请得到A再申请B。
b. 一次申请所需要的所有资源。
c. 从其他进程强制剥夺资源分配给死锁进程。
d. 死锁进程释放资源。