现代操作系统下的内存  

  现在的OS都引入了虚拟内存机制。我们说的内存空间,实际上虚拟内存空间,CPU执行PC指向的命令,PC指向的就是虚拟内存空间地址。虚拟内存机制只不过是OS为我们做了一层虚拟内存地址到物理内存地址的映射,我们不需要管具体是怎么映射的,直接用就完了。每个进程的虚拟地址空间都是一样的,所以A进程的0x300不会和B进程的0x300冲突,就好比1楼A002号房,和2楼A002号房,虽然都是A002号房,但是他们是不一样的,不会地址冲突。

  引入虚拟内存最大的好处就是使应用进程变得安全了,对于OS上的应用进程,他的空间都是OS划分的,只能在自己的小天地里面折腾。他不能去别人的空间搞破坏,别人也不可能过来骚扰自己。如果木马以应用进程身份运行的话,他就不能做破坏,除非是OS级木马,直接黑掉OS,否则根本不可能进入到别人的虚拟内存空间搞破坏。

虚拟内存在安全上带来了好处,但是也带来了数据共享的问题,即进程间通信

IPC的本质——数据共享

  在OS虚拟内存机制作用下,每个进程拥有独立的进程空间。尽管进程空间是各自独立的,相互之间没有任何可以共享的空间,但是至少还有一样东西是所有进程所共享的,那就是OS,因为甭管运行有多少个进程,但是它们共用OS只有一个。既然大家共用的是同一个OS,那么显然,所有的进程可以通过大家都共享第三方OS来实现数据共享。因此进程间通信的原理就是,OS作为所有进程共享的第三方,会提供相关的机制,以实现进程间数据的转发,达到数据共享的目的。

Linux OS所提供的c接口的进程间通信机制:

1)信号
2)管道(有名、无名)
3)消息队列
4)共享内存
5)信号量

信号和管道都是UNIX系统早期提供的比较原始的一种进程间通信(IPC)方式,早到Unix系统设计之初就有了。

后来Unix系统升级到第5版本时,又提供了三种新的IPC通信方式,分别是:

  • 消息队列
  • 信号量
  • 共享内存

System V就是系统第5版本的意思,后来的Linux也继承了unix的这三个通信方式

System V IPC缺点

进程结束时,system v ipc不会自动删除,进程结束后,使用ipcs依然能够查看到。

如何删除?

方法1:重启OS,很麻烦

方法2:进程结束时,调用相应的API来删除,后面再讲

方法3:使用ipcrm命令删除

备注:

Linux服务器开发,C/C++语言是大头,但是C/C++标准库并没有提供“进程控制”和“进程间通信”的库接口,因此你的程序在windows和Linux下想要实现“进程控制”和“进程间通信”的话,必须调用系统API或者说该系统自己特有的库(不是标准库)。

IPC——概述的更多相关文章

  1. 【原创】xenomai内核解析--实时IPC概述

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1.概述 2.Real-time IPC 2. ...

  2. 四十九、进程间通信——System V IPC 之消息队列

    49.1 System V IPC 介绍 49.1.1 System V IPC 概述 UNIX 系统存在信号.管道和命名管道等基本进程间通讯机制 System V 引入了三种高级进程间通信机制 消息 ...

  3. 进程-IPC 管道 (一)

    详见:https://github.com/ZhangzheBJUT/linux/blob/master/IPC(%E4%B8%80).md 一 IPC 概述 进程间通信就是在不同进程之间传播或交换信 ...

  4. 【原创】xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(三)--实时与非实时数据交互

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 目录 1.概述 1.概述 [原创]实时IPC概述 [ ...

  5. 【原创】xenomai内核解析--xenomai与普通linux进程之间通讯XDDP(一)--实时端socket创建流程

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 1.概述 上篇文章xenomai内核解析--实时IP ...

  6. 【xenomai内核解析】系列文章大纲

    xenomai内核解析 本博客为本人学习linux实时操作系统框架xenomai的一些记录,主要剖析xenomai内核实现,以及与linux相关的知识.方便读者定位具体文章,现列出本博客大纲,后续会陆 ...

  7. Anciroid的IPC机制-Binder概述

    在Linux系统中,是以进程为单位分配和管理资源的.出于保护机制,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭.但是,在一个复杂的应用系统中,通常会使用多个相关的进程来共同完成一项 ...

  8. 网络IPC:套接字接口概述

    网络IPC:套接字接口概述 套接字接口实现了通过网络连接的不同计算机之间的进程相互通信的机制. 套接字描述符(创建套接字) 套接字是通信端点的抽象,为创建套接字,调用socket函数 #include ...

  9. 第二章——第二节 IPC机制的概述和使用

    一.Serialiable与Paracle ①.作用    ②.使用 二.Binder与AIDL ①.各自的作用 三.如何使用IPC机制 举例 四.IPC机制的原理 ①.流程图  ②.自己编译自动生成 ...

随机推荐

  1. 转Python 爬虫入门实战

    转自:https://www.cnblogs.com/babycomeon/p/11651888.html

  2. APT攻击与银行

    APT与传统攻击 APT:团队作战,拥有自研工具集,意图明确,技术高超,拥有政府或商业背景,潜伏期多达数年. 传统攻击:脚本小子,水平参差不齐,短期攻击,直接获取利益为目标. 攻击目标 APT攻击链 ...

  3. JSON Hijacking漏洞

    https://github.com/SkyLined/LocalNetworkScanner JS.利用浏览器漏洞当对方打开网址时,扫描对方内网信息 https://www.freebuf.com/ ...

  4. SpringBoot学习笔记:读取配置文件

    SpringBoot学习笔记:读取配置文件 配置文件 在以往的项目中,我们主要通过XML文件进行框架配置,业务的相关配置会放在属性文件中,然后通过一个属性读取的工具类来读取配置信息.在SpringBo ...

  5. 导入数据到数据库表,报错[Err] [Row1] [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes

    # 在数据库新增查询,执行如下命令即可: show VARIABLES like '%max_allowed_packet%'; set global max_allowed_packet = 2*1 ...

  6. Spring中声明式事务的注解@Transactional的参数的总结(REQUIRED和REQUIRES_NEW的与主方法的回滚问题)

    一.事务的传播行为1.介绍 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行.2.属性 事务的传播行为可以由传 ...

  7. LeetCode 1022. 从根到叶的二进制数之和(Sum of Root To Leaf Binary Numbers)

    1022. 从根到叶的二进制数之和 1022. Sum of Root To Leaf Binary Numbers 题目描述 Given a binary tree, each node has v ...

  8. 013 Android 实现流水灯功能+自定义控件的样式(可以复用)

    1.介绍 (1)获取屏幕的焦点 android:focusable与android:focusableInTouchMode(获取屏幕焦点) 前者针对在键盘下操作的情况,如果设置为true,则键盘上下 ...

  9. linux 加载新的磁盘(卷组)

    pvcreate /dev/vdbvgcreate datavg /dev/vdblvcreate -n datalv -L 99.8G datavgmkfs.ext3 /dev/datavg/dat ...

  10. Mybatis笔记3

    Mybatis映射文件的SQL深入 (Mybatis今天学的不多,看了半天的mysql必知必会) 动态sql语句-if语句,查询一个用户的时候,有可能根据地址查询,用户名查询,性别查询等,所以需要动态 ...