进程通信的分类
根据交换信息量的多少和效率的高低,进程通信分为如下低级通信和高级通信。 由于进程的互斥和同步,需要在进程间交换一定的信息,故不少学者将它们也归为进程通信。只能传递状态和整数值(控制信息)。
特点:传送信息量小,效率低,每次通信传递的信息量固定,若传递较多信息则需要进行多次通信。
编程复杂:用户直接实现通信的细节,容易出错。 提高信号通信的效率,传递大量数据,减轻程序编制的复杂度。
提供三种方式:
1.共享内存模式
2.消息传递模式
3.共享文件模式
进程和线程通信方式有什么不同
信号一般是发送给一个正在执行中的进程的系统级别的中断。但是有些系统级别的调用不会被信号中断。所以,你可以从一个进程给另一个进程发送一个信号(比如Kill 进程号,读取man page)去实现进程间的通信;
消息对列是由操作系统提供的机制,负责进程之间消息类型化通信; 使用信号量,如果信号自己没有足够容量包含信息,需要其他共享资源去保存信息。如果想发送一个字符串消息,你需要将一个字符串保存到另外一个进程能够获取到字符串地方,然后发送信号告诉该进程这个消息已经准备好了。如果通过消息队列发送消息,系统不会中断进程让进程知道,进程必须主动检查给自己的消息。如果你不使用select()系统去检查自己的消息,你就必须一直等待。 这是使用消息对列最大的问题。
消息队列是类型化的,你可以使用这种类型去发送/接收的消息。
信号不会被计数,仅仅会做个简单的标记。 当多个信号到达并被阻塞时,系统仅仅标记有信号到达,不会告诉进程有多少个信号到,所以在编程时要留意这个问题。线程的目的就是实现多个程序的并发运行。在多线程环境中,进程作为资源的独立单位,线程是进程的一个实体,是被进程调度的基本单位。进程间通信必须使用操作系统提供的进程通讯机制,而同一进程的各线程可以直接读写进程数据段进行通信淡然同样需要同步和互斥手段的辅助。以保证数据的一致性。另外同一进程的线程切换比进程切换快的多。
线程包括内核级线程KTL 用户级线程UTL 混合式线程
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!