| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux进程间通信 -> 正文阅读 |
|
[系统运维]Linux进程间通信 |
📌📌📌为您导航📌📌📌🍔1.进程间通信介绍在系统中,进程之间可能会存在特定的协同工作的场景。一个进程要把自己的数据交付给另一个进程,让其进行处理。两个进程要互相通信其实并不容易,因为进程具有独立性,想要通信必须先看到一份公共资源(一段内存),而这个资源不可能属于任何一个进程,这样就违背独立原则,而是由操作系统管理,所以进程间通信的本质:其实是由OS参与,提供一份所有通信进程都能看到的公共资源。 🍟1.1进程间通信目的
🍟1.2进程间通信发展
🍟1.3进程间通信分类管道
System V IPC
POSIX IPC
🥪2.管道🌭2.1什么是管道
在OS中,父进程创建出子进程,它们共享同一份代码和数据,直至发生写时拷贝,才各自拥有一份数据,不知道大家有没有想过,当父进程创建出一个文件时,子进程是否也会创建出一个文件,实际上并不会,因为父子进程是共享代码和数据,而文件不属于进程,所以父子进程会共同访问这个文件,当父进程向文件写入数据时,数据会保存在文件的内核缓冲区,此时子进程可以读取到这段数据,这样进程间就建立起了通信,这就是管道。 🌭2.2站在文件描述符角度-深度理解管道
图示的管道就是刚刚我们所说的文件的 🌭2.3创建匿名管道
匿名管道特点
管道是有大小的,是
在使用管道进行读写操作时,我们通常会遇到以下四种情况: 🌭2.4创建命名管道
指令
🌭2.5System V进程间通信
共享内存
需要知道的是:
先来说说shmflg标志位 再来说说参数key,我们刚刚说了共享内存有标识唯一性的ID让不同进程看到同一份资源,这个key就是这个ID,这个ID需要我们自己手动设置,但实际中我们不太方便自己去设定,而是用
控制共享内存
关联/取消关联共享内存
💡: 我们刚刚在通过共享内存进行通信时并没有用到read()或write(),所以共享内存一旦建立好并映射进自己进程的地址空间,该进程就可以直接看到该共享内存,就如同malloc的空间一般,不需要任何系统调用接口。(共享内存是所有进程间通信中速度最快的)共享内存不提供任何同步或者互斥机制,需要程序员自行保证数据的安全。 再来看看信号量的内核数据结构 🌭2.6system V信号量
喜欢这篇文章的可以给个 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:22:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |