JavaDriver JavaDriver
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YoungAnn

西二旗Java老司机一枚 致力于社会主义添砖Java
首页
  • 基础
  • 并发
  • JVM
  • 设计模式
  • 计算机网络
  • 操作系统
  • 数据结构
  • 算法
  • MYSQL
  • REDIS
  • Netty
  • Kafka
系统设计
非技术
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 计算机网络

  • 操作系统

    • 进程间有哪些通信方式?
      • 管道
      • 2. FIFO
      • 3. 消息队列
      • 4. 信号量
      • 5. 共享存储
      • 6. 套接字
      • 参考
    • 简述自旋锁与互斥锁的使用场景
    • 进程和线程之间有什么区别?
    • 简述几个常用的 Linux 命令以及他们的功能
    • 进程有多少种状态?
    • 简述 select, poll, epoll 的使用场景以及区别
    • Linux 下如何排查 CPU 以及 内存占用过多?
    • 进程通信中的管道实现原理是什么?
    • Linux 下如何查看 CPU 荷载,正在运行的进程,某个端口对应的进程?
    • 如何调试服务器内存占用过高的问题?
    • Linux 如何查看实时的滚动日志?
    • 简述 Linux 零拷贝的原理
    • 为什么进程切换慢,线程切换快?
    • 简述创建进程的流程
    • 简述 Linux 虚拟内存的页面置换算法
    • 简述 Linux 进程调度的算法
    • 什么时候会由用户态陷入内核态?
    • Linux 下如何查看端口被哪个进程占用?
    • Linux 中虚拟内存和物理内存有什么区别?有什么优点?
    • 简述 traceroute 命令的原理
    • 简述IO模型
  • 数据结构

  • 算法

  • 剑指Offer题解

  • 计算机基础
  • 操作系统
YoungAnn
2022-03-11
目录

进程间有哪些通信方式?

进程同步与进程通信很容易混淆,它们的区别在于:

  • 进程同步:控制多个进程按一定顺序执行;
  • 进程通信:进程间传输信息。

进程通信是一种手段,而进程同步是一种目的。也可以说,为了能够达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。

# 管道

管道是通过调用 pipe 函数创建的,fd[0] 用于读,fd[1] 用于写。

#include <unistd.h>
int pipe(int fd[2]);
1
2

它具有以下限制:

  • 只支持半双工通信(单向交替传输);
  • 只能在父子进程或者兄弟进程中使用。

# 2. FIFO

也称为命名管道,去除了管道只能在父子进程中使用的限制。

#include <sys/stat.h>
int mkfifo(const char *path, mode_t mode);
int mkfifoat(int fd, const char *path, mode_t mode);
1
2
3

FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。

# 3. 消息队列

相比于 FIFO,消息队列具有以下优点:

消息队列可以独立于读写进程存在,从而避免了 FIFO 中同步管道的打开和关闭时可能产生的困难; 避免了 FIFO 的同步阻塞问题,不需要进程自己提供同步方法; 读进程可以根据消息类型有选择地接收消息,而不像 FIFO 那样只能默认地接收。

# 4. 信号量

它是一个计数器,用于为多个进程提供对共享数据对象的访问。

# 5. 共享存储

允许多个进程共享一个给定的存储区。因为数据不需要在进程之间复制,所以这是最快的一种 IPC。

需要使用信号量用来同步对共享存储的访问。

多个进程可以将同一个文件映射到它们的地址空间从而实现共享内存。另外 XSI 共享内存不是使用文件,而是使用内存的匿名段。

# 6. 套接字

与其它通信机制不同的是,它可用于不同机器间的进程通信。

# 参考

进程通信 (opens new window)

编辑 (opens new window)
上次更新: 2023/02/17, 17:03:51
简述 HTTP 报文头部的组成结构
简述自旋锁与互斥锁的使用场景

← 简述 HTTP 报文头部的组成结构 简述自旋锁与互斥锁的使用场景→

最近更新
01
电商-商品系统设计
12-17
02
关于如何写OKR
12-09
03
对事不对人 vs 对人不对事
12-09
更多文章>
Theme by Vdoing | Copyright © 2022-2023 YoungAnnn | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式