参考书籍 《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勾函数

基于LSM和BLP的IPC进程通信模型相关推荐

  1. 学习LSM(Linux security module)之四:一个基于LSM的简单沙箱的设计与实现

    转自:cnblog 嗯!如题,一个简单的基于LSM的沙箱设计.环境是Linux v4.4.28.一个比较新的版本,所以在实现过程中很难找到资料,而且还有各种坑逼,所以大部分的时间都是在看源码,虽然写的 ...

  2. IPC 进程间通讯,排队输出--day33

    """ IPC 进程间通讯 由于进程之间内存是相互独立的 所以需要对应积极而方案 能够使得进程之间可以相互传递数据 1.使用共享文件,多个进程同时读写同一个文件 IO速度 ...

  3. lsm mysql_基于LSM树的Oracle数据库数据处理方法与流程

    本发明涉及一种数据处理方法,尤其涉及一种基于LSM树的Oracle数据库数据处理方法. 背景技术: 数据库有三种基本的存储方式:1.哈希表,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储 ...

  4. 递归锁、信号量、GIL锁、基于多线程的socket通信和进程池线程池

    递归锁.信号量.GIL锁.基于多线程的socket通信和进程池线程池 递归锁 死锁现象:是指两个或两个以上的进程和线程因抢夺计算机资源而产生的一种互相等待的现象 from threading impo ...

  5. 某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为 1μs。

    某系统采用基于优先权的非抢占式进程调度策略,完成一次进程调度和进程切换的系统时间开销为 1μs.在 T 时刻就绪队列中有 3 个进程 P1.P2 和 P3,其在就绪队列中的等待时间.需要的 CPU 时 ...

  6. 期权定价lsm方法matlab,运用Matlab基于LSM方法对美式期权定价的新探究

    一.引言1973年之前,理论上对于期权定价一直找不到令人满意的模型,主要是由于对标的资产价格的变动过程无法用适当的随机过程来描述.1973年布莱克.斯科尔斯(Black.Scholes)两位学者将标的 ...

  7. Android IPC 进程进程间通信或跨进程通信

    Android IPC 机制 老话长谈,趁现在有时间对IPC做一个具体的总结. IPC是Inter-Process Communication的缩写,含义就是进程间通信或者跨进程通信,是指两个进程之间 ...

  8. android IPC 进程间通讯

    参考资料: http://blog.csdn.net/birdsaction/article/details/39451849 在这里我说一下学习技术的方法,别人的博客,别人的东西,再简单,自己没有写 ...

  9. 进程间基于消息队列的通信_Linux 进程间的通信方式

    (一)进程的概念 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就是创建一个进程,在这个 过程中伴随着资源的分配和释放,可以认为进程是一个程序的一次执行过程. (二)进程间通信的概念 ...

  10. Electron(基于Vue)中使用IPC

    IPC(InterProcess Communication,进程间通信)指在不同进程之间传播或交换信息. 使用IPC 1. 项目简介 2. IPC配置 2.1 创建预加载脚本 2.2 配置预加载脚本 ...

最新文章

  1. 在华为云服务器的Linux系统中搭建开发环境
  2. [Winform]DataGridView列自适应宽度
  3. Tensorflow 改进的MNIST手写体数字识别
  4. 升级鸿蒙系统照片,华为鸿蒙系统照片出炉,神似EMUI,海内外花粉沸腾了
  5. python os path_python os.path模块
  6. Python+OpenGL进行立方体多纹理映射
  7. controller 中@autowired 报错_Spring中常用注解
  8. Vivado设计流程(三)功能仿真
  9. 20161212 输出1到n之间所有的奇(单)数(n30000) 。
  10. 5分钟轻松学Python:4行代码写一个爬虫
  11. 一篇文章彻底搞懂什么是电厂智能巡检系统?
  12. ionic3 m3u8在线播放工具,在线播放
  13. 量化投资的Python入门,也很适合机器学习Python入门
  14. Vector For All (slight return)
  15. swift [Application] The app delegate must implement the window property if it wants to use a main 报错
  16. nexmo 验证码的使用
  17. 中国麻纺行业竞争动态及产销需求预测报告(2022-2027年)
  18. Halcon算子说明
  19. ubuntu18.04 alt+ctrl+t 无响应解决方法
  20. java 模拟投票代码_求投票系统(Java源代码)

热门文章

  1. 《UEFI原理与编程》读书笔记
  2. 基于Springboot+websocket的web聊天项目(论文+程序设计源码+数据库文件)
  3. BMP图片的旋转以及BMP转YUV(4:2:0)
  4. php多个语言包,thinkphp实现多语言功能(语言包)
  5. hybird app框架
  6. 【PC工具】更新U盘SD卡测试工具,速度测试,坏块测试查找
  7. 器件基础知识——电感
  8. 511遇见易语言教程外形框和模仿进度条闪烁效果
  9. duilib 添加自定义list一例
  10. 原生滑动选择器 html,自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器 - j.king...