过程概念
进程是操作系统的概念。每当我们执行程序时,都会为操作系统创建一个进程。在这个过程中,资源被分配和释放。一个进程可以被认为是一个程序的一次执行。
进程通信的概念
进程用户空间相互独立,一般不能相互访问。但在很多情况下,进程之间需要相互通信才能完成系统的某个功能。进程通过与内核和其他进程通信来协调它们的行为。
进程通信的应用场景
数据传输:一个进程需要将自己的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间。
共享数据:多个进程要操作共享数据,一个进程对共享数据的修改应该立即被其他进程看到。
通知事件:一个进程需要向另一个或一组进程发送消息以通知它(它们)发生了某些事件(例如在进程终止时通知父进程)。
资源共享:相同的资源在多个进程之间共享。为此,内核需要提供锁定和同步机制。
进程控制:有些进程想要完全控制另一个进程的执行(例如Debug进程)。这时,控制进程希望能够拦截到另一个进程的所有陷阱和异常,并且能够及时知道它的状态变化。
进程如何通信
1.管道
管道分为命名管道和未命名管道
无名管道是一种半双工的通信方式,数据只能单向流动,并且只能在有亲属关系的进程之间使用。进程的亲属关系一般是指父子关系。哑管道通常用于两个不同进程之间的通信。当进程创建管道并调用fork创建自己的子进程时,父进程关闭读管道端,子进程关闭写管道端,提供了两个进程之间数据流转的方式。
命名管道也是一种半双工通信方法,但它允许在不相关的进程之间进行通信。
2.信号量
信号量是一个计数器,可用于控制多个线程对共享资源的访问。它不是用于交换大量数据,而是用于多个线程之间的同步。它通常被用作一种锁定机制,以防止一个进程在访问一个资源时,其他进程也访问该资源。因此,它主要用作进程之间以及同一进程中不同线程之间的同步手段。
Linux 提供了一组精心设计的信号量接口来对信号进行操作。它们不仅适用于二进制信号量。下面将介绍这些函数,但请注意,这些函数用于对信号量进行分组。操作的价值。它们在头文件 sys/sem.h 中声明。
semget 函数
它的作用是创建一个新的信号量或获取一个现有的信号量
semop函数
它的作用是改变信号量的值
semctl 函数
该函数用于直接控制信号量信息
3.信号
信号是一种相对复杂的通信方法,用于通知接收进程有事件发生。
4.消息队列
消息队列是消息的链表,存储在内核中,由消息队列标识符标识。消息队列克服了信号传输信息少、管道只能承载无格式字节流、缓冲区大小受限等特点。消息队列是 UNIX 下不同进程之间共享资源的一种机制。UNIX 允许不同的进程以消息队列的形式向任何进程发送格式化的数据流。对消息队列有操作权限的进程可以使用msget来完成消息队列。操作控制。通过使用消息类型,进程可以按任何顺序读取消息,或确定消息的优先级。
5.共享内存
共享内存就是映射一块可以被其他进程访问的内存。此共享内存由一个进程创建,但可以由多个进程访问。共享内存是最快的IPC(进程间通信)方法linux的通信方式套接字,它是针对其他进程的。它是专为进程间通信效率低下而设计的。它通常与其他通信机制(例如信号量)结合使用,以实现进程之间的同步和通信。
6.套接字
Socket,即socket是一种通信机制,有了这种机制,客户端/服务器(即要通信的进程)系统的开发就可以在本地单机或跨网络进行。也就是说linux的通信方式套接字,它允许不在同一台计算机上但通过网络连接的计算机上的进程进行通信。也正因为如此,套接字清楚地区分了客户端和服务器。
套接字的特性由三个属性决定:域、类型和协议。
可用于不同的和进程间的通信
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 欧资源网