进程间通信的发展

IPC(Inter-Process Communication)进程间通信
1、管道:原始的通信方式
2、System v:unix系统和Linux目前都支持,使用也广泛
3、Posix :随着Linux各版本的出现,需要一套标准

进程间通信的目的

1、数据传输
2、资源共享
3、事件的通知
4、进程控制

进程间通信的分类

1、文件、
2、文件锁:可以互斥,读写锁
3、有名管道(pipe)
4、信号
5、消息队列(SystemV, Posix)
6、共享内存SystemV, Posix)
7、信号量(SystemV, Posix)
8、互斥量(Posix)
9、条件变量(Posix)
10、共享内存(Posix)
11、读写锁(Posix)
12、套接字(socket)

进程之间的关系

  1. 互斥:矛盾关系

    比如:两个小孩争抢一个玩具。只有一个小孩能拿到玩具。
    
  2. 同步:协助关系

    比如:司机与售票员;
    司机在开车之前,要得到售票员关门的通知。
    汽车到站后,司机要通知售票员,可以开门。
    
  3. 死锁关系:

      多个进程在等待对方的资源,然后都不给对方
      解决死锁,可用信号量
    

PV原语:

  1. 互斥:PV操作在同一个进程中

  2. 同步:PV操作在不同的进程中

  3. 信号量计数值s:

    S>0:表示有S个资源可用
    S=0:表示满意资源可用,也没进程在等待资源
    S<0: 表示无资源可用  如果s=-2 表示还有2个进程在等待资源
    
Logo

更多推荐