前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Binder 机制】进程通信 | 用户空间与内核空间 | MMU 与虚拟内存地址

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

作者头像
韩曙亮
发布2023-03-29 17:20:14
1.7K0
发布2023-03-29 17:20:14
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、进程通信


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

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

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

二、用户空间与内核空间


系统中的内存分为

2

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

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

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

在这里插入图片描述
在这里插入图片描述

三、MMU 与虚拟内存地址


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

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

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

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

在这里插入图片描述
在这里插入图片描述
32

位的操作系统的 寻址空间是

0

~

2^{32}

, 大小

4

GB ;

32

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

64

位的操作系统的 寻址空间是

0

~

2^{64}

, 这个寻址空间很大 , 一般是使用前

40

位 , 大概是

18

TB ;

64

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

32

位的系统中 , MMU 会让每个应用都有

1

4

GB 大小的空间 ,

Linux 系统内核空间占

1

GB , 用户空间

3

GB ;

0

~

3

GB 是用户空间地址 ,

3

~

4

是内核空间地址 ;

Windows 系统内核空间占

2

GB , 用户空间

2

GB ;

虚拟地址的必要性 : 代码编译完成之后 , 地址是分配好的 , 都是从

0

地址开始计数的 , 因此如果要保证程序的运行 , 必须保证应用进程的内存从

0

开始 ; 这里将实际的物理内存地址映射为虚拟内存地址 , 这个虚拟内存地址可以保证每个程序都按照相同的初始地址运行 ;

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、进程通信
  • 二、用户空间与内核空间
  • 三、MMU 与虚拟内存地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档