IPC工具

通信工具
关注进程之间的数据交换
-
数据传输工具:写入和读取数据
-
实现:
-
一个进程将数据写入到这些IPC工具中,然后另一个数据从中读取数据
-
在用户内存和内核内存之间进行 两次数据传输
-
写入:从用户内存写入数据到内核内存中
-
读取:从内核内存读取数据到用户内存中
-
-
-
类型
-
字节流:可读取 任意数量 的字节
-
消息:只能读取 完整 的消息,无法只读取 部分 的消息
-
伪终端
-
-
-
共享内存:允许进程通过将数据放到由进程间共享的一块内存中以完成信息的交换
-
实现:内核通过将每一个进程的页表条目执行 同一个RAM分页 来实现
-
通信 无需系统调用
-
通信 无需用户内存和内核内存之间的数据传输
-
-
二者差别:
-
数据传输工具中的读取是 破坏性 的,读取操作会 消耗 数据
-
读取者和写者进程之间的同步是 原子 的,即读取操作会阻塞直到有数据被写入
-
放入共享内存中的数据对所有共享这块内存的进程可见
-
共享内存通信 很快,但需要使用 信号量 进行同步
同步工具
关注进程和线程操作之间的同步
-
信号量:一个信号量是由内核维护的一个 整数,其值永远不会为0,一个进程可以 增加或减少 一个信号量的值(减少代表获取该资源,增加代表释放该资源,减少一个为0的信号量,进程会被阻塞,直到资源可获取)
-
文件锁:用来同步多个进程对同一个文件的操作,分为 读(共享)锁 和 写(互斥)锁
-
互斥体和条件变量
信号
可作为同步技术,亦可作为通信技术:信号编号本身是一种形式的信息
总结


持久性 是指一个IPC工具的生命周期
-
进程持久性:所有进程都关闭了该IPC对象时,该对象对应的内核资源才会被销毁
-
内核持久性:只有显式的删除内核持久的IPC对象或系统关闭时,该对象才会被销毁
-
文件系统持久性:IPC对象一直存在,直至被显式的删除
posted on
浙公网安备 33010602011771号