进程和线程间的通信

1.进程间通信概述

进程间通信(IPC:Inter Processes Communication)

        进程是一个独立的资源分配单元,不同进程(这里所说的进程通常是指用户进程)没有关联,不能再一个进程中直接访问另一个进程的资源(例如打开的文件描述符)。

        进程不是孤立的,不同的进程需要进行信息的交互和状态的传递。

1.1 进程间通信的功能:

数据传递:一个进行需要将它的数据发送给另一个进程。

资源共享:多个进程间共享同样的资源。

通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。

进程控制:有些进程希望控制另一个进程(如Debug进程), 此时控制进程希望能够拦截另一个进程的所有操作,并及时知道它的状态改变。

Linux进程间通信(IPC)由以下几部分发展而来:

最初的UNIX进程间通信、SYSTEM V 进程间通信 、POS IX 进程间通信、Socket进程间通信。

进程间通信的实质:

系统只要创建一个进程,进程就回分配到4G的虚拟内存(32位的操作系统),虚拟内存不是常说的内存条的空间,内存条的空间称之为物理内存,虚拟内存和物理内存之间存在一定的映射关系,代码区、数据区、堆区、栈区也都是虚拟内存。4G内存分为3G的用户空间和1G的内核空间。用户空间是私有的,每一个进程的用户空间只能由自己访问和使用。

内核空暗金是所有进程公有的,意味着绝大多数进程间通信方式,本质是对内核空间的操作。

特殊的进程间通信方式:

socket通信可以实现不同主机间的通信,其他的六个只能在一台主机的多个进程间通信。

信号通信是唯一的异步通信机制。

共享内存是所有进程间通过新方式中最高效的,也是直接对物理内存进行通信。

2.信号通信

信号是软件中断,在软件层对中断机制的一种模拟。可以导致一个正在运行的进程被领域给正在进行的异步进程中断,转而处理某个突发事件,信号可以直接进行用户空间和内核进程的交互,内核进程,可以利用它来通知用户空间进程发生了哪些事件。

每个信号和一个数字编码对应,在头文件signum.h中国,这些信号被定义为正整数。

在Linux下想要查看这些信号和编码对应的关系,可以使用命令:kill -l

信号是由当前系统已经定义好的一些标识,每一个标识都会在特定的场合使用,并且都会对进程产生一定的影响。

2.3信号间的基本操作

2.3.1 kill函数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值