美文网首页
系统的内存管理

系统的内存管理

作者: HelloBinary | 来源:发表于2020-08-17 15:19 被阅读0次

物理地址

物理设备的真实内存地址,早期的电脑就是使用直接使用物理内存进行内存管理,为了解决多个应用内存过快使用完的问题,工程师们设计一套方案,将这个应用有用到的部分加载到系统内存中,如果我们开启两个应用qq和微信,那么这两个应用在系统内存中根据需要开辟相应的内存空间。

内存分页:一个应用(IOS中就是MACH-O文件)加载到内存空间不是全部一次性加入的,系统会智能的选择需要加载的那部分进入内存,也就是内存分页.IOS中一页的容量是16KB。如图一所示。假设俩个应用的内存总共分成5份,那么程序运行过程中就会把他们中活跃的那部分加载进 内存。当然如果不断的打开内存,也会出现内存不足的情况,这时候就会用当前需要的内存覆盖不活跃的内存。

图一

物理内存分配涉及一个内存的安全访问问题,由于是物理内存,所以其中的一个应用可以通过物理地址访问和篡改另外一个应用的数据,类似早期的数据修改外挂(金山游侠)。

所以针对这种安全问题,虚拟内存技术被提了出来。

虚拟内存技术

系统为每一个应用分配了4个g的内存空间,虚拟内存地址通过页表来和物理地址进行映射。页表中存储了这个应用的所有地址信息(0~4g)。


图二

由于虚拟内存的地址都是从0~4g,所以也存在重大的安全隐患。我们可以通过对mach-o文件进行分析,可得到所有的变量和函数的偏移地址,很容易就可以对数据进行篡改。

ASLR address space layout randomization(地址随机化)

ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆、栈、共享库映射等线性区布局的随机化.
每次加载应用系统在对这个分配一个进程的同时,也会分配一个随机值,所以当前的地址的偏移量 需要加上这个随机值。

相关文章

  • shell -- 基础

    Linux 内核的作用: 系统内存管理、软件程序管理、硬件管理、文件系统管理 系统内存管理: 最主要的是对虚拟内存...

  • 【操作系统】3.1 内存管理基础

    1.内存管理的介绍 问题:操作系统的内存管理主要是做什么? 操作系统的内存管理主要负责①内存的分配与回收(mall...

  • chapter 1.初识Linux Shell

    内核主要负责功能 内核主要负责以下四种功能: 系统内存管理 软件程序管理 硬件设备管理 文件系统管理 系统内存管理...

  • 考研计算机操作系统思维导图

    操作系统 文件管理 内存管理

  • 内存管理——分页、分段

    参考 怎样通俗的理解操作系统中内存管理分页和分段?计算机操作系统 - 内存管理

  • Android 系统内存管理机制

    系列文章Java 内存模型Android 系统内存管理机制Android 性能优化(三)之内存管理Android ...

  • Java 内存模型- JMM

    系列文章Java 内存模型Android 系统内存管理机制Android 性能优化(三)之内存管理Android ...

  • OC语法_IOS内存管理

    目录: 1、内存的定义 2、内存管理的基础概念 3、IOS系统中的内存管理 1、内存的定义 1.1. 内存是计算...

  • 内存管理笔记(持续更新...)

    这篇纯粹是笔记。 内存管理 堆:需要手动释放。栈:系统自动管理。 所谓内存管理,就是对内存进行管理,涉及的操作有:...

  • 内存池原理详解

    从一个问题谈起:从内核中的伙伴系统,页高速缓存系统,slab内存管理系统,常规内存高速缓存系统,到用户线性区管理,...

网友评论

      本文标题:系统的内存管理

      本文链接:https://www.haomeiwen.com/subject/dycqjktx.html