操作系统–进程通信
1、概念:进程之间的通信就是进程之间的信息交换
2、为什么有进程通信:
进程是一个独立的单位,拥有的内存地址空间都是独立的。
但是信息交换也是必须的,所以要有进程之间的通信。
3、进程通信方法—共享存储
操作系统为通信进程分配共享的空间,但是需要互斥访问。
基于数据结构的共享:比如共享空间只能放长度为10的数组,速度慢,是一种低级通信方式
基于存储区的共享:操作系统提供一块共享存储区,但是数据的存放形式,存放位置都是进程自己控制,是一种高级的通信方式
4、进程通信方法—管道
管道:连接读写进程的一个共享文件,大小是固定的 管道采用半双工的通信.
一个时间段只能实现单向的传输,需要实现双向的通信就要两个管道。
每个进程需要互斥的访问管道
数据是以字符流的形式写入管道的,管道写满,写进程的write()系统调用就会被阻塞,等待数据被取走。
读进程把数据全部取走后,管道变空,此时读进程的read()系统调用就会被阻塞
如果没有被写满,不允许读,没有读完,就不允许写 数据读出后,就会被管道抛弃,意味着读进程只能有一个,避免读数据错误。
5、程通信方法—消息传递
进程间的通信通过格式化消息为单位,格式化的消息包括消息头与消息尾。
需要使用到操作系统的发送与接收原语
直接通信:把消息直接挂在进程的消息缓冲队列上。
间接通信:需要首先把消息先发送到一个中间体--信箱。