操作系统

进程的通信
进程通信:在进程间传输数据(交换信息)
根据通信内容可以划分为两种:
1.低级通信:控制信息的传送,一般只传送一个或几个字节的信息,以达到控制进程执行速度的作用。
2.高级通信:大批量数据传送,目的不是为了控制进程的执行速度,而是为了交换信息。
低级通信:只能传递状态和整数值(控制信息)
在这里插入图片描述
缺点:
1.传送信息量小,效率低,每次传递的信息量固定,若传递较多的信息则需要进行多次通信。
2.编程复杂:用户直接实现通信的细节,容易出错。
高级通信:提高信号通信的效率,传递大量数据,减轻程序编制的复杂度
在这里插入图片描述
根据通信方式的不同,分为:
直接通信:信息直接传递给接收方,如管道。在发送时,指定接收方的地址或标识,也可以指定多个接收方或广播式地址;在接收时,允许接收来自任意发送方的消息,并在读出消息的同时获取发送方的地址。
间接通信:借助于收发双方进程之外的共享数据结构作为通信中转,如消息队列。通常收方和发方数目可以是任意的
单机系统中,进程间通信可分为4种形式
1.主从式
2.会话式
3.消息或邮箱机制
4.共享存储区方式
主从式通信的主要特点是:
1.主进程可以自由使用从进程的资源和数据
2.从进程的动作受主进程的控制
3.主进程和从进程的关系是固定的。
主从式通信典型例子:
终端控制进程和终端进程。
会话方式:通信进程双方分别称为使用进程和服务进程。使用进程调用服务进程提供服务。特点:
1.使用进程在使用服务进程所提供的服务之前,必须得到服务进程的许可;
2.服务进程根据使用进程的要求提供服务,但对所提供服务的控制由服务进程自身完成。
3.使用进程和服务进程在通信时有固定连接关系。
举例:用户进程与磁盘管理进程之间的通信。
消息或邮箱机制:无论接收进程是否已准备好接收消息,发送进程都将把所要发送的消息送入缓冲区或邮箱。
1.消息一般形式为4个部分组成。即发送进程名、接收进程名、数据和有关数据的操作
在这里插入图片描述
消息:由发送方形成,通过一定的机制传递给接收方的一组信息,他的长度可以固定,也可以变化。
在这里插入图片描述
消息或邮箱机制的特点是:
1.只要存在空缓冲区或邮箱,发送地址就可以发送消息。
2.发送进和接收进程之间无直接连接关系,接收进程可能在收到某个发送进程发来的消息之后,又转去接收另一个发送进程发来的消息。
3.发送进程和接收进程之间存在缓冲区或邮箱,用来存放被传送消息。
在这里插入图片描述
共享存储区方式:不要求数据移动。两个需要互相交换的进程通过对同一共享数据区的操作来达到相互通信的目的。
这个共享数据是每个互相通信进程的一个组成部分。
间接通信,最为快捷有效方式之一
在这里插入图片描述
1.内存共享区的互斥通过其他机制实现
2.数据的发送方不关心数据由谁接收,数据的接收方也不关心数据是由谁发送的,存在安全隐患。
发送进程之前,现在自己的内存空间设置一个发送区,把欲发送的消息填入其中,然后再用发送过程将其发送出去。
接受进程则在接收消息之前,在自己的内存空间设置相应的接受区,然后接受过程接收消息。
由于消息缓冲机制中所用的缓冲区为公用缓冲区,传送数据时,两通信进程必须满足条件:
1.互斥使用缓冲区
2.当缓冲区中无消息存在时,接收进程不能接收到任何消息。至于发送进程是否可以发送消息,则由发送进程是否申请到缓冲区决定。
在这里插入图片描述

Procedure Send(receiver,Ma)
  begin
        getbuf (Ma,size,i);
        i.sender := Ma.sender;
        i.size := Ma.size;
        i.text := Ms.text;
        i.next := 0;
        getid(PCB set, receiver, j);
        P(j.mutex);
        insert(j.Hptr, i);
        V(j.Sn);
        V(j.mutex);
  end

Procedure Receive(Mb)
   begin
        j:internal name;
        P(j.Sn);
        P(j.mutex);
        remove(j.Hptr,i);
        V(j.mutex);
        Mb.Sender:= i.Sender;
        Mb.Size := i.Size;
        Mb.text := i.text;
   end

直接通信的方式:点对点的发送
Send(DestProcessName)
Receive(SourceProcessName,)
间接通信方式:以信箱为媒介进行传递,可以广播
Send(MailBox)
Receive(MailBox)
邮箱通信:有发送进程申请一个建立一个与接收进程链接的邮箱,并把消息法网邮箱;接收进程从邮箱取出消息,从而完成进程间信息交换。
设置邮箱的好处:发送进程和接收进程之间没有处理时间上的限制。
一个邮箱可考虑成发送进程与接收进程之间的大小固定的私有数据结构,它不像缓冲区那样被系统内所有进程共享。
邮箱由邮箱头和邮箱体组成。其中邮箱头描述邮箱名称、邮箱大小、邮箱方向以及拥有该邮箱的进程名等。
在这里插入图片描述
邮箱体主要用于存放消息。
对于只有一个发送进程和一个接收进程使用的邮箱,则进程间通信应满足条件:
1.发送进程发送消息时,邮箱中至少有一个空格能存放该消息。
2.接收进程接收消息时,邮箱中至少有一个消息存在。
设发送进程deposit(m)将消息发送到邮箱,接收进程调用过程remove(m)将消息取出。
为了记录邮箱中空格个数和消息个数,信号量fromum为发送进程的私用信号量,信号量mesnum为接收进程的私用信号量。
fromnum的初始值为信箱的空格数n,mesnum的初值为0.则deposit(m)和remove(m)可描述

deposit(m):
begin local x
P(fromnum)
选择空格x
将消息m放入空格x中
置格x的标志为满
V(mesnum)
		end
remove(m):
begin local x
P(mesnum)
选择满格x
把满格x中的消息取出放m中
置格x标志为空
V(fromnum)
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值