首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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,加锁是错误的。
提示
全部评论
推荐
最新
楼层
还没有回复哦~
相关推荐
02-14 23:19
门头沟学院 Java
春招测试好找吗
BOSS投了几天,收简历倒是挺多的,但是没有面试啊,还能找到工作吗
你觉得今年春招回暖了吗
大家都开始春招面试了吗
点赞
评论
收藏
分享
02-12 06:10
大连理工大学 平台产品
网易-新媒体运营面经来了~(😉春招攒功德
1. 请先做一个简单的自我介绍,着重讲讲你和新媒体运营岗位的匹配度。2. 在过往的运营工作中,有没有遇到过数据不理想的情况,你是怎么分析和解决的?3. 假如你负责的新媒体账号粉丝增长缓慢,你会采取哪些创新的策略来提升粉丝量?4. 请用三个词来形容你自己,并结合具体事例说明一下。5. 在之前的实习中,哪件事让你觉得最有成就感?6. 如果在工作中与团队成员产生了意见分歧,你会如何处理呢?7. 运营如何挖掘潜在用户并进行用户唤醒?8.对于这个新媒体运营岗位,你有什么想问的吗?
查看8道真题和解析
点赞
评论
收藏
分享
02-13 14:30
四川大学 Java
零实习选手硬冲暑期
零实习选手找暑期是不是很困难来点简历建议、面试建议、八股建议
Java抽象带篮子:
简历怎么写可以看看我发的帖子,你先照着优化下简历吧
点赞
评论
收藏
分享
2024-12-26 19:23
理想汽车_底层软件工程师
牛马工位,献丑了
#晒一晒你的工位#
做人要有梦想dji:
最新工位
查看图片
晒一晒你的工位
点赞
评论
收藏
分享
02-12 20:26
沈阳化工大学 Java
中科软日常实习一面
这个面试时硬着求来滴,问的很奇怪就问了一点八股文,那个hr一直问我其他问题,就像最后hr一样学校是一本还是二本(原来还有这个那我二本我说一本你也不会知道叭)自我介绍介绍一下集合都有什么(单列集合和双列集合)map都有什么类型呢concurrenthashmap底层实现jdk用的是什么版本的创建线程的方式垃圾回收算法mysql怎么去优化对应的性能呢前端了解多少呢反问
查看9道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
腾讯实习生基地一面面经
2.9W
2
...
我和面试官有个约会
1.1W
3
...
快手Java日常实习一面
1.1W
4
...
一次失败找实习之旅
7309
5
...
代码与豹尾:一个做题家的赛博修仙启示录
5443
6
...
情人节还在刷牛客的,这辈子有了
4737
7
...
太好了!春招面试有救了!
3504
8
...
兄弟们,考上玉虚宫研究生了,选哪个导师啊
3457
9
...
实在智能日常一面(全程高能,无八股)
3411
10
...
deepseek用来写论文,真的强爆了……
3197
创作者周榜
更多
正在热议
更多
#
大疆今年的机械笔试难吗?
#
34460次浏览
405人参与
#
影石Insta360求职进展汇总
#
105904次浏览
936人参与
#
文科生还参加今年的春招吗
#
1704次浏览
20人参与
#
大疆的机械笔试比去年难吗
#
63326次浏览
575人参与
#
选择和努力,哪个更重要?
#
36456次浏览
394人参与
#
24届市场营销薪资爆料
#
9005次浏览
62人参与
#
一人推荐一个值得去的通信/硬件公司
#
160246次浏览
1729人参与
#
如果公司降薪,你会跳槽吗?
#
42569次浏览
321人参与
#
提前批的机械人,你们都有面试了吗
#
86148次浏览
929人参与
#
产品实习,你更倾向大公司or小公司
#
128706次浏览
1710人参与
#
产品薪资爆料
#
96696次浏览
814人参与
#
春招启动,你开始投递了吗?
#
45121次浏览
434人参与
#
秋招前后对offer的期望对比
#
221613次浏览
1648人参与
#
大学四年该怎么过,才不算浪费时间?
#
3314次浏览
32人参与
#
华为工作体验
#
149640次浏览
1052人参与
#
职场上哪些事情令人讨厌
#
12708次浏览
57人参与
#
机械人,你的第一份感谢信是谁给的
#
19863次浏览
257人参与
#
和牛牛一起刷真题
#
104922次浏览
2067人参与
#
你觉得机械有必要实习吗
#
33535次浏览
318人参与
#
2022毕业的你对23届的寄语
#
35059次浏览
533人参与
牛客网
牛客企业服务