首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
upjmbai5800
2019-08-15 10:40
中国银联_技术开发中心_应用开发
关注
已关注
取消关注
操作系统(2)
操作系统(2)
进程间通信方式详细叙述
1、管道如何通信
管道是由内核管理的一个缓冲区,相当于我们放入内存中的一个纸条,管道的一端连接一个进程的输出,另一端连接一个进程的输入。
管道这个缓冲区不需要很大,它被设计成为环形的数据结构,以便管道可以被循环利用。当管道中没有信息的话,从管道中读取的进程会等待,直到另一端的进程放入信息。当管道被放满信息的时候,尝试放入信息的进程会等待,直到另一端的进程取出信息。当两个进程都终结的时候,管道也自动消失。
管道如何创建?
管道利用fork机制(不同进程中的同一个虚拟地址被映射到不同的物理地址)建立,从而让两个进程可以连接到同一个PIPE上。
如下图,最开始的时候,左边一红一黑都连接在同一个进程Process 1上(连接在Process 1上的一红一黑)。当fork复制进程的时候,会将这两个连接也复制到新的进程(Process 2)。随后,每个进程关闭自己不需要的一个连接 ,两个黑色的箭头被关闭,这样,剩下的红色连接就构成了如上图的PIPE。
2、命名管道如何通信
管道只能用于父进程和子进程之间,或者拥有相同祖先的两个子进程之间 ,而命名管道可以让没有亲缘关系的进程之间通信。
命名管道又叫做FIFO (First in, First out)为一种特殊的文件类型,本质是文件。以FIFO的文件形式存储于文件系统中。命名管道是⼀个设备文件,有名字,因此,不相关的进程可以通过打开命名管道进行通信,即使进程与创建FIFO的进程不存在亲缘关系,只要可以访问该路径,就能够通过FIFO相互通信。值得注意的是,FIFO(first input first output)总是按照先进先出的原则工作,第⼀个被写入的数据将先从管道中读出。
3、信号量
定义:信号量是一个特殊的变量,用来协调进程对共享资源的访问,确保一个临界区同一时间只有一个线程在访问。
最简单的信号量是只能取0和1的变量,这也是信号量最常见的一种形式,叫做二进制信号量。而可以取多个正整数的信号量被称为通用信号量。
信号量只能进行两种操作:等待和发送信号
举个例子,就是两个进程共享信号量sv,sv=1,第一个进程得到了这个信号量,可以进入临界区域,并使sv减1变为0。第二个进程一看信号量sv=0,就会被挂起以等待第一个进程离开临界区,第一个进程离开临界区的时候会把sv+1。
名词解释:
某些资源同一时间只能被一个进程占用,这些资源叫临界资源。进程内访问临界资源的代码被称为临界区。
消息队列
消息队列就是链表队列
消息队列跟命名管道有不少的相同之处
与命名管道一样,消息队列进行通信的进程可以是不相关、无亲缘关系的进程。
同时它们都是通过发送和接收的方式来传递数据的。
而且它们对每个数据都有一个最大长度的限制。
消息队列优势:
消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
除开发送、接收进程,消息队列可以独立存在。管道是发送、接收进程关闭了,管道就自动关闭了。
消息队列,避免了命名管道同步和阻塞问题。
接收可以通过消息类型有选择地接收数据,而不是像命名管道中那样,只能默认地接收。
4、signal信号
信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达。
信号的种类
可以从两个不同的分类角度对信号进行分类:
可靠性方面:可靠信号与不可靠信号;
信号分为可靠和不可靠的,早期的信号比较原始,容易丢失,因此不可靠。后期新增了一些信号,这些信号支持排队,不会丢失,直接定义为可靠信号。
信号值小于SIGRTMIN=32都是不可靠信号,信号值位于SIGRTMIN=32和SIGRTMAX=63之间的信号都是可靠的。信号的可靠与不可靠只与信号值有关,与信号的发送及安装函数无关。
与时间的关系上:实时信号与非实时信号。
非实时信号都不支持排队,都是不可靠信号,编号是1-31,0是空信号;实时信号都支持排队,都是可靠信号
信号的发送和安装
发送信号的主要函数有:kill()、raise()、 sigqueue()、alarm()、setitimer()以及abort()。
如果进程要处理某一信号,那么就要在进程中安装该信号。安装信号主要用来确定信号值及进程针对该信号值的动作之间的映射关系,即进程将要处理哪个信号;该信号被传递给进程时,将执行何种操作。
5、共享内存
共享内存是最有用的、最快的进程间通信方式。是针对其他通信机制运行效率较低而设计的。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。
6、套接字Socket
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
分为两种
流式Socket(STREAM):是一种
面向连接的Socekt,针对面向连接的TCP服务应用,安全,但是效率低;
数据报式Socket(DATAGAM):是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(丢失,顺序混乱,在接受端要分析重排及要求重发),但效率高。
多个进程处理一个Socket(端口)?
计算机上不同服务调用不同的
端口(Tomcat和Nginx端口就不一样),同一种服务的不同进程也要用不同的端口(Tomcat集群端口不一样),即一个服务只能用一个端口。但一个端口可以同时连接N多个用户请求。
多个线程处理一个Socket(端口)???
对于UDP,多个线程读写一个Socket不用加锁,当然最好的做法是每个线程有自己的Socket。
对于TCP,多个线程处理一个Socket是错误的设计。
总结:对于UDP,加锁是多余的,对于TCP,加锁是错误的。
提示
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
12-23 20:16
百度_高级研发工程师
选择即命运—2025年度总结
2025年马上过去了,我已经工作五年了,最开始的时候,我还假定我未来怎么样怎么样,现在也不敢假定了。因为每一年,都是翻天覆地的变化,每经历一年,提升一次认知,思维方式也就随之变化,思考的方向和结果也就不一样。 人的选择也是基于现有情况出发的,每一年都往前走,形势在变,我也在变,最后只能在变化中调整,变化中进取,我没法假定我的未来,但我知道一定会越来越好。 今年的大事件太多了,从华为离职,几个月谷底艰难求生,上岸大厂正编,改了自己的性格,提升了认知,学会了投资理财,儿子出生,换了一辆摩托车,今年的状态,还真应了那句话,《偷得浮生半日闲》,很忙,但是很充实。 未来2-3年,我大概还是会回到南方,去...
2025年终总结
点赞
评论
收藏
分享
12-22 13:21
魔门塔(苏州)科技有限公司_感知算法工程师(准入职员工)
momenta内推momenta内推
momenta自动驾驶C++日常实习一面面经流程时间线:3.25HR联系约一面3.25晚7点一面3.26早上通知一面通过约二面3.26下午5点二面3.27早上HR沟通入职时间,已OC。一面流程:无手撕50min1.自我介绍2.面试官介绍部门职责(不涉及算法开发,是否能接受)3.简历浅挖(面试官大概率不是规控方向的,对项目可能了解不多,后续了解到是电气背景的)(1)hybird启发项如何设计(2)介绍latticeplanner流程(3)项目中涉及哪些传感器,如何获取heading angle。4.一系列C++,Linux,ROS八股(只列出部分还记得的)1.听说过rvo嘛2.知道raii嘛,原...
点赞
评论
收藏
分享
12-17 13:34
复旦大学 算法工程师
寒假实习简历求点评
投了也有好多家了,才一个面试😥😥😥是简历的问题呢,还是hr不愿意招28届的,还是年前没啥岗位?
回家当保安:
复旦✌🏻,佬你的简历感觉挺好的,寒假日常hc比较少。佬可以过完年之后再试试,日常实习hc比较充足
点赞
评论
收藏
分享
10-26 13:03
已编辑
门头沟学院 物流经理
嫡长offer接不接
没有绩效 薪资差强人意且据说加班严重目前还有些入池的,待遇会更好,但不知道能不能泡的出来。是应该先签保底?还是直接拒?好纠结啊
在okr拆解的小太阳...:
实习待过,我待的部门氛围很好,基本不加班,双休有保证。
投递正浩创新EcoFlow等公司10个岗位
点赞
评论
收藏
分享
12-23 21:32
传音控股_技术运维工程师(准入职员工)
传音内推,传音内推码
我投递的是供应链的岗位,有需求的宝宝可以参考一下~ 一开始投递简历后,会有一个线上**,大家可以去一些软件刷刷题再去做(因为这个题库有时候真的有点怪怪的),通过后经过漫长的审批,有些岗位会有专业测试(研发岗之类的),然后又是漫长的审批,你就会进入面试阶段啦! 首先是11月中旬的时候hr会打一个电话面试: 时间不一定,早中晚都有可能,当时我以为是骚扰电话给挂了,幸好hr小姐姐打了第二个,听说有人挂了之后就没有接到第二个电话了,大家一定要注意(广东)种地方的来电!!!说不定就是你的面试通知!!! 电话面的问题: 1.对传音的了解(可以多搜索传音相关的资料了解) 2.对薪资的期望(看个人需求) 3....
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
圣诞节用 AI 做个牛客运营翻翻乐!(含代码)
9404
2
...
2025的主旋律是蛰伏,落寞,遗憾
8654
3
...
杂记近期所面试的三家中小厂
6717
4
...
选择即命运—2025年度总结
6612
5
...
壕壕壕,京东发7个月年终,此生要做东孝子
6011
6
...
大学废物离开优绩主义之后发现外面根本没下雨
5719
7
...
从H200解禁评估:国资算力平台还值得应届就业吗?
5425
8
...
实习没事做是福也是祸
3745
9
...
大厂offer帮选
2980
10
...
我只是一个脆弱的人
2884
创作者周榜
更多
正在热议
更多
#
2025年终总结
#
171038次浏览
2884人参与
#
找工作,行业重要还是岗位重要?
#
85170次浏览
1685人参与
#
职场上哪些行为很加分?
#
306544次浏览
3448人参与
#
大家每天通勤多久?
#
69474次浏览
440人参与
#
你面试体验感最差/最好的公司
#
16480次浏览
268人参与
#
实习的内耗时刻
#
210886次浏览
1537人参与
#
一人说一个提前实习的好处
#
9909次浏览
197人参与
#
今年你最想重开的一场面试是?
#
3720次浏览
66人参与
#
互联网行业现在还值得去吗
#
46846次浏览
351人参与
#
秋招落幕,你是He or Be
#
10538次浏览
215人参与
#
面试吐槽bot
#
164946次浏览
814人参与
#
实习没事做是福还是祸?
#
16106次浏览
245人参与
#
重来一次,你会对开始求职的自己说
#
5740次浏览
143人参与
#
反问环节如何提问
#
126328次浏览
2663人参与
#
礼物开箱Plog
#
617次浏览
21人参与
#
团建是“福利”还是是 “渡劫”
#
6840次浏览
145人参与
#
工作中听到最受打击的一句话
#
6109次浏览
108人参与
#
我的第一份实习怎么找的
#
208472次浏览
1827人参与
#
比亚迪工作体验
#
74405次浏览
281人参与
#
大厂VS公务员你怎么选
#
74416次浏览
681人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务