• 首页
  • 热点
  • 资讯
  • 财经
  • 要闻
  • 经济
  • 快讯
  • 科技
  • 滚动
  • 行业
  • 教育
logo
  • 中陕网首页 >
  • 中陕网 > 科技 >
  • 正文

进程间的通信方式主要有哪些?管道通信方式是什么?

2022-11-18 11:23:20 来源:置顶网

进程间的通信方式主要有哪些?

前提知识:每个进程都有自己的用户空间,而内核空间是每个进程共享的。因此进程之间想要进行通信,就需要通过内核来实现。

管道:

管道是最简单,效率最差的一种通信方式。

管道本质上就是内核中的一个缓存,当进程创建一个管道后,Linux会返回两个文件描述符,一个是写入端的描述符,一个是输出端的描述符,可以通过这两个描述符往管道写入或者读取数据。

如果想要实现两个进程通过管道来通信,则需要让创建管道的进程fork子进程,这样子进程们就拥有了父进程的文件描述符,这样子进程之间也就有了对同一管道的操作。

缺点:

半双工通信,一条管道只能一个进程写,一个进程读。

一个进程写完后,另一个进程才能读,反之同理。

消息队列:

管道的通信方式效率是低下的,不适合进程间频繁的交换数据。这个问题,消息队列的通信方式就可以解决。A进程往消息队列写入数据后就可以正常返回,B进程需要时再去读取就可以了,效率比较高。

而且,数据会被分为一个一个的数据单元,称为消息体,消息发送方和接收方约定好消息体的数据类型,不像管道是无格式的字节流类型,这样的好处是可以边发送边接收,而不需要等待完整的数据。

但是也有缺点,每个消息体有一个最大长度的限制,并且队列所包含消息体的总长度也是有上限的,这是其中一个不足之处。

另一个缺点是消息队列通信过程中存在用户态和内核态之间的数据拷贝问题。进程往消息队列写入数据时,会发送用户态拷贝数据到内核态的过程,同理读取数据时会发生从内核态到用户态拷贝数据的过程。

共享内存:

共享内存解决了消息队列存在的内核态和用户态之间数据拷贝的问题。

现代操作系统对于内存管理采用的是虚拟内存技术,也就是说每个进程都有自己的虚拟内存空间,虚拟内存映射到真实的物理内存。共享内存的机制就是,不同的进程拿出一块虚拟内存空间,映射到相同的物理内存空间。这样一个进程写入的东西,另一个进程马上就能够看到,不需要进行拷贝。

(这里的物理内存貌似不是内核空间的内存?)

信号量:

当使用共享内存的通信方式,如果有多个进程同时往共享内存写入数据,有可能先写的进程的内容被其他进程覆盖了。

因此需要一种保护机制,信号量本质上是一个整型的计数器,用于实现进程间的互斥和同步。

信号量代表着资源的数量,操作信号量的方式有两种:

P操作:这个操作会将信号量减一,相减后信号量如果小于0,则表示资源已经被占用了,进程需要阻塞等待;如果大于等于0,则说明还有资源可用,进程可以正常执行。

V操作:这个操作会将信号量加一,相加后信号量如果小于等于0,则表明当前有进程阻塞,于是会将该进程唤醒;如果大于0,则表示当前没有阻塞的进程。

(1)信号量实现互斥:

信号量初始化为1

进程 A 在访问共享内存前,先执行了 P 操作,由于信号量的初始值为 1,故在进程 A 执行 P 操作后信号量变为 0,表示共享资源可用,于是进程 A 就可以访问共享内存。

若此时,进程 B 也想访问共享内存,执行了 P 操作,结果信号量变为了 -1,这就意味着临界资源已被占用,因此进程 B 被阻塞。

直到进程 A 访问完共享内存,才会执行 V 操作,使得信号量恢复为 0,接着就会唤醒阻塞中的线程 B,使得进程 B 可以访问共享内存,最后完成共享内存的访问后,执行 V 操作,使信号量恢复到初始值 1。

