操作系统学习笔记--进程通信

    进程通信是指进程之间的信息交换。交换的信息量包括一个状态或数值(信号量,低级通信)或上千个字节(高级通信)

    低级通信:进程的互斥和同步(交换的信息量(即信号量)较少)

    高级通信:指用户可直接利用OS提供的一组通信命令(不需要自己编写命令),高效地传送大量数据的一种通信方式。对用户透明。(用户不需要考虑通信的具体过程,直接调用系统提供的原语)

    高级通信分类:共享存储器(根据实现机制不同)、消息传递系统、管道通信

    共享存储器:(1)共享数据结构的通信方式。进程之间通过某种数据结构,如缓冲池进行通信属于低级通信方式(如生产者-消费者)。(2)共享存储区通信方式,为了传送大量信息,在存储区中划出一块共享存储区,进程可通过对共享存储区进行读或写来实现通信,属于高级通信方式。

    (共享存储器系统:在系统当中开辟一块存储区,该存储区供两个进程使用,一个是接收进程,一个是发送进程。传递消息时都可以把消息放在公用存储区。发送消息的进程可以把消息存入存储区,接收消息的进程从存储区读取。

    消息传递系统:信息交换的单位是消息或报文,分成两种:

    1、直接通信方式;2间接通信方式

    计算机网络中将消息称为报文。

    直接通信方式:发送进程直接(中间不通过任何资源)把消息发送给目标进程。发送进程和接收进程都以显式方式分别提供对方的标识符。 系统提供的两种通信原语:Send(Receiver, message);//发送进程调用,Receiver为接收进程(进程的标识符(在PCB上)

 Receive(Sender,message);

    解决生产者-消费者问题:

repeat ...

produce an item in nextp;

... 

send(consumer,nextp);

until false;

repeat 

Receive(producer,nextp);

...

consumer the item in nextc;

until false;


间接通信方式:进程之间的通信需要通过某种中间实体(缓冲区、共享区等),该实体用来暂存发送进程发送给目标进程的消息;接收进程则从该实体中取出对方发送给自己的消息。这种中间实体称为信箱。消息在信箱中可以安全地保存。只允许核准的目标用户随时读取,故可实现非实时通信(优点,可以等待)

信箱的创建和撤销: 进程用信箱创建原语来建立一个新信箱,创建者进程应给出信箱名字、信箱属性(公用、私用、或共享);对于共享信箱,还应给出共享者名字。用信箱撤销原语来撤销。

消息的发送和接收:

Send(mailbox,message);//将一个消息发送到指定信箱

Receive(mailbox,message);//从指定信箱中接收一个消息

信箱分类:

    私用信箱:用户进程建立,作为该进程的一部分(采用单向通信链路。进程结束时信箱也消失,只能由发送这传到接收者)。拥有者有权读消息,其他用户只能发送。

    公用信箱。它由OS创建(系统运行期间,一直存在)。提供给系统中的所有核准进程使用。进程即可发送也可接收。采用双向通信链路的信箱来实现。

    共享信箱:由某进程创建,创建时提供共享进程(用户)的名字。信箱的拥有者和共享者,都有权从信箱中取走发送给自己的消息。

信箱通信时发送进程和接收进程的关系:一对一关系:建立一条专用的通信链路。多对一关系:服务进程与多个用户进程之间进行交互,又称为客户/服务器关系。一对多关系:一个发送进程与多个接收进程进行交互,使发送进程可用广播形式,向接受者发送消息。多对多关系:建立一个公用信箱,多个进程投递并取走自己的消息。  

管道通信是共享文件,连接一个读进程和一个写进程。 管道通信方式建立在文件系统(放在外存,结束内存资源)的基础上,利用共享文件来连接两个相互通信的进程,此共享文件称为管道(pipe)。

管道是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件。

 管道通信必需的协调能力:

(1)互斥。当一个进程正在对管道进行读/写操作时,另一个进程必须等待。

(2)同步(制约关系)。当写(输入)进程把一定量的数据(如4K)写入管道后,便去睡眠等待(放弃CPU),直到读(输出)进程取走数据后再 把它唤醒。当读进程发现管道空时也应睡眠等待,直到写进程将消息写入管道后,才将它唤醒。

(3)判断对方是否存在。只有确定了对方存在时,方能进行通信。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值