寒假作业-day2

进程间通信的7种方式,总结出他们的优点

1. 内核提供的原始通信方式有三种

1.1 无名管道

1.2 有名管道

1.3 信号

2. System V提供了三种通信方式

2.1 消息队列

2.2 共享内存

3.1 信号量(信号灯集)

3. 套接字通信:socket

1.内核提供的原始通信方式

1.无名管道


是一种半双工的通信方式,数据只能单向流动而且只能在具有亲缘关系的进程间使用,一般用于两个不同进程之间的通信
优点: 简单方便


2.有名管道


是一种半双工的通信方式,但它允许无亲缘关系进程间的通信
优点: 可以实现任意关系的进程间的通信

3.信号


信号是一种比较复杂的通信方式,信号产生的条件: 按键、硬件异常、进程调用kill函数将信号发送给另一个讲程、用户调用kill命令将信号发送给其他进程,传递的消息比较少用于通知接收进程某个时间已经发生
优点: 不同信号可以传递不同的信息。通过为每个信号定义相应的处理函数可以实现相对灵活的通信


2.System V提供的三种通信方式


1.消息队列

1.消息队列是一种先进先出的队列型数据结构实际上是系统内核中的一个内部链表。消息被顺序插入队列中,其中发送进程将消息添加到队列未尾,接受进程从队列头读取消息
2.多个进程可同时向一个消息队列发送消息,也可以同时从一个消息队列中接收消息。发送进程把消息发送到队列尾部,接受进程从消息队列头部读取消息,消息一旦被读出就从队列中删除。
优点: 可以实现任意进程间的通信,并通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题,方便,

2.共享内存


共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC(进程间通信)方式,它是针对其它进程间通信方式运行效率低而专门设计的。
优点:无须复制,快捷,信息量大。


3.信号量(信号灯集)


信号量通常是一个整数变量,用于记录某个共享资源的可用数量,它可以被多个线程或进程同时访问和修改。 (信号量本质是一个计数器)
优点:可以同步进程


3.套接字通信 - socket

套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信
优点:

1)传输数据为字节级,传输数据可自定义,数据量小效率高;

2) 传输数据时间短,性能高;

3) 适合于客户端和服务器端之间信息实时交互

4) 可以加密,数据安全性强

你可能感兴趣的:(c语言,数据结构)