进程通信

进程通信

进程间通信 Inter-Process Communication (IPC)

image

前置:进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。因此进程通信需要操作系统支持。


一、共享存储

image

为避免出错,各个进程对共享空间的访问应该是互斥的。

各个进程可使用操作系统内核提供的同步互斥工具(如 P、V操作)

(一)基于存储区的共享

速度很快,是一种高级通信方式。操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统。

(二)基于数据结构的共享

速度慢、限制多,是一种低级通信方式。比如共享空间里只能放一个长度为10的数组。

二、消息传递

进程间的数据交换以格式化的消息( Message )为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。image

(一)直接通信方式

消息从进程P的地址空间复制到内核空间,再复制到进程Q的地址空间。(需要点名道姓)

image

(二)间接通信方式

image

三、管道通信

理解(与上面提到的基于存储区的共享存储的区别):

基于存储区的共享存储是操作系统划定一块内存空间,进程在使用时可不按顺序,任意自由使用(自由读和自由写)。而管道通信的数据结构是一种循环队列,遵循FIFO原则,只能先进先出顺序读写。

image

写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据。

读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据。

posted @   Wind_730  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示