Unix 中进程间的通信

进程间通信(IPCInterprocess communication)是一组编程接口,让程序员能够协调不同的程序进程,使之能在一个操作系统里同时运行。这使得一个程序能够在同一时间里处理许多用户的要求。因为即使只有一个用户发出要求,也可能导致一个操作系统中多个进程的运行,进程之间必须互相通话。IPC接口就提供了这种可能性。每个IPC方法均有它自己的优点和局限性,因此,对于单个程序而言使用所有的IPC方法是不常见的。

        进程间通信主要包括管道系统IPC(Inter-Process Communication,进程间通信)(包括消息队列,信号,共享存储), 套接字(SOCKET),管道(PIPLE),信号量集

        以下具体分析介绍每种分类:

        .信号机制

        1.信号机制的基本概念
  信号机制主要是作为在同一用户的诸进程之间通信的简单工具。信号本身是一个119中的某个整数,用来代表某一种事先约定好的简单消息。每个进程在执行时,都要通过信号机制来检查是否有信号到达。若有信号到达,表示某进程已发生了某种异常事件,便立即中断正在执行的进程,转向由该信号(某整数)所指示的处理程序,去完成对所发生的事件(事先约定)的处理。处理完毕,再返回到此前的断点处继续执行。可见,信号机制是对硬中断的一种模拟,故在早期的UNIX版本中又称其为软中断。 

       信号机制与中断机制之间的相似之处表现为:信号和中断都同样采用异步通信方式,在检测出有信号或有中断请求时,两者都是暂停正在执行的程序而转去执行相应的处理程序,处理完后都再返回到原来的断点;再有就是两者对信号或中断都可加以屏蔽。
  信号与中断两机制之间的差异是:中断有优先级,而信号机制则没有,即所有的信号都是平等的;再者是信号处理程序是在用户态下运行的,而中断处理程序则是在核心态下运行;还有,中断响应是及时的,而对信号的响应通常都有较长的时间延迟。

      2.信号机制的功能
  1) 发送信号
  这是指由发送进程把信号送至指定目标进程的proc结构中信号域的某一位上。如果目标进程正在一个可被中断的优先级上睡眠,核心便将目标进程唤醒,发送过程就此结束。一个进程可能在其信号域中有多个位被置位, 代表已有多种类型的信号到达, 但对于一类信号, 进程却只能记住其中的某一个。进程可利用系统调用kill向另一进程或一组进程发送一个信号。 

  2) 设置对信号的处理方式
  在UNIX系统中,可利用系统调用signal(sigfunc)来预置对信号的处理方式。其中, 参数sig为信号名,func用于预置处理方式,可分成三种情况:
  (1)  func=1时,进程对sig类信号不予理睬,亦即屏蔽了该信号。
  (2)  func=0,即为缺省值时,进程在收到sig信号后应自我终止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值