(2)信号量实现同步:

由于多线程下各线程的执行顺序是无法预料的,有些时候我们希望多个线程之间能够密切合作,这时候就需要考虑线程的同步问题。

信号量初始化为0

如果进程 B 比进程 A 先执行了,那么执行到 P 操作时,由于信号量初始值为 0,故信号量会变为 -1,表示进程 A 还没生产数据,于是进程 B 就阻塞等待;

接着,当进程 A 生产完数据后,执行了 V 操作,就会使得信号量变为 0,于是就会唤醒阻塞在 P 操作的进程 B;

最后,进程 B 被唤醒后,意味着进程 A 已经生产了数据,于是进程 B 就可以正常读取数据了。

信号:

在Linux中,为了响应各种事件,提供了几十种信号,可以通过kill -l命令查看。

如果是运行在shell终端的进程,可以通过键盘组合键来给进程发送信号,例如使用Ctrl+C产生SIGINT信号,表示终止进程。

如果是运行在后台的进程,可以通过命令来给进程发送信号,例如使用kill -9 PID产生SIGKILL信号,表示立即结束进程。

Socket:

前面提到的管道,消息队列,共享内存,信号量和信号都是在同一台主机上进行进程间通信,如果想要跨网络和不同主机上的进程进行通信,则需要用到socket。

实际上,Socket不仅可以跨网络和不同主机进行进程间通信,还可以在同一主机进行进程间通信。

Socket是操作系统提供给程序员操作网络的接口,根据底层不同的实现方式,通信方式也不同。

Socket的系统调用:

int socket(int domain, int type, int protocal)

1

针对TCP的Socket通信:

服务端和客户端初始化Socket,得到文件描述符

服务端调用bind,绑定IP和端口

服务端调用listen,进行监听

服务端调用accept,等待客户端连接

客户端调用connect,向服务端发起连接请求。(TCP三次握手)

服务端调用accept返回用于传输的Socket的文件描述符(和第一点得到的Socket不同)

客户端使用write写入数据,服务端调用read读取数据

客户端断开连接时会调用close,服务端也会调用close(TCP四次挥手)

责任编辑:

