面试题:进程间通信的方式

article/2025/10/9 13:20:23

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,总结

        所有的以上的方式都是生命周期随内核,不手动释就不会消失。

       


http://chatgpt.dhexx.cn/article/qrgsmkiQ.shtml

相关文章

进程间通信的几种方式浅谈(上)

程序员必须让拥有依赖关系的进程集协调,这样才能达到进程的共同目标。可以使用两种技术来达到协调。第一种技术在具有通信依赖关系的两个进程间传递信息。这种技术称做进程间通信(interprocess communication)。第二种技术是同步,…

进程间通信的几种方式

一、管道 在Linux 中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现如下所述。 • 限制管道的大小。实际上&#x…

【进程间通信】进程间通信方式汇总

个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、管道模型1.1 匿名管道1.2 命名管道 2、消息队列2.1 创建消息队列2.2 发送消息2.3 接收消息 3、共…

android中进程间通信的几种方式

进程间通信(IPC)方式 使用Bundle使用文件共享使用Messenger使用AIDL使用COntentProvider使用Socket 一、使用Bundle 我们都知道Android中三大组件Activity,Service,Receiver都支持在Intent中传递Bundle数据,而Bundle…

操作系统——进程间通信

文章目录 其他文章管道消息队列共享内存信号量信号Socket总结 个人博客网站: https://xingkongdiyiren.github.io/myblog/,完整的Java知识体系,包括408,架构,业务,产品,软技能等 其他文章 操作系统——概…

进程间的通信方式(六种)

进程之间的通信 参考文章:https://blog.csdn.net/qq_34827674/article/details/107678226 前提知识:每个进程都有自己的用户空间,而内核空间是每个进程共享的。因此进程之间想要进行通信,就需要通过内核来实现。 管道&#xff1…

【操作系统】进程间通信的五种方式

引言1.进程对白:管道、记名管道、套接字1.管道2.虫洞:套接字3.信号 4.信号旗语:信号量5.进程拥抱:共享内存 引言 进程作为人类的发明,自然免不了脱离人类的习性,也有通信需求。如果进程之间不进行任何通信…

进程之间的通信方式

进程之间的通信方式包括管道,消息队列,共享内存,信号,信号量,socket六种方式,下面来对这6种方式分别进行介绍。 一、管道 管道的结构示意图如上所示,管道包含一个输入端和一个输出端&#xff0…

进程间通信的六种常见方式

目录 进程间通信(IPC): 一、管道 二、FIFO 三、消息队列 四、共享内存 五、信号 六、信号量 七、进程间通信方式总结: 进程间通信(IPC): 进程间通信的方式有很多,这里主要…

idea数据库管理工具配置连接数据库

idea数据库管理工具配置连接数据库 —————————————————————————————————————————————————————— 在cmd中操作数据库太麻烦了,还好idea为我们提供了很方便的数据库管理工具,下面看看如何用idea连接…

idea连接数据库失败解决办法

一.IDEA连接Mysql报错: 未找到驱动程序类 ‘com.mysql.cj.jdbc.Driver‘.  Change driver class 报错详细内容:未找到驱动程序类 ‘com.mysql.cj.jdbc.Driver’. Change driver class 报错原因:Mysql版本为5.0,找不到com.mysql.…

IDEA中如何连接数据库并显示数据库信息。

我的相关博客: java代码程序中连接mysql数据库的方法及代码 mysql数据库并发上锁问题,java代码 关于IDEA中怎么连接mysql数据库 相信部分朋友在使用IDEA操作数据库的时候会出现有关数据库信息的报错。 显示没有此表,或者无数据库等错误信息…

idea连接数据库失败原因及解决方案

这是因为安装mysql的时候时区设置的不正确 mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用8:00格式。使用的数据库是MySQL,在你没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和…

IDEA如何连接数据库 / IDEA连接数据库 新手,图解

如果在下面操作中遇到了问题,可以查看我的这篇笔记 https://blog.csdn.net/qq_44627608/article/details/115442815 1. 打开IDEA的数据库设置 2. 新建数据库链接 左上角的便是你链接的数据库了,第一次打开时左上角应该是空的,需要你从下面的…

IDEA使用Database连接数据库

一,连接数据库 1.点击右侧Database后,点击左上角按钮,然后选中Data Source ,无论使用的是MariaDB还是MySQL都选中MySQL 2.点击非常隐蔽的 … 按钮 3.选中你需要使用的数据库 4.填写数据的账号,密码,数据库名称&…

idea代码连接mysql数据库操作

此文章仅为作者学习上的问题记录,如有错误,欢迎指正。 首先是准备工作 先创建一个Module 之后在此Module下创建一个lib包 然后将下载的连接包复制到lib包下,连接包下载地址: https://cdn.mysql.com//Downloads/Connector-J/mysq…

IDEA中配置数据库连接

1.点击IDEA右边框的 Database ,在展开的界面点击 选择 Data Source ,再选择 MySQL 2.在弹出的界面进行基本信息的填写 3.填写完后,点击Test Connection 测试一下 这样就是填写的没问题,如果是第一次点击这个,需要下载…

Idea连接MySQL数据库教程 (简单明了)

使用Idea连接数据库 具体步骤:点击右侧DataBase → 点击号 → 点击Data Source 选择MySQL → 输入用户名、密码、连接的数据库名称(连接路径会自动生成) → 可点击下面的Test Connection来测试连接 注意事项一: 第一次连接需要下…

IntelliJ IDEA配置连接MySQL数据库

如图: 1、点击主界面右侧边栏Database 2、点击""号 3、点击Data Source 4、点击MySQL 如图填写数据库名,用户名和密码,之后点击下方Test Connection测试 连接成功会显示上图字样 这时发现已经可以查看到数据库信息,说…

IDEA连接mysql数据库

1.保证mysql数据库和IDEA安装成功后,找到IDEA中mysql数据库的连接方式 按照图上的顺序 2.配置连接 在第一次使用的时候,除了要配置连接,还有配置相应的驱动,否则连接的时候会报错。 图中的①②③④⑤分别表示为: ①…