码迷,mamicode.com
首页 > 系统相关 > 详细

进程间通信

时间:2019-07-24 20:51:06      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:bsp   并行   有一个   临界资源   数据结构   场景   机制   两种   时间   

进程间通讯的五种方法:管道,信号量,共享内存,消息队列            套接字 Socket

【1】管道

  管道的创建方法:无名管道的创建方法  pipe(int fd[2])      有名管道的创建方法  int  mkfifo(char * path , mode_t mode);

相关问题:

  1.有名管道和无名管道的区别?搞到的默认大小是多大?         无名管道是父子间使用,有名管道是任意两个进程间使用

  2.管道是全双工还是半双工?       半双工

  3.管道写入的数据存放在哪了?      内存 

管道的实现:管道有一个默认大小的内存 ,一个读指针,一个写指针,管道可一边读一边写,但是不能读的别写得快

【2】信号量

  信号量是一种特殊的变量,用来控制进程的同步

  p, v原子操作         p:占用资源(+1)v :释放资源(-1);

  信号量主要有二值信号量和计数信号量

  临界资源:共享的资源,用信号量拉实现进程之间的同步

  临界区:访问临界资源的代码(即pv操作去控制的代码段)

【3】共享内存

  1.原理:申请一块物理内存空间作为共享内存,然后将其映射到两个不同进程的地址空间中,两个进程将会有一部分物理空间是重合叠的。以此达到两个进程间的交换数据的目的。

  2.接口:shmget()         shmctl()       shmat()             shmdt()

  3.应该映射到进程地址空间的那一部分呢?

【4】消息队列

  原理:数据结构的集合

  应用场景:

  1):将消息队列应用在日志处理当中,比如Kafka的应用,解决大量日志传输的问题。

  2):秒杀活动一般会因流量过大,导致流量暴增,应用挂掉。为了解决这个问题,一般需要早应用前端加入消息队列;可以控制活动的人数;可以缓解短时间内高流量压垮应用。

  3):异步处理,用户注册后,需要发注册邮件和注册短信。传统的做法有两种,串行和并行的方式。

  4):消息通讯是指,消息队列一般都内置了高效的通信机制,因此可以用在纯粹的消息通信,应用中,比如实现点对点信息交互,或者聊天室等     

  接口:

  msgget()            msgsnd()             msgrcv()            msgctl()

 

进程间通信

标签:bsp   并行   有一个   临界资源   数据结构   场景   机制   两种   时间   

原文地址:https://www.cnblogs.com/xcb-1024day/p/11240609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!