免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。如稿件版权单位或个人不想在本网发布,可与本网联系,本网视情况可立即将其撤除。

    为您推荐

  • 进程间的通信方式主要有哪些?管道通信方式是什么?

    进程间的通信方式主要有哪些?前提知识:每个进程都有自己的用户空间,而内核空间是每个进程共享的。因此进程之间想要进行通信,就需要通过
  • 钩子函数是什么东西?常见的钩子函数有哪些?

    钩子函数是什么东西钩子函数:钩子函数是在一个事件触发的时候,在系统级捕获到了他,然后做一些操作。一段用以处理系统消息的程序。钩子就
  • MOS管指的是什么东西?MOS管工作原理是什么?

    MOS管指的是什么东西?MOS管又称场效应管,即在集成电路中绝缘性场效应管。MOS英文全称为Metal-Oxide-Semiconductor,即金属-氧化物-半导体
  • rgb与16进制颜色是一样的吗?rgb与16进制颜色应该如何相互转换?

    rgb与16进制颜色如何相互转换?在css中定义颜色可以使用rgb颜色值,例:rgb(182, 0, 35);也可以使用16进制颜色值,例: B60023。不管是rgb
  • a1932苹果是什么产品型号?MacBook Air 2018配置参数

    a1932苹果是什么产品型号A1932是苹果MacBook Air 2018款个人电脑。MacBook Air 2018配备视网膜显示屏,在13 3英寸的屏幕上实现了2560*1
  • 电池循环次数是什么意思?电池不充到100算一次循环吗?

    电池循环次数是什么意思电池循环次数是指电池完成一个完整的充电周期,即完整充放电过程的总数;当电池达到了一次完整的充电周期,电池循环
  • win10企业版和专业版有什么区别?win10文件夹上面有个锁头怎么回事?

    win10企业版和专业版有什么区别区别:1、win10专业版主要面向一些技术人员和中小企业;而win10企业版主要面向大中型企业。2、专业版具有强大
  • 电脑蓝屏一般是硬件问题还是系统问题?电脑频繁蓝屏重启解决办法

    电脑蓝屏一般是硬件问题还是系统问题硬件问题和系统问题都能导致电脑蓝屏。常见硬件问题:1、过度超频,由于进行了超载运算,造成内部运算
  • yc电缆指的是什么电缆?电线和电缆的区别有哪些?

    yc电缆指的是什么电缆YC电缆是指重型通用橡套电缆,Y代表橡胶绝缘,C代表重型电缆;YC电缆适用于交流额定电压450 750V以下家用电器、电动工
  • a2298是什么手机型号?iPhone SE2配置参数介绍

    a2298是什么手机型号A2298是苹果iPhone SE2的型号。iPhone SE2一般指iPhone SE(第二代),采用4 7英寸Retina HD显示屏,搭载A13仿生处理
  • 手机的cpu和gpu分别是什么意思?手机打游戏看CPU还是gpu性能?

    手机的cpu和gpu分别是什么意思手机CPU指的是手机处理器,它是整台手机的控制中枢系统,也是逻辑部分的控制中心;手机CPU通过运行存储器内的
  • g4400是Intel第几代cpu?G4400处理器重要参数

    g4400是Intel第几代cpug4400是第六代cpu。G4400是六代intel处理器,是奔腾双核系列,适用机型为台式机的CPU。intel处理器是英特尔公司开发
  • 中级工程师究竟是什么职称?中级工程师申报所需材料都有什么?

    中级工程师究竟是什么?工程系列职称的中级职称称呼。初、中、高级职称分别对应的称呼是助理工程师、工程师、高级工程师(副高)、研究员级或
  • 交易猫的安心购是什么意思?交易猫平台安全性如何?

    交易猫的安心购是什么意思安心购是交易猫特别制定的交易和服务标准,平台内符合标准的商品均会被赋予安心购的标签;安心购服务相当于交易猫
  • 图片变文档可以用什么软件?苹果手机照片如何转为jpg格式?

    图片变文档可以用什么软件图片变文档可用的软件:1、扫描全能王,可提取图片文字内容,并一键生成word、Excel等多种格式。2、有道云笔记,
  • iPad无线局域网和蜂窝网络分别是什么?ipad无线网和蜂窝网络的区别都有什么?

    ipad无线局域网和蜂窝网络分别是什么意思无线局域网是指应用无线通信技术将计算机设备互联起来,构成可以互相通信和实现资源共享的网络体系
  • 全新一代骁龙8是什么处理器?骁龙8 Gen1处理器简介

    全新一代骁龙8是什么处理器全新一代骁龙8是指骁龙8 Gen1,是高通首款使用ARM最新Arm v9架构的芯片。骁龙8 Gen1处理器采用了三星4nm制程
  • virbox指的是什么软件?VirtualBox软件特点有哪些?

    virbox是什么软件virbox是一款开源的虚拟机软件,根据GNU通用公共许可证 (GPL) 第2版分发;使用者可以在VirtualBox上安装并且执行Solaris
  • 软考一般指的是什么考试?软件水平考试报考条件都有什么?

    软考一般指的是什么考试软考也叫软件水平考试,全称计算机技术与软件专业技术资格(水平)考试,是由国家人力资源和社会保障部、工业和信息化
  • thinkbook14+电脑有指纹解锁功能吗?惠普星14青春版有指纹解锁吗?

    thinkbook14+电脑有指纹解锁功能吗thinkbook14+有指纹解锁功能,其设置方法是:1、在电脑桌面点击左下角的windows图标;2、选择账户选项;3、
  • 加装固态硬盘之后需要重新装系统吗?加装固态硬盘后怎么设置成c盘?

    加装固态硬盘之后需要重新装系统吗加装固态硬盘不一定要重新装系统;如果添加的硬盘,只是用来扩展存储容量,那么就没有必要重装系统;如果添
  • 玫瑰之战是什么牌子的手机?moto razr 5G手机是哪一年发布的?

    玫瑰之战是什么牌子的手机玫瑰之战的手机是摩托罗拉的牌子,是moto razr 5G手机型号;该手机搭载骁龙765G处理器,6 2英寸P-OLED内屏、2 7
  • 关闭用户体验计划可能有什么坏处?手机用户体验计划关了好还是开的好?

    关闭用户体验计划可能有什么坏处关闭用户体验计划是没有坏处,不会影响手机系统更新和正常使用的,其关闭用户体验计划的方法是:1、向下滑
  • 对方未启用摄像头一般是什么原因?微信视频黑屏是什么原因?

    对方未启用摄像头一般是什么原因对方未启用摄像头的原因:1、对方未开启摄像头或者摄像头被遮挡;2、网络信号较差,接收不到视频画面;3、微
  • 绿色软件指的是什么软件?绿色版软件的严格特征有哪些?

    绿色软件指的是什么软件绿色软件也称为可携式软件,指一类小型软件,多数为免费软件,最大特点是软件无需安装便可使用,可存放于闪存中,移
  • 华为frd-al10是什么手机型号?荣耀8是哪一年发布的手机?

    华为frd-al10是什么手机型号华为frd-al10是荣耀8的型号,是荣耀旗下的一款智能手机。荣耀8采用5 2英寸屏幕,搭载海思麒麟950八核处理器,后
  • iphone13摄像头旁边的小孔是什么?iPhone13机身参数设计简介

    iphone13摄像头旁边的小孔是什么iphone13摄像头旁边的小孔是麦克风,采用双唛降噪设计,是辅助副送话器收音用的,可以用来降低环境噪音和提
  • Kibana是什么软件有什么用?Kibana安装详细流程介绍

    Kibana是什么软件有什么用?Kibana介绍Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、
  • TCP/IP协议相关知识介绍 网络接口层使用的协议是什么?

    TCP IP协议相关知识介绍1 TCP IP协议,中文名称:传输控制协议 网际协议,它是internet上所有网络和主机之间进行交流所使用的共同语言,是i
  • RGB常用颜色数值介绍 RGB分别代表哪几种颜色?

    RGB常用颜色代码是什么1、RGB分别代表着3种颜色:R代表红色,G代表绿色、B代表蓝色。常用颜色:白色:rgb(255,255,255)黑色:rgb(0,0,0)红
  • win11系统只有一个c盘有必要分盘吗?Windows 11操作系统相关知识介绍

    win11只有一个c盘有必要分盘吗win11只有一个c盘是有必要分盘的,因为只有将磁盘分开归类,才会使我们的系统存储比较均衡,也减少了系统运行
  • 注销手机卡需要哪些条件?电信销户要赔违约金吗?

    注销手机卡需要哪些条件手机卡注销需要的条件是:1、这个卡必须是正常的状态,没有欠费;2、这个卡是没有合约的或者合约已经到期的,假如你
  • 光信号闪红灯一般是什么问题?光猫的相关知识介绍

    光信号闪红灯是什么问题光信号闪红灯是光信号中断的意思。原因及解决方法:1、室内尾纤连接光猫接头松脱或者接触不良,需要将接口拨下清理
  • 买二手电脑需要注意哪些配置?完全不懂电脑应该怎么买电脑?

    买二手电脑需要注意哪些配置买二手电脑需要注意:1、CPU,CPU好坏主要与频率,二级缓存有关,频率越大运行速度和响应速度会更快;2、内存,
  • dvdrw驱动器是什么意思?DVD-RW相关知识资料简介

    dvdrw驱动器是什么意思dvdrw驱动器是指DVD-RW驱动器,意思是这个光盘驱动器可以读取DVD、VCD、CD碟片,同时也可以刻录DVD、CD碟片;DVD-RW的
  • 联通增值业务费是什么意思?中国联通怎么查询增值业务详单?

    联通增值业务费是什么意思联通增值业务费是指运营商办理的某项除SIM卡以外其他的一些另加的业务,联通增值业务费主要包括使用的短信、彩信
  • 富士康ip和id分别是做什么工作的?富士康QE与SQE的区别都有什么?

    富士康ip和id分别是干什么的富士康ip和id分别是:1、富士康ip是制作手机边框,主要是金属加工,工作内容就是cnc,冲压;2、富士康id是组装手
  • steam++是加速器软件吗?Steam++软件主要功能有哪些?

    steam++是加速器软件吗?Steam++是加速器。Steam++是一款功能非常专业且实用的跨平台多功能游戏工具箱和加速器,能够帮助用户更加轻松、流畅
  • 网络梯子指的是什么东西?VPN的分类划分标准详细介绍

    网络梯子指的是什么东西网络梯子表示vpn,是一种通过安全性较低的网络来创建安全加密连接的技术,可以允许远程用户和分支机构安全的去访问
  • icloud drive是什么意思?iCloud Drive有什么用?

    icloud drive是什么意思iCloud Drive是苹果云服务的增强功能,可以看作是一个云网盘,支持苹果及第三方应用的数据存储和同步;它可以将各
  • 纺织品中的“纤维之最”相关冷知识你知道哪些?最结实的纺织品是什么?

    01最结实的是涤纶涤纶纤维强力比棉花高1倍,比羊毛高3倍。耐冲击强度比锦纶高4倍,比粘胶纤维高20倍。它坚固结实,干态和湿态的强度保持不
  • 硬盘寻道错误率指的是什么?硬盘寻道错误率在多少范围属于正常?

    寻道错误率多少正常,寻道错误率是什么意思这个很多人还不知道,现在让我们一起来看看吧!1、如果跟踪错误率低,硬盘读取速度会变慢。跟踪误
  • 世界各国分别有哪些著名通讯社?四大通讯社和五大通讯社分别是哪些?

    世界各国都有哪些著名通讯社?世界各国主要通讯社 美联社:AP (Associated Press) 路透社:Reuters 法新社:AFP (Agence France Pre
  • 魔兽图霸天下冠军赛详细知识介绍 为什么要举办地图冠军赛?图霸天下比赛奖金多少?

    在魔兽的历史上,曾经出现过三张国图:LT、TR、EI。很长一段时间内,你只要打开对战平台,你就只能看到这几张地图的主机,别的你C了也没人
  • sunwear在黑客界属于顶尖水平吗?顶级黑客回归游戏剑三有哪些影响?

    说起黑客,大家脑海里想象的肯定都是端坐在电脑前,不断敲击键盘,入侵各种戒备森严的安全 的身影。但是你知道,现实中的这位黑客不仅专业
  • 推荐一些让人看了就怦然心动的网站 比较好的一些资源网站推荐

    现在很多人每天都会花很多时间上网,穿梭在各种网站之间。今天小编就来推荐几个网站,保证大家流连忘返。一、别样网这是一个拥有非常多高质
  • jy灌溉系统是什么东西? 智慧农业灌溉系统相关知识介绍

    jy灌溉系统(智慧灌溉系统)智慧农业灌溉系统简介:智慧农业灌溉系统也叫智能灌溉系统、智能农业物联网精细农业自控系统,是精讯畅通物联网为
  • 2021中国为什么要限电?2021全国限电的原因都有哪些?

    一、2021全国限电的原因是什么?1 全国限电原因一:煤价上涨火力发电一般都需要用到煤,而今年煤炭价格有多夸张相信很多人还不了解,在5月份
  • 调鸡尾酒常用的酒杯都有什么?柯林杯指的是什么杯?

    俗话说:葡萄美酒夜光杯,也证明了美酒需要酒杯才能更好的呈现它的美。同样一杯完美的鸡尾酒,必须搭配合适的鸡尾酒杯,才能给客户带来一场
  • 神秘组织帝王计划20个怪兽具体名单介绍 帝王计划20个怪兽最终结局是怎样的?

    帝王计划20个怪兽名单:《哥斯拉2:怪兽之王》上映后,其神秘组织帝王计划 也是付出水面,在预告也看到了除了哥斯拉、王者基拉多、拉顿、魔
  • 小米有品是小米官方的吗?小米有品和小米是同一家公司的吗?

    小米有品是不是小米官方的吗小米有品是小米官方的。小米有品是小米旗下新生活方式电商,致力于成为新中产优选的精品电商平台;它依托小米生
  • 167号段能去联通办理业务吗?中国联通业务服务渠道都有什么?

    167号段能去联通办理业务吗?167号段能去联通办理业务。167号段虚拟运营商并非网上卖的网络虚拟号码,是真实手机卡,你说的网络虚拟号码那叫
  • 邮箱别名是什么意思?网易邮箱别名可以收到邮件吗?

    邮箱别名是什么意思邮箱别名是指邮箱的另一个名字,就是对自己的邮箱添加几个虚拟的其它邮箱地址;这样不论对方发邮件到用户的哪个邮箱别名
  • ka表示什么电器元件?中间继电器与接触器的主要区别是什么?

    ka是什么电器元件ka表示中间继电器;中间继电器通常用来传递信号和同时控制多个电路,也可用来直接控制小容量电动机或其他电气执行元件;中间
  • znr指的是什么电子元件?压敏电阻的作用主要有哪些?

    znr指的是什么电子元件?znr是zinc oxide nonlinear resistor的缩写,表示氧化锌非线性电阻,即压敏电阻;主要成分为氧化锌主材料和氧化铋
  • i5属于什么级别档次的处理器?i7和i5主要有什么区别?

    i5属于什么级别处理器i5处理器属于中高端级别;酷睿i5处理器是英特尔的一款产品,同样建基于Intel Nehalem微架构;与Core i7支持三通道存储

相关推荐

  • 电脑蓝屏一般是硬件问题还是系统问
  • yc电缆指的是什么电缆?电线和电缆
  • a2298是什么手机型号?iPhone SE2
  • 手机的cpu和gpu分别是什么意思?手
  • g4400是Intel第几代cpu?G4400处理
  • 中级工程师究竟是什么职称?中级工
  • 交易猫的安心购是什么意思?交易猫
  • 图片变文档可以用什么软件?苹果手
  • iPad无线局域网和蜂窝网络分别是什
  • 全新一代骁龙8是什么处理器?骁龙8

阅读排行

  • 进程间的通信方式主要有哪些?管道通信方式是什么?
  • 钩子函数是什么东西?常见的钩子函数有哪些?
  • MOS管指的是什么东西?MOS管工作原理是什么?
  • rgb与16进制颜色是一样的吗?rgb与16进制颜色应该如何相互转换?
  • a1932苹果是什么产品型号?MacBook Air 2018配置参数
  • 电池循环次数是什么意思?电池不充到100算一次循环吗?
  • win10企业版和专业版有什么区别?win10文件夹上面有个锁头怎么回事?
  • 电脑蓝屏一般是硬件问题还是系统问题?电脑频繁蓝屏重启解决办法
  • yc电缆指的是什么电缆?电线和电缆的区别有哪些?
  • a2298是什么手机型号?iPhone SE2配置参数介绍

中陕网版权所有