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

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

文章目录

一、进程通信

二、用户空间与内核空间

三、MMU 与虚拟内存地址





一、进程通信


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


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


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






二、用户空间与内核空间


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


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


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

image.png







三、MMU 与虚拟内存地址


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


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


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


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

image.png



32 3232 位的操作系统的 寻址空间是 0 00 ~ 2 32 2^{32}2

32

 , 大小 4 44 GB ;


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


64 6464 位的操作系统的 寻址空间是 0 00 ~ 2 64 2^{64}2

64

 , 这个寻址空间很大 , 一般是使用前 40 4040 位 , 大概是 18 1818 TB ;


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



在 32 3232 位的系统中 , MMU 会让每个应用都有 1 11 个 4 44 GB 大小的空间 ,



Linux 系统内核空间占 1 11 GB , 用户空间 3 33 GB ; 0 00 ~ 3 33 GB 是用户空间地址 , 3 33 ~ 4 44 是内核空间地址 ;


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



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


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


目录
相关文章
|
2月前
麒麟系统mate-indicators进程占用内存过高问题解决
【10月更文挑战第7天】麒麟系统mate-indicators进程占用内存过高问题解决
266 2
|
2月前
|
存储 监控 算法
Java中的内存管理:理解Garbage Collection机制
本文将深入探讨Java编程语言中的内存管理,着重介绍垃圾回收(Garbage Collection, GC)机制。通过阐述GC的工作原理、常见算法及其在Java中的应用,帮助读者提高程序的性能和稳定性。我们将从基本原理出发,逐步深入到调优实践,为开发者提供一套系统的理解和优化Java应用中内存管理的方法。
|
1天前
|
运维 监控 Ubuntu
【运维】如何在Ubuntu中设置一个内存守护进程来确保内存不会溢出
通过设置内存守护进程,可以有效监控和管理系统内存使用情况,防止内存溢出带来的系统崩溃和服务中断。本文介绍了如何在Ubuntu中编写和配置内存守护脚本,并将其设置为systemd服务。通过这种方式,可以在内存使用超过设定阈值时自动采取措施,确保系统稳定运行。
13 4
|
14天前
|
C语言 开发者 内存技术
探索操作系统核心:从进程管理到内存分配
本文将深入探讨操作系统的两大核心功能——进程管理和内存分配。通过直观的代码示例,我们将了解如何在操作系统中实现这些基本功能,以及它们如何影响系统性能和稳定性。文章旨在为读者提供一个清晰的操作系统内部工作机制视角,同时强调理解和掌握这些概念对于任何软件开发人员的重要性。
|
12天前
|
算法 Linux
深入探索Linux内核的内存管理机制
本文旨在为读者提供对Linux操作系统内核中内存管理机制的深入理解。通过探讨Linux内核如何高效地分配、回收和优化内存资源,我们揭示了这一复杂系统背后的原理及其对系统性能的影响。不同于常规的摘要,本文将直接进入主题,不包含背景信息或研究目的等标准部分,而是专注于技术细节和实际操作。
|
13天前
|
Linux 调度 C语言
深入理解操作系统:从进程管理到内存优化
本文旨在为读者提供一次深入浅出的操作系统之旅,从进程管理的基本概念出发,逐步探索到内存管理的高级技巧。我们将通过实际代码示例,揭示操作系统如何高效地调度和优化资源,确保系统稳定运行。无论你是初学者还是有一定基础的开发者,这篇文章都将为你打开一扇了解操作系统深层工作原理的大门。
|
22天前
|
算法 调度 开发者
深入理解操作系统:从进程管理到内存分配
本文旨在为读者提供一个深入浅出的操作系统知识之旅,从进程管理的基础概念出发,探索内存分配的策略与技巧。我们将通过实际代码示例,揭示操作系统背后的逻辑与奥秘,帮助读者构建起对操作系统工作原理的直观理解。文章不仅涵盖理论知识,还提供实践操作的指导,使读者能够将抽象的概念转化为具体的技能。无论你是初学者还是有一定基础的开发者,都能在这篇文章中找到有价值的信息和启发。
|
27天前
|
算法 调度 C++
深入理解操作系统:从进程管理到内存分配
【10月更文挑战第42天】本文将带你进入操作系统的神秘世界,探索其核心概念和关键技术。我们将从进程管理开始,了解操作系统如何协调和管理多个程序的运行;然后,我们将深入研究内存分配,看看操作系统如何有效地分配和管理计算机的内存资源。通过这篇文章,你将获得对操作系统工作原理的深入理解,并学会如何编写高效的代码来利用这些原理。
|
1月前
|
算法 Linux 开发者
深入探究Linux内核中的内存管理机制
本文旨在对Linux操作系统的内存管理机制进行深入分析,探讨其如何通过高效的内存分配和回收策略来优化系统性能。文章将详细介绍Linux内核中内存管理的关键技术点,包括物理内存与虚拟内存的映射、页面置换算法、以及内存碎片的处理方法等。通过对这些技术点的解析,本文旨在为读者提供一个清晰的Linux内存管理框架,帮助理解其在现代计算环境中的重要性和应用。
|
1月前
|
消息中间件 存储 Linux