进程通信简介

一. 简单介绍

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

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

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

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

  2. 特点:

    1. 管道只能采用半双工通信,某一时间段内只能实现单向的传输(一个进程从管道中写数据,另个进程从里面读数据)。如果要实现双向同 时通信,则需要设置两个管道。
    2. 各个进程要互斥地访问管道。
    3. 数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞;当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。
    4. 一旦数据被读出,就在管道中被抛弃,再也找不回来了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值