进程通信简介

一. 简单介绍

进程间通信是指两个进程之间产生数据交互
但是进程是资源分配和调度的单位,因此各进程拥有的内存地址空间相互独立,为了保证安全,一个进程是不能直接访问另外一个进程的地址空间的。
但是进程间的信息交换又是必须的。为了实现进程间通信,操作系统提供了一些方法(共享存储,消息传递,管道通信)。

二. 共享存储
  1. 基于存储区的共享
    在内存中划出一块共享存储区,数据的形式、存放的位置都是由进程控制而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

  2. 基于数据结构的共享
    比如共享空间里面只能放一个长度为10 的数组。这种共享方式速度慢、显示多、是一种低级通信方式。

三. 消息传递
  1. 简单介绍
    进程间数据交换是以格式化的消息为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
    消息主要由消息头和消息体组成;消息头包括:发送进程ID、接收进程ID,消息长度等格式化信息(类似于计算机网络中发送的“报文”);消息体就是主要发送的内容。
    消息传递分为直接通信方式和间接通信方式;
  2. 直接通信方式
    消息直接挂到接收进程的消息缓冲队列中
  3. 间接通信方式
    消息要发送到中间实体中,因此也称为“信箱通信方式”
    进程1向进程2发送消息,使用间接通信的方式就是,进程1先发送原语,将消息发送到信箱1中,然后进程2会通过接受原语取走信箱1的消息。
四. 管道通信
  1. 简介:
    管道是指用于连接读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区。与共享存储的区别是没有共享存储灵活, 消息队列先进先出。

  2. 特点:

    1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输(一个进程从管道中写数据,另个进程从里面读数据)。如果要实现双向同 时通信,则需要设置两个管道。
    2. 各个进程要互斥地访问管道。
    3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞;当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
    4. 一旦数据被读出,就在管道中被抛弃,再也找不回来了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows进程通信是指在Windows操作系统中,不同进程之间进行数据交换、共享资源和协调操作的机制。Windows提供了多种进程通信的方式,常用的包括以下几种: 1. 管道(Pipe):管道是一种单向通信机制,可以在父子进程或者兄弟进程之间进行通信。Windows提供了两种类型的管道:匿名管道和命名管道。 2. 共享内存(Shared Memory):共享内存是一种高效的进程通信方式,它允许不同进程之间共享同一块内存区域。通过在进程之间映射同一块共享内存,进程可以直接读写该内存区域的数据。 3. 消息队列(Message Queue):消息队列是一种异步通信机制,进程可以将消息发送到队列中,其他进程可以从队列中读取消息。Windows提供了多种消息队列机制,包括邮件槽(MailSlot)、Windows消息队列等。 4. 套接字(Socket):套接字是一种网络通信机制,可以在不同计算机上的进程之间进行通信。Windows提供了基于TCP/IP协议的套接字接口,通过网络进行进程间通信。 5. 文件映射(File Mapping):文件映射是一种将文件映射到进程的内存空间的方式,不同进程可以通过访问同一块映射内存来实现通信。 除了上述方式,Windows还提供了其他进程通信的机制,如命名信号量、事件、互斥体等。开发人员可以根据具体需求选择适合的进程通信方式来实现进程间的数据交换和协作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值