zoukankan      html  css  js  c++  java
  • 【操作系统、UNIX环境编程】进程间通信

      多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程使用,我们把一次仅允许一个进程使用的资源称为临界资源,许多物理设备都属于临界资源,如打印机等。

      Linux下进程间通信有如下几种方式:

      1)管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。

      2)信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;Linux除了支持UNIX早期信号语义函数signal外,还支持语义符合Posix.1标准的信号函数sigaction。

      3)Message(消息队列):消息队列是消息的链表,包括Posix消息队列System V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程可以读走消息队列中的消息。消息队列克服了信号承载信息少,管道只能承载无格式字节流以及缓冲区大小受限等特点。

      4)共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率低而设计的往往与其他通信机制,如信号量结合使用,来达到进程间的的同步与互斥。

      5)信号量(samaphore):主要作为进程间以及同一进程不同线程间的同步手段。

      6)套接字(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由UNIX系统的BSD分支开发出来的,单现在一般可以移植到其他类UNIX系统上:Linux和System V的变种都支持套接字。

  • 相关阅读:
    1046 Shortest Distance (20 分)(模拟)
    1004. Counting Leaves (30)PAT甲级真题(bfs,dfs,树的遍历,层序遍历)
    1041 Be Unique (20 分)(hash散列)
    1036 Boys vs Girls (25 分)(查找元素)
    1035 Password (20 分)(字符串处理)
    1044 Shopping in Mars (25 分)(二分查找)
    onenote使用小Tip总结^_^(不断更新中...)
    1048 Find Coins (25 分)(hash)
    三个故事
    领导者的举止
  • 原文地址:https://www.cnblogs.com/vincently/p/4751940.html
Copyright © 2011-2022 走看看