余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

在操作系统中进程是如何通信的

xiyangw 2023-10-08 14:25 33 浏览 0 评论

这是我在毕业时校招阿里系公司时,终面的面试官问我印象最深的一道题,别问,问就是挂了。要是过了早就忘了

首先了解进程是什么


  狭义定义就是,进程是一段程序进行的过程。

  广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元,简单说就是你的系统运行时最小单位吧。

进程间通信(IPC)

  进程间通信,指的是进程之间信息交换,所交换的信息量少则是一个状态或数值,多则成千上万个字节。

方式分为两类:共享内存,消息机制。

重点!!要考的!!

共分为8种

1、共享内存:共享内存就是映射一段能被其他进程所访问的内存。这段内存由一个进程创建,但多个进程可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式效率低所创建的。它往往与其他的通信机制来配合使用。来实现进程间的同步通信。

因为直接在内存上操作,所以共享内存的速度也就提高了,所以最快。


多进程共享内存


2、管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,通常指父子进程关系。


单行道[图片来源网络]


管道就像一辆单向行驶的车【单行道谁也不能掉头】,只有车上坐满人后,车才可以发动,而当车到达目的地,全体人员都要下车

3、有名管道:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间通信。

  • (1)可以用于没有亲缘关系的进程之间的通信;
  • (2)同一数据不能重复读,读一次就相当于从管道中拿走;
  • (3)可以多端写入,多端读取;

4、高级管道:将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们称为高级管道方式。


5、信号量:信号量是一个技术器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同意进程内不同线程的同步手段。

信号量分为两种

  1. 内核信号量,由内核控制路径使用
  2. 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEM V信号量。

POSIX信号量又分为有名信号量无名信号量 有名信号量,其值保存在文件中, 所以它可以用于线程也可以用于进程间的同步。

无名信号量,其值保存在内存中。

内核信号量类似于自旋锁,因为当锁关闭着时,它不允许内核控制路径继续进行。然而,当内核控制路径试图获取内核信号量锁保护的忙资源时,相应的进程就被挂起。只有在资源被释放时,进程才再次变为可运行。

6、消息队列:消息队列是由消息的链表存放在内核并有消息队列标识符标识。消息队列克服了信号传递信息量少,管道只能承载无格式字节流以及缓冲区太小受限。

  1. 我司目前主要通讯方式就是MQ,使用的IBM 的。我认为有几个好处
  2. 承受高并发,服务暂时处理不了高并发,可以对消息队列消息积压持久化。
  3. 将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度【场景如微信动账】
  4. 解耦,将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而前置不需要做任何修改。

7、信号:信号是一种比较复杂的通信方式,用于通知接受进程某个时间已发生。

8、套接字:套解口也是一种进程间通信机制,与其他通信机制不同的是,不可用于不同主机间的进程通信。

常用在后端系统和后端系统间通讯,见下图


socket通讯[图片来源网络]

相关推荐

“三次握手,四次挥手”你真的懂吗?

记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有下文了,面试官貌似也没有深入下去的意...

面试官问:三次握手与四次挥手是怎么完成的?

作者|饶全成来源|码农桃花源记得刚毕业找工作面试的时候,经常会被问到:你知道“3次握手,4次挥手”吗?这时候我会“胸有成竹”地“背诵”前期准备好的“答案”,第一次怎么怎么,第二次……答完就没有...

三次握手和四次挥手的高阶面试题,建议收藏

昨天村长的讲解,真是一语点醒,这样的解释胜过死记硬背。但对于学习者,如果不能有直观感受,可能还是觉得不接地气,今天介绍两个工具,一个是网络抓包工具Wireshark,一个是linux命令tcpdum...

三次握手和四次挥手到底是个什么鬼东西

之前总有是有面试官喜欢问,你知道什么是三次握手么?什么是四次挥手么?为什么握手需要三次,挥手需要四次呢?今天我们就来详细的聊一下这个。1.什么是TCPTCP协议,简单称呼一下的话,那就是传输控制协议,...

加深理解TCP的三次握手与四次挥手

在了解三次握手和四次挥手之前,先要知道TCP报文内部包含了那些东西。熟悉了解TCP报文对日后学习网络和排除方面有很大的帮助,所以,今天为了加深对三次握手的理解,从新去认识TCP报文格式。TCP报文格式...

三次握手 与 四次挥手_三次握手四次挥手大白话

三次握手:①首先Client端发送连接请求报文②Server段接受连接后回复ACK报文,并为这次连接分配资源。③Client端接收到ACK报文后也向Server段发生ACK报文...

动画讲解TCP的3次握手,4次挥手,让你一次看明白

专注于Java领域优质技术,欢迎关注作者:老钱占小狼博客TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一。很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答。本篇尝试...

linux下实现免密传输文件或登录到其他服务器

使用scp传输文件到其他服务器的时候,提示需要输密码,如下:[root@18csetup]#scpLINUX.X64_180000_db_home.zip192.168.133.120:/u0...

Linux如何通过salt免密SCP传输上百台机的脚本?看chatGPT的回答

如何通过salt免密SCP传输上百台机的shell脚本”,下面是chatGPT给出的结果。scp批量免密脚本给出的详细shell脚本如下:#!/bin/bash#源文件路径和目标路径SRC_...

Linux/Mac scp命令上传文件_将hdfs上的文件下载到本地的命令是

语法scp[可选参数]file_sourcefile_target参数说明:-1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令只使用IPv4寻...

Linux常用功能——文件远程传输_linux 远程传输文件

scp是securecopy的简写,是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,用于在Linux下进行远程拷贝文件的命令。和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器...

使用 scp 命令定时拉取服务器备份文件

我们的服务器,每周五必须要做下备份,但总是忘记执行备份这件事情,或者是服务器备份做了,但没有做异地备份。所以通过定时任务自动备份,备份成功之后,在其它服务器上面通过定时任务scp命令自动拉取备份文...

windows下最轻便的FTP/SCP文件管理器

这次推荐的工具叫做winscp,这个工具如果是IT从业人员,又是做服务端相关工作的话,可能无人不知,如果是刚入门,推荐立马上手试试。如果看了觉得有用,欢迎收藏、点赞、关注。官方网站:https://w...

我不是网管 - Linux中使用SCP命令安全复制文件

SCP是linux发行版中的命令行工具,用于通过网络安全地跨系统复制文件和目录。SCP代表安全复制,因为它使用ssh协议复制文件。拷贝时,scp命令建立ssh连接到远程系统。换句话说...

WinSCP软件双系统(Win-Linux)文件传输教程

WinSCP软件是windows下的一款使用ssh协议的开源图形化SFTP客户端,也就是一个文件传输的软件,它有什么优点吗,咱们嵌入式开发中经常会将windows中的文件复制到linux系统当中,比较...

取消回复欢迎 发表评论: