首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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,加锁是错误的。
提示
全部评论
推荐
最新
楼层
秋招专场
校招火热招聘中
官网直投
相关推荐
我在恒生做校招
06-06 10:56
已编辑
恒生电子_校招运营
各位“面试官”,这是恒生电子的简历,请查阅
姓名:恒生电子年龄:95后自我介绍: 一家总被误会是“电子厂”的金融科技公司 金融科技行业的隐形冠军 03年就在上海证券交易所主板上市! 总部在“老家”杭州,现有北京、上海、深圳、武汉、南京、香港等城市设有研发中心、子/分公司 痴迷技术的技术宅 热爱社会的有志青年我的目标:让金融变简单!一、我真的不是电子厂! 恒生聚焦金融行业,致力于为证券、期货、基金、信托、保险、银行、交易所、私募等机构提供整体解决方案和服务,客户超过3500+二、金融行业的隐形冠军 恒生拥有超过13000名员工...
投递恒生电子股份有限公司等公司7个岗位 >
点赞
评论
收藏
分享
做人要有梦想dji
06-05 10:00
理想汽车_底层软件工程师(准入职员工)
华为实习开奖
base:西安部门:icttimeline:免笔试 -> 5.16一面+二面 -> 5.16保温 -> 5.29保温 -> 6.5开奖
嵌入式学习免费专栏
华为开奖那些事
我的实习日记
点赞
评论
收藏
分享
乱写代码的大迫杰
04-17 18:06
字节跳动_TikTok
今日份乐子
#如何判断面试是在刷KPI还是真招人?# 😂😂😂😂我宣布,不开摄像头的面试99%都是kpi特别是问问题上下没有逻辑性的,东一个西一个的
如何判断面试是在刷KPI还是真招人?
点赞
评论
收藏
分享
泽宇宙
05-29 15:09
门头沟学院 自动化类
震惊
这种公司他是怎么存活下来的?或者他真的有存在的必要吗?
点赞
评论
收藏
分享
跳夏威夷呼啦舞的小小鸡
06-06 11:06
已编辑
天猫技术_数据研发工程师
阿里巴巴最不卷的组招实习生啦
岗位:数据研发工程师要求:计算机相关专业,本科生或者研究生都可以,但要是985或者211院校毕业的。base: 杭州西溪c区面向对象:25年毕业的应届生简历可投递至:wenghuixian.whx@alibaba-inc.com 内推亮点 反卷:大组8点后都没人了,我6点一到就背包走人了,一点都不卷团建丰富,氛围友好:团建活动贼拉多了,玩的可开心未来可期:绩效很好,组里营收遥遥领先
投递阿里巴巴等公司10个岗位 >
点赞
评论
收藏
分享
点赞
收藏
评论
分享
回复帖子
提到的真题
返回内容
全站热榜
1
...
计算机去央国企(银行软开篇)
3.3W
2
...
24届985计算机废物春招感想(央国企、银行)
1.6W
3
...
秋招在即,求刷题搭子!!
1.2W
4
...
问一下大家的实习薪资是多少?
8140
5
...
有个好导师真幸福
5328
6
...
美团 实习
4532
7
...
颇有感慨
4279
8
...
导师不放实习,实习偷跑一个月经历
4248
9
...
小公司要求真高
3609
10
...
小厂日常实习Java面经
3171
正在热议
#
和牛牛一起刷题打卡
#
27321次浏览
2090人参与
#
24届软开秋招面试经验大赏
#
1194422次浏览
18306人参与
#
OPPO开奖
#
36699次浏览
531人参与
#
牛客帮帮团来啦!有问必答
#
1210662次浏览
17669人参与
#
我在牛爱网找对象
#
57747次浏览
431人参与
#
你觉得通信/硬件有必要实习吗?
#
27347次浏览
468人参与
#
不去互联网可以去金融科技
#
33976次浏览
411人参与
#
软件开发笔面经
#
7441次浏览
253人参与
#
研究所VS国企,该如何选
#
50012次浏览
566人参与
#
如何拒绝/反向PUA
#
21656次浏览
188人参与
#
公司情报交流地
#
13617次浏览
82人参与
#
听劝,我这个简历该怎么改?
#
64648次浏览
651人参与
#
在国企工作的人,躺平了吗?
#
117136次浏览
1642人参与
#
提前批的机械人,你们都有面试了吗
#
14400次浏览
211人参与
#
0offer是寒冬太冷还是我太菜
#
462112次浏览
5168人参与
#
京东方求职进展汇总
#
7851次浏览
73人参与
#
产运销实习日记
#
3429次浏览
112人参与
#
想实习转正,又想准备秋招,我该怎么办
#
159850次浏览
1812人参与
#
晒晒我司的端午福利
#
2965次浏览
56人参与
#
我的失利项目复盘
#
260698次浏览
5508人参与
#
一人推荐一个值得去的通信/硬件公司
#
66672次浏览
886人参与
#
机械只有转码才有出路吗?
#
5517次浏览
125人参与
牛客网
牛客企业服务