• 进程间通信(1):简介


    进程间通信

    单机操作系统上的进程可以分为两类:

    1.独立进程:这类进程不会和其它进程有任何交流。

    2.协作进程:两个或多个进程之间需要交流。

    例如,ls /tmp命令是独立运行的,不依赖于其它进程,而cat a.log | grep 'abc'命令中的两个进程是协作进程,grep进程依赖于cat进程,grep只有等待到了cat进程产生的数据才能继续执行下去。

    对于单机上不同进程之间的协作,各进程之间需要进行数据的交流,这种行为称为进程间通信(Inter-process communication,IPC),即进程与进程的通信。

    除了单机上的多个进程可能需要进程间通信,多计算机之间的进程有时候也需要进行进程间的通信,这很常见,例如本机上的QQ客户端进程需要和腾讯的QQ服务器上的进程进行数据传输,浏览器浏览网页时,浏览器进程需要和网页所在的服务端进程进行数据传输,等等。

    进程间通信的方式有很多种。从广义上讲,只要进程间能共享数据或传递数据就算是进程间通信。下面列出常见的进程间通信方式:

    进程间通信方式描述
    文件(File) 多个进程可以获取到同一个文件的数据
    管道(pipe) 单方向传输数据的管道,只能一方写,另一方读
    套接字(Socket) 多机进程间通信,当然也可以在本机让两个进程使用socket通信
    Unix域套接字(Unix Domain Socket) 单机进程间通过域套接字模式通信,可看作是双向管道
    共享内存(Shared Memory,shm) 在物理内存上划分一片内存,多个进程共享这片内存
    文件映射(Memory-maped file) 将文件中的一段数据映射到物理内存,多个进程共享这片内存
    消息队列(Message Queue) 某进程将消息放入消息队列,其它进程从队列中接收消息
    信号(Signal) 通过发送某些信号通知其它进程,进程收到信号做出不同的处理
    信号量(Semaphore) 就是信号灯。应用方式有多种,其作用概括起来就是,根据是否有信号灯或信号灯的数量多少来决定是否阻塞进程
    锁(Lock) 对资源上锁,如果资源已被某进程锁住,则其它进程想要修改甚至读取这些资源,都将被阻塞,直到锁被打开。

    通过文件实现进程间通信的方式,这没什么可介绍的,简单介绍剩下的几种进程间通信方式。

  • 相关阅读:
    性能学习总结
    xpath的不稳定性
    jenkins 打包时,提示字符不可映射字符
    jenkins 远程部署失败 控制台部署成功
    QTP ExecuteFile应用外部脚本时报“无效字符”错误_Ealge_新浪博客
    Tips:getroproperty调试可以通过,但是运行不可以
    在mac上搭建octopress+github pages博客
    SDWebImage源码分析
    提高XCode编译速度
    iOS app调试
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12404673.html
Copyright © 2020-2023  润新知