基于LSM和BLP的IPC进程通信模型

本文详细介绍了UNIX系统中的进程间通信(IPC)机制,包括半双工管道、FIFO命名管道、System V风格的消息队列、共享存储和信号量。管道提供了父子进程或兄弟进程间的数据传输,FIFO扩展了管道的作用范围,允许不相关进程通信。消息队列和共享存储允许进程间交换数据,而信号量则用于进程同步和资源管理。套接字作为BSD风格的IPC,是网络通信的重要工具,支持客户/服务模型。
摘要由CSDN通过智能技术生成

参考书籍 《UNIX程序设计》、《操作系统安全》

1、IPC进程通信方式总结

(1)半双工管道PIPE

1)管道的概念

为了对进程进行保护,在不跨越进程便捷的前提下进行进程间的通信,操作系统设计了管道机制。每个管道允许两个进程交互数据,一个进程向管道中输入数据,另一个进程从管道中读取数据,这样两个进程之间就进行了通信,并且不需要跨越边界。每一个管道都有由操作系统为其开辟的一页内存,这一页赋予了文件的属性,并且这一页有两个进程共享,但是不会分配给任意一个进程,只由内存掌控。管道就是一页内存,但是进程要以操作文件的方式对其进行操作。

2)管道的特点

①管道是半双工的,数据只能向一个方向流动,双方通信时,需要建立起两个管道;
②只能用于父子进程或者兄弟进程之间。
③管道对于管道两端的进程来说是一个文件,它单独构成一种独立的文件系统,并且只存在与内存中。
④数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。尾部添加,头部读出

(2)FIFO命名管道

命名管道是一种特殊类型的文件,它在系统中以文件形式存在,不过要先用open函数打开一个FIFO才可以用read和write对它进行读写数据。
FIFO极好地解决了系统在应用过程中产生的大量的中间临时文件的问题。它可以被shell调用使数据从一个进程到另一个进程,系统不必为该中间通道去烦恼清理不必要的垃圾,或者去释放该通道的资源,它可以被留做后来的进程使用。
FIFO规避了匿名管道在作用域的限制,可应用于不相关的进程之间。

(3)系统v风格的消息队列、共享存储和信号量

消息队列 messagequeue

提供一种广义的消息传递方法,允许进程发送和接收一个缓冲区中数据。希望通信的一组进程通过具有一个唯一标识的消息队列连接在一起,要传送的任意数据打包并以消息的形式通过消息队列传输。消息的格式由操作系统规定,也可以由协同工作的进程规定。消息队列中的所有消息按照他们提交的顺序传递。
消息队列本身是内核地址空间的内部链表。同一个消息队列可以有多个进程发送消息,也可以有多个进程接收消息。且一旦消息被队列头读走,它就从队列中被删除,因此其他队列不可能再读到它。

共享存储

允许多个进程访问存储器中的相同数据区。希望通信的进程通过一块具有唯一标识的共享存储连接在一起,进而通信的进程可以与正常存储访问一样的方法访问这块共享存储,交换数据。

信号量 semaphore

允许进程打开和关闭一组成为信号量集合的标志,告诉进程某个事件已经发生。那些与信号量集合唯一标识相连的所有进程可以读取和修改信号量集合。信号量集合本身不传递数据,只是用来控制对某种资源的访问来实现进程之间的同步
有PV操作,用来控制进程的互斥和生产/消费情况。
P操作(信号量请求操作),在进程进入关键区时使用,如果信号量为0,则进程不能进入。
V操作,在进程离开关键区使用,离开后它时信号量增加。

(4)BSD风格IPC的套接字Socket

套接字通PIPE一样也解释为文件描述字,它是进程与系统之间通信的主要手段,利用套接字可以方便实现分布于网络的客户/服务系统。
套接字是一个通信端口,是一种用标准UNIX文件描述子与其他程序通信的方法,它除了有一个地址外,还明确包含着关于通信的域、类型、协议。它是非对称的,可以区分用于通信的客户进程和服务进程。

2、LSM勾函数

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰西啊杰西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值