怎么做网站背景,专做民宿预定的网站,线上p2p网站建设,企业通过网络推广成功的案例复习进程间通信的7种方式#xff0c;总结出他们的优点。
一 内核提供的原始通信方式有三种
1、有名管道和无名管道
有名管道和无名管道都属于管道通信#xff0c;通过在内核空间创建一个特殊的文件#xff08;管道文件#xff09;#xff0c;一个进程将数据写入管道总结出他们的优点。
一 内核提供的原始通信方式有三种
1、有名管道和无名管道
有名管道和无名管道都属于管道通信通过在内核空间创建一个特殊的文件管道文件一个进程将数据写入管道另一个进程从管道中读取数据从而实现通信。管道文件是特殊的文件不用于存储数据仅仅只是用来完成进程间数据的交流
无名管道只适用于亲缘进程间的通信需要在fork之前将管道文件打开创建子进程后子进程继承一份管道的文件描述符才能使用该管道。而有名管道既可以用于亲缘进程的通信也可以用于非亲缘进程的通信
缺点1、管道文件的操作是一次性的当从管道中将写入的文件读取出来后该消息就不存在了
2、管道通信属于一种半双工通信方式同一时刻只能由A向B发送数据或者B向A发送数据要想实现双工就得创建两个无名管道。
2、信号
1、信号是软件模拟底层硬件的中断操作中断打断当前正在进行的事情去做另一件事 2、用户可以给某个进程发送信号一个进程也能给另一个进程发送信号内核也可以给某个进程发送信号
3、信号是软件实现的中断是硬件实现的
4、信号是linux内核实现的没有linux就没有信号的概念
5、当一个进程收到信号后的操作有三种默认一般是杀死进程、捕获、忽略
优点实时性高可用于处理异步事件。
缺点信号的信息量有限只能表示事件的发生无法携带额外的信息。
二 System V提供的三种通信方式
1、消息队列
消息队列允许进程以消息的形式交换信息。每个消息都有一个类型接收者可以根据类型选择接收的消息。
优点具有一定的灵活性可以通过消息类型进行筛选。
缺点消息队列的大小受到系统参数的限制。
2、共享内存
共享内存的操作不是一次性的当共享内存段中的数据被读取后依然存在
优点共享内存是所有进程间通信方式中效率最高的原因是操作共享内存段时无需进行用户空间和内核空间的切换
缺点需要手动控制进程之间的同步否则可能会出现竞态条件。
3、信号量信号灯集
信号量是完成多个进程之间同步问题的。信号量可以解决进程或线程间的临界区问题避免数据不一致。
优点能有效控制对共享资源的并发访问。
缺点需要程序员显式地进行控制使用不当容易造成死锁。
三 套接字通信socket
套接字可以用于不同机器上的进程间通信也可以用于同一机器上的进程间通信。套接字支持 TCP 和 UDP 通信协议。
优点支持跨网络的进程间通信支持多种通信协议。
缺点相比于其他本地通信机制速度稍慢。