首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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,加锁是错误的。
提示
全部评论
推荐
最新
楼层
滴滴
校招火热招聘中
官网直投
相关推荐
想在家办公的小确幸在游泳
05-12 15:48
深圳市科锐技术有限公司_C++开发工程师(准入职员工)
科锐国际技术岗内推(500强)
可以不填简历,会有人联系!1.自我评价,重点强调为什么自己能胜任xx工作(尤其是非技术类) 2.工作经历公式 【star法则】 实习部分做的和岗位JD越贴合越好 3.校园经历,只挑跟应聘岗位相关的写,展现自己职业规划清晰科锐国际2024年校园招聘,23届亦可投递(OD项目组——计算机专场)企业简介:科锐国际中国首家登陆A股上市的人力资源服务企业【招聘岗位】:软件开发工程师、软件测试工程师、大数据开发工程师、运维工程师等计算机类岗位【岗位要求】1、统招本科以上学历 ,24届应届生及往届生均可投递 ;2、计算机、软件工程、数学、信息系统、自动化、米哈游、通信工程、网络工程、电子工程等相关专业;...
投递科锐国际等公司10个岗位 >
点赞
评论
收藏
转发
MR.HEer
05-07 23:55
韶音科技_产品事业部_算法工程师(准入职员工)
韶音科技内推
楼主是2024届毕业生,校招季到了,楼主深知校招(秋招-春招的不容易)每天高强度的笔试,面试以及毕业相关事宜的堆积,很不容易的一年!各位弟弟妹妹们米哈游在这里你可以得到最贴心最及时的回复哦并且可以得到最贴心的服务与指导哦! 【工作地点】深圳、香港、新加坡【招聘流程】HR初面-2~3轮综米哈游合面试-录用沟通-发放offer【内推链接】https://app.mokahr.com/campus_apply/aftershokzhr/36940?recommendCode=DSk7aFnK#/jobs【内推码】DSk7aFnK【工作地点】深圳,部分岗位全国分布投递的uu评论一下姓名缩写加岗位(H...
投递韶音科技等公司7个岗位 >
点赞
评论
收藏
转发
在吐槽的勇士很讲原则
05-06 18:41
安徽建筑大学城市建设学院 计算机类
不想投简历了,求捞啊
投了一大堆都不要我,什么情况呀
点赞
评论
收藏
转发
一闪一闪小辣鸡
03-20 10:19
湖南大学 电子信息类
刚打电话约面了 难道是选择题做的好??
点赞
评论
收藏
转发
点赞
收藏
评论
分享
回复帖子
全站热榜
1
...
携程oc了
2.4W
2
...
美团-Java后端-平台技术部-一面凉经(复活赛)
8471
3
...
31天勇闯盲审(附盲审经验
5040
4
...
我真是一个废物,废物本废,到现在也找不到实习不管回答上来,还是没回答上来,都不会有公司要我的。。。。。。。想发疯,我最最最最不理解的就是滴滴这个为啥没给我过!问的都很简单啊,我都答上来了,到底差在哪里
4990
5
...
【话术建议】求职者和企业的互骗话术?
4810
6
...
微信支付二面
4294
7
...
捞简历这件事儿
4235
8
...
字节抖音电商后端日常实习一二三面已oc
4025
9
...
问一下xdm 怎么把拒绝过的Offer 再舔回来🥺
3254
10
...
美团暑期offer(我!爱!美!团!)
2495
正在热议
#
牛客帮帮团来啦!有问必答
#
683889次浏览
11261人参与
#
市场营销面经
#
3908次浏览
114人参与
#
2022届毕业生现状
#
315250次浏览
4396人参与
#
你会选择考研还是直接就业
#
74588次浏览
854人参与
#
我的上岸简历长这样
#
160477次浏览
3211人参与
#
无实习如何秋招上岸
#
219152次浏览
3429人参与
#
浅聊一下我实习的辛苦费
#
79763次浏览
739人参与
#
你的简历改到第几版了
#
298628次浏览
4511人参与
#
投了多少份简历才上岸
#
55588次浏览
938人参与
#
软件开发投递记录
#
465506次浏览
7115人参与
#
运营面经
#
10407次浏览
260人参与
#
科大讯飞求职进展汇总
#
35983次浏览
364人参与
#
Offer比较,你最看重什么?
#
49379次浏览
479人参与
#
毕业后不工作的日子里我在做什么
#
51844次浏览
687人参与
#
夸夸我的求职搭子
#
63511次浏览
773人参与
#
租房前辈的忠告
#
32610次浏览
2067人参与
#
秋招开了,你想投哪些公司呢
#
116081次浏览
3241人参与
#
硬件人的简历怎么写
#
77168次浏览
780人参与
#
写简历别走弯路
#
285699次浏览
3511人参与
#
产品面经
#
21990次浏览
426人参与
牛客网
牛客企业服务