zoukankan      html  css  js  c++  java
  • linux IPC机制学习博客

    要求

    研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 
    - 共享内存
    - 管道
    - FIFO
    - 信号
    - 消息队列
    

    研究博客

    管道(PIPE)

    • 管道(PIPE):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系(父子进程)的进程间使用。另外管道传送的是无格式的字节流,并且管道缓冲区的大小是有限的(管道缓冲区存在于内存中,在管道创建时,为缓冲区分配一个页面大小)。

    管道只能在本地计算机中使用,而不可用于网络间的通信。

    参考示例

    有名管道 (FIFO):

    • 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。

    管道因为没有名字所以只能用于具有亲缘关系的进程,而有名管道(FIFO)则克服了这个限制。

    参考示例

    信号

    • 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

    消息队列(Message Queue):

    • 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

    共享内存(Shared Memory):

    • 共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

    参考示例

    mmap函数就是一个很好的示例

    • mmap系统调用是的是的进程间通过映射同一个普通文件实现共享内存.普通文件被映射到进程地址空间后,进程可以向像访问普通内存一样对文件进行访问,不必再调用read,write等操作

    码云链接

    博客参考

  • 相关阅读:
    Memoization-329. Longest Increasing Path in a Matrix
    Map-560. Subarray Sum Equals K
    Geometry-587. Erect the Fence
    Reservoir Sampling-382. Linked List Random Node
    Brainteaser-292. Nim Game
    Minimax-486. Predict the Winner
    Topological Sor-207. Course Schedule
    web前端开发规范手册
    css初始化
    asp.net LINQ实现数据分页
  • 原文地址:https://www.cnblogs.com/hpl20155329/p/7900976.html
Copyright © 2011-2022 走看看