进程通信
进程间通信 Inter-Process Communication (IPC)
前置:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。因此进程通信需要操作系统支持。
一、共享存储
为避免出错,各个进程对共享空间的访问应该是互斥的。
各个进程可使用操作系统内核提供的同步互斥工具(如 P、V操作)
(一)基于存储区的共享
速度很快,是一种高级通信方式。操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。
(二)基于数据结构的共享
速度慢、限制多,是一种低级通信方式。比如共享空间里只能放一个长度为10的数组。
二、消息传递
进程间的数据交换以格式化的消息( Message )为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。
(一)直接通信方式
消息从进程P的地址空间复制到内核空间,再复制到进程Q的地址空间。(需要点名道姓)
(二)间接通信方式
三、管道通信
理解(与上面提到的基于存储区的共享存储的区别):
基于存储区的共享存储是操作系统划定一块内存空间,进程在使用时可不按顺序,任意自由使用(自由读和自由写)。而管道通信的数据结构是一种循环队列,遵循FIFO原则,只能先进先出顺序读写。
写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据。
读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据。
标签:存储,操作系统,通信,管道,进程,共享 From: https://www.cnblogs.com/Wind730/p/18532908/process-communication-zgowss