文章目录

  • 一、进程通信
  • 二、用户空间与内核空间
  • 三、MMU 与虚拟内存地址

一、进程通信


进程隔离概念 : 系统中的进程存在 " 进程隔离 " , 出于对进程运行的保护 , 两个进程的内存是隔离的 , 并且不允许进行直接通信 ;

内核自带通信机制 : 内核提供了 pipe 管道 , socket 等通信机制 , 可以进行跨进程通信 ;

Binder 机制 : Android 中的进程间的通信 , 是通过 " Binder " 机制 完成的 ; Binder 机制不是内核自带的机制 , 而是 Android 可以动态进行 Binder 注册 , 然后进程间通过 Binder 进行通信 ;

二、用户空间与内核空间


系统中的内存分为 222 部分 , 用户空间 和 内核空间 , 内核空间一般是运行操作系统 , 用户空间一般运行应用 ;

操作 内核空间 时的状态称为 " 内核态 " ;

操作 用户空间 时的状态称为 " 用户态 " ;

三、MMU 与虚拟内存地址


每个 应用进程 的 内存空间 使用的地址都是 独立的 , 连续的 , 虚拟地址 ;

内存管理单元 ( MMU - Memory Management Unit ) 的作用就是进行 内存映射的 ;

MMU 的作用是将真实的 内存 物理地址 转为 虚拟地址 , 虚拟地址 又称为 逻辑地址 , 一般情况下虚拟地址大小远远大于物理地址 ;

MMU 可以让每个进程都拥有独立的连续的内存空间 ;

323232 位的操作系统的 寻址空间是 000 ~ 2322^{32}232 , 大小 444 GB ;

323232 位操作系统 , 使用的是 二级分页 ;

646464 位的操作系统的 寻址空间是 000 ~ 2642^{64}264 , 这个寻址空间很大 , 一般是使用前 404040 位 , 大概是 181818 TB ;

646464 位操作系统 , 使用的是 四级分页 ;

在 323232 位的系统中 , MMU 会让每个应用都有 111 个 444 GB 大小的空间 ,

Linux 系统内核空间占 111 GB , 用户空间 333 GB ; 000 ~ 333 GB 是用户空间地址 , 333 ~ 444 是内核空间地址 ;

Windows 系统内核空间占 222 GB , 用户空间 222 GB ;

虚拟地址的必要性 : 代码编译完成之后 , 地址是分配好的 , 都是从 000 地址开始计数的 , 因此如果要保证程序的运行 , 必须保证应用进程的内存从 000 开始 ; 这里将实际的物理内存地址映射为虚拟内存地址 , 这个虚拟内存地址可以保证每个程序都按照相同的初始地址运行 ;

汇编指令 需要直接操作 虚拟内存地址 ;

【Binder 机制】进程通信 | 用户空间与内核空间 | MMU 与虚拟内存地址相关推荐

  1. Binder跨进程通信原理(一):动态内核加载模块

    先上一张Binder 的工作流程图.(如果不清晰,可以 复制图片链接到浏览器 或 保存到本地 查看,我经常都是这样看图的哈) 一开始上手,陌生的东西比较多,But,其实并不复杂.喔,流程图是用 Pro ...

  2. 用户空间与内核空间,进程上下文与中断上下文[总结]【转】

    转自:http://blog.csdn.net/lizuobin2/article/details/51791863 本文转载自:http://www.cnblogs.com/Anker/p/3269 ...

  3. 嵌入式之linux用户空间与内核空间,进程上下文与中断上下文

    文章目录 前言 用户空间与内核空间 内核态与用户态 进程上下文和中断上下文 上下文 原子 进程上下文 中断上下文 进程上下文VS中断上下文 原子上下文 前言 之前在学习嵌入式linux系统的时候,一直 ...

  4. 用户空间与内核空间,进程上下文与中断上下文[总结]

    用户空间与内核空间,进程上下文与中断上下文[总结] 最近有研究到zabbix监控,就得清楚cpu各个指标的含义, 1,简单回顾下cpu及计算机组成: 计算机五大部件: 运算器 控制器 存储器 输入/输 ...

  5. Binder跨进程通信原理(三):Binder IPC实现原理

    1. 动态内核可加载模块 && 内存映射 正如上一章所说, 跨进程通信是需要内核空间做支持的. 传统的 IPC 机制如 管道, Socket, 都是内核的一部分, 因此通过内核支持来实 ...

  6. 再谈Android Binder跨进程通信原理

    在谈Android的跨进程通信问题上时,总会问到Android的IPC机制,是指两个进程之间进行数据交换的过程.按操作系统的中的描述,线程是CPU调度最小的单元,同时线程是一种有限的系统资源,而进程是 ...

  7. linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间

    linux驱动程序一般工作在内核空间,但也可以工作在用户空间.下面我们将详细解析,什么是内核空间,什么是用户空间,以及如何判断他们. Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,L ...

  8. linux 物理内存用完了_Linux用户空间与内核空间(理解高端内存)

    Linux内核地址映射模型 x86 CPU采用了段页式地址映射模型.进程代码中的地址为逻辑地址,经过段页式地址映射后,才真正访问物理内存. 段页式机制如下图. Linux内核地址空间划分 通常32位L ...

  9. 虚拟内存,虚拟地址空间,用户空间,内核空间

    虚拟内存,就是用磁盘作为介质,暂时性存储数据,和主存进行换入换出,使程序能够使用更多的内存.虚拟内存是单位是页,固定大小的数据方便数据的交换.如果一个应用程序要访问某段内存,通过MMU得到相应的页号, ...

最新文章

  1. Nowcoder 提高组练习赛-R3
  2. Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
  3. 将maven项目托管到github
  4. apache 伪静态 .htaccess
  5. oracle中$的用法,关于expdp 中query用法小结
  6. html新增的选择器,HTML5新增的选择器
  7. Adtran加入SDN大潮,剑指运营商SDN转型
  8. Web前端开发之“常见模块你真的很了解吗?”
  9. python的chr可以转换中文吗,chr()在python中怎么实现编码的转换
  10. 【转】Monkey测试3——Monkey测试结果分析
  11. 写博客一年多的一些感想
  12. 永磁同步电机 MTPA 超前角弱磁 SVPWM过调制
  13. 离散数学复习二:空集、补集、德摩根定律、异或、广义交和广义并
  14. 澳洲那个大学计算机专业好,澳洲哪个大学计算机专业比较好
  15. css3图片淡出淡入怎么做,css3图像淡入淡出(css3 image fadein)
  16. 当WebRTC Pion示例无音频流的时候,如何添加音频模块并通过浏览器播放?
  17. python使用matplotlib库构建动态图表 --基于animation模块
  18. Hitters数据集数据分析
  19. android 仿苹果 小组件,安卓仿ios14桌面小部件
  20. 2019阿里巴巴内推首轮面试总结

热门文章

  1. VMware宋家瑜:U2VL要趁早
  2. zabbix监控交换机出图断断续续
  3. gstreamer开发日志
  4. c#与科学计算之一:发掘 C# 特性赋予科学计算项目以威力(转贴)
  5. MySQL 时间类型 DATE、DATETIME和TIMESTAMP
  6. 文本超出隐藏 综合整理
  7. SpringMVC异常报406 (Not Acceptable)的解决办法
  8. 电商课题I:集群环境下业务限流
  9. DirectX 90 3D 外接体
  10. Docker+mysql