每天3分钟操作系统修炼秘籍(15):进程间通信(1):简介
时间:2019-11-18
本文章向大家介绍每天3分钟操作系统修炼秘籍(15):进程间通信(1):简介,主要包括每天3分钟操作系统修炼秘籍(15):进程间通信(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) | 对资源上锁,如果资源已被某进程锁住,则其它进程想要修改甚至读取这些资源,都将被阻塞,直到锁被打开。 |
通过文件实现进程间通信的方式,这没什么可介绍的,简单介绍剩下的几种进程间通信方式。
原文地址:https://www.cnblogs.com/f-ck-need-u/p/11881456.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python爬虫之scrapy中间件的使用
- Python爬虫之scrapy_redis原理分析并实现断点续爬以及分布式爬虫
- Python爬虫之scrapy_splash组件的使用
- Python爬虫之scrapy的日志信息与配置
- Python爬虫之scrapyd部署scrapy项目
- 最近发现一个很有趣的随机小姐姐视频源码 分享给大家
- Codeforces Round #633 (Div. 2)C Powered Addition (贪心,二进制)
- Spring 整合 JUnit
- Java Stax解析XML示例
- Codeforces Round #633 (Div. 2) B Sorted Adjacent Differences(直观感知+排序插放)
- Spring 声明式事务
- Leetcode 1320 二指输入的的最小距离(多情况讨论,DP)
- Spring 基本注解
- Spring 基于注解的 IOC 与 AOP
- Leetcode 1319 连通网络的操作次数(并查集)