面试题:进程间通信的方式
liunx六大进程间通信方式
管道,消息队列,共享内存,信号量,socket,信号,文件锁
1,管道
1,匿名管道:
概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,一般使用fork函数实现父子进程的通信。
2,命名管道:
概念:在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,没有血缘关系的进程也可以进程间通信。
3,特点:
1,面向字节流,
2,生命周期随内核
3,自带同步互斥机制。
4,半双工,单向通信,两个管道实现双向通信。
2,消息队列
1,概念:在内核中创建一队列,队列中每个元素是一个数据报,不同的进程可以通过句柄去访问这个队列。
消息队列提供了⼀个从⼀个进程向另外⼀个进程发送⼀块数据的⽅法。
每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值
消息队列也有管道⼀样的不⾜,就是每个消息的最⼤⻓度是有上限的(MSGMAX),
每个消息队 列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有⼀个上限(MSGMNI)
2,特点:
1, 消息队列可以认为是一个全局的一个链表,链表节点钟存放着数据报的类型和内容,有消息队列的标识符进行标记。
2,消息队列允许一个或多个进程写入或者读取消息。
3,消息队列的生命周期随内核。
4,消息队列可实现双向通信。
3,信号量
1,概念
在内核中创建一个信号量集合(本质是个数组),数组的元素(信号量)都是1,使用P操作进行-1,使用V操作+1,
(1) P(sv):如果sv的值⼤大于零,就给它减1;如果它的值为零,就挂起该进程的执⾏ 。
(2) V(sv):如果有其他进程因等待sv而被挂起,就让它恢复运⾏,如果没有进程因等待sv⽽挂起,就给它加1。
PV操作用于同一进程,实现互斥。
PV操作用于不同进程,实现同步。
2,功能:
对临界资源进行保护。
4,共享内存
1,概念:
将同一块物理内存一块映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。
2,特点:
1,不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以。
2,共享内存是临界资源,所以需要操作时必须要保证原子性。使用信号量或者互斥锁都可以。
3,生命周期随内核。
5,总结
所有的以上的方式都是生命周期随内核,不手动释就不会消失。
面试题:进程间通信的方式相关推荐
- 一种网络进程间通信的方式—— 管道
一种网络进程间通信的方式-- 管道 摘要: 文章主要介绍了计算机网络进程间通信的必要性以及进程间通信所采用的几种方式,重点说明了管道通信的原理及命名管道的实现方法. 关键词:管道 命名管道 进程 一. ...
- linux实现单机qq_Linux后台服务器开发——Linux下进程间通信的方式有哪些?
Linux下进程间通信的方式有: 管道 消息队列 信号 信号量 共享存储 套接字 一.管道 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管道 PIPE无名管道 详情参阅:ht ...
- C | 进程间通信的方式
C | 进程间通信的方式 1.无名管道 无名管道是实现亲缘间进程通信的一种方式,属于半双工通信. 无名管道的实现是队列,不能使用lseek对读写指针偏移. 无名管道有两个端:数据流入端和数据流出端,也 ...
- 进程间通信的方式及原理
# 进程间通信的方式 文章目录 # 进程间通信的方式 消息队列 使用步骤 管道 消息队列 信号 信号量 socket 消息队列 首先消息队列就是内核维护的一块链表区域,只要是有足够权限的进程都可以向队 ...
- 进程间通信的方式——信号、管道、消息队列、共享内存
进程间通信的方式--信号.管道.消息队列.共享内存 多进程: 首先,先来讲一下fork之后,发生了什么事情. 由fork创建的新进程被称为子进程(child process).该函数被调用一次,但返回 ...
- 进程间通信的方式(附代码分析)
进程间通信的方式 1. 进程间通信的几种方式 管道 比如 ls | grep 1;也就是将 进程 ls 拿到的结果作为 grep 1 这个进程的输入.实现了进程间的通信. 消息队列 消息队列就是我们的 ...
- 进程和线程的区别 及 进程间通信的方式
1.进程和线程的区别 (1)进程和线程对比: 进程是对运行时程序的封装,是系统资源调度和分配的基本单位,进程可以看做是操作系统的并行机制. 线程是进程的子任务,cpu ...
- Linux多线程间通信和多进程间通信的方式
文章目录 一.进程间的通信方式 1. 进程间通信的概念 1.1. 进程通信的目的: 1.2. Linux 进程间通信(IPC)的发展 2. 进程间通信的7种方式 2.1. 管道/匿名管道(pipe) ...
- 进程间通信的方式(四):信号量
信号量(semaphore)是一种用于提供不同进程之间或者一个给定的不同线程间同步手段的原语.信号量多用于进程间的同步与互斥,简单的说一下同步和互斥的意思: 同步:处理竞争就是同步,安排进程执行的先后 ...
最新文章
- 认知推理下的常识知识库资源、常识测试评估与中文实践项目索引
- centos6 yum修改源
- log 框架 之间的关系
- TCP/IP / 四次挥手之状态转换图、过程说明和原因
- java学习(108):StringBuilder连接字符串和删除操作
- Python 进程 Process 与线程 threading 区别 - Python零基础入门教程
- Qt|Linux工作笔记-第二种方式读取Linux中top命令(直接读取,非重定向)
- 垃圾回收算法_Java 垃圾回收算法与几种垃圾回收器
- idea 配置maven一直停留在loading archetype list
- java web空指针,java - Web服务中的Java空指针异常@autowired [重复] - 堆栈内存溢出
- Linux 密码复杂度
- 不使用服务器控件的ASP.NET
- mysql根据身份证得到年龄_MySQL根据身份证获取省份 年龄 性别
- 网络工程师必备工具之超级终端
- Android混淆配置(含androidx、kotlin)
- 蓝丝雨第十四季商业实战系列(全民奇迹中控台实战)
- Skiller V3
- java ttf_java直接使用ttf字体,解决window和linux之间的差异
- 中国标准时间、标准时间、时间戳时间格式转换
- Exp5 MSF基础应用 20164302 王一帆