番禺做网站的公司,网站制作建设是做什么,免费空间设立网站,网站做微信接口吗文章目录 什么是进程通信为什么进程通信需要操作系统支持共享存储消息传递直接通信方式间接通信方式 管道通信小结注意 什么是进程通信
分享吃瓜文涉及到了进程通信
进程通信需要操作系统支持
为什么进程通信需要操作系统支持
进程不能访问非本进程的空间
当进程P和Q需要… 文章目录 什么是进程通信为什么进程通信需要操作系统支持共享存储消息传递直接通信方式间接通信方式 管道通信小结注意 什么是进程通信
分享吃瓜文涉及到了进程通信
进程通信需要操作系统支持
为什么进程通信需要操作系统支持
进程不能访问非本进程的空间
当进程P和Q需要进行数据交互时候P不能之间把数据写到Q的地址空间里所以需要有操作系统的支持才能完成 共享存储
申请一片内存区域作为共享内存区将该共享内存区都映射到各个进程的地址空间中
对共享内存区的访问应该是互斥的 操作系统只负责提供一片共享内存区域和映射关于各个进程往这片区域存放的数据形式存放位置由进程控制。
基于数据结构的共享类似定义了一个数据结构变量这个变量作为共享区域其他进程都可以共享。此时进程通信的自由度较低需要按照该变量的相关要求来访问如定义了整型数组变量那么每次写和读都是整型类型的且需按照数组的要求即个数限制
如左图是基于数据结构的共享
消息传递
格式化消息由消息头和消息体组成 直接通信方式
内核区域有各个进程的PCB各个进程的PCB包含了该进程的消息队列也就是其他进程发送给该进程应该被该进程接收的消息。
P给Q发消息在P进程空间完善要发送的消息然后使用发送原语该原语指明了消息的接收者 这个发送原语会导致操作系统内核接收到这个要发送的消息并把它挂到进程Q的消息队列里面或者说复制到 进程Q使用接收原语该原语指明了接收谁发过来的消息然后操作系统内核将Q的消息队列中属于P发过来的消息复制到进程Q的地址区域 间接通信方式
进程P通过系统调用申请一个信箱A或者多个信箱在内核空间中 进程P在自己进程空间内完善消息类似代码执行时对数据加工
然后使用发送原语该发送原语指明了发送到的信箱A操作系统将该消息复制到信箱A 进程Q使用接收原语该原语指明了从哪个信箱接收消息然后操作系统会将给信箱A的消息复制到进程Q的地址空间 注意
管道通信
管道某个时刻只能单向半双工 进程往管道写进程往管道读出内容循环队列
系统调用方式申请一个管道文件本质是内存中的内存缓存区
管道中前面有空位需要先写前面的前面填满了才能往后面写读也同样先进先出 本质是循环队列 先写的就是先进入的出来的就是先进入的如果前面的有空位此时还要写会先写前面的
半双工某个时间段内一个管道数据是单向流动的只能由一方传到另一方。但不同时刻流动方向可以不同但一个管道只能同时只有一个流动方向
多个进程读同一个管道会错乱即无法保证哪个数据被谁读走了
各进程互斥访问管道同一时刻只有一个进程对管道进行写或者读操作
5.第二个解决方案中操作系统控制从管道中读
小结
注意共享存储进程自己实现互斥 注意