进程通信
信号通信机制
管道通信机制
共享主存通信机制
消息传递通信机制
进程通信概念
并发进程之间的交互必须满足两个基本要求:同步和通信。
进程竞争资源时要实施互斥,互斥是一种特殊的同步,实质上需要解决好进程同步问题,
进程同步是一种进程通信,通过修改信号量,进程之间建立起联系,相互协调运行和协同工作。
进程协同工作时,需互相交换信息,可能是少量信息,也可能交换大批数据。
进程之间互相交换信息的工作称为进程通信IPC(munication)。
进程需要通信的情况
l)共享资源-
2) 协同工作-
3) 并发控制-
4)通知进程-
5)传递数据-
进程间通信的方式
信号(signal)通信机制
管道(pipeline)通信机制
消息传递(message passing)通信机制
信号量(semaphore)通信机制
共享主存(shared memory)通信机制
进程间通信的方式发展
UNIX发展历史中,AT&T的Bell与加大伯克利的BSD是两大主力。
Bell致力于改进传统的进程IPC,形成了SYSTEM Ⅴ IPC机制。
BSD在改进IPC的同时,把网络通信规程(TCP/IP)实现到UNIX内核中,考虑把同一计算机上的进程通信纳入更广的网络范围的进程间通信,这种努力结果出现了socket网络通信机制。
信号通信机制
信号机制又称软中断,一种简单的通信机制,通过发送一个指定信号通知进程某个异常事件发生。
用户、内核和进程都能生成信号请求:
1)用户-用户能通过输入ctrl+c,或终端驱动程序分配给信号控制字符的其他任何键来请求内核产生信号。
2)内核-当进程执行出错时,内核检测到事件并给进程发送信号,例如,非法段存取、浮点数溢出、或非法操作码,内核也利用信号通知进程种种特定事件发生。
3)进程-进程可通过系统调用kill给另一个进程发送信号,一个进程可通过信号与另一个进程通信。
用户杀死进程
步1 用户键入中断组合键ctrl+c;
步2 终端驱动程序收到输入字符,并调用信号系统;
步3 信号系统发送SIGINT信号给shell,shell再把它发送给进程;
步4 进程收到SIGINT信号;
步5 进程撤销。
Linux系统信号分类
•与进程终止相关的信号
•与进程例外事件相关的信号
•与进程执行系统调用相关的信号
•与进程终端交互相关的信号
•用户进程发信号
•跟踪进程执行的信号
Linux继承的进程间通信
AT&T
BSD
初始UNIX
IPC
System V IPC
基于socket IPC
POSIX IPC
Linux
IPC
信号机制的实现(1)
信号有一个产生、传送、捕获和释放过程
signal域保存收到的信号
blocked为信号屏蔽位
信号发送工作由系统调用kill完成
信号响应使用系统调用sigaction完成
信号的处理过程
进程通信 来自淘豆网www.taodocs.com转载请标明出处.