美文网首页逆向学习
iOS系统底层之CPU寄存器、内存(虚拟内存)

iOS系统底层之CPU寄存器、内存(虚拟内存)

作者: 风雨彩虹_123 | 来源:发表于2021-07-15 14:48 被阅读0次

计算机是由CPU、内存和外部设备组成的。CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通过总线连接在一起。CPU主要是由控制器、运算器和寄存器组成的。控制器负责指令的读取和调度,运算器负责指令的运算执行,寄存器负责数据的存储,它们之间通过CPU内的总线连接在一起。

截屏2021-07-15 下午1.46.42.png

疑问一 : 内存作为数据存储的场所,那么为什么还要有寄存器?

CPU的运算速度是非常快的,如果把运算的数据都放到内存里面的话那将大大降低整个系统的性能。解决的办法是在CPU内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。我们称这一小块临时存储区域为寄存器。因为寄存器和运算器以及控制器是非常紧密的联系在一起的,它们的频率一致,所以运算时就不会因为数据的来回传输以及各设备之间的频率差异导致系统性能的整体下降。

疑问二 :为什么不把整个内存都集成进CPU?

寄存器的制作难度大,选材精,而且是集成到芯片内部,所价格高。而内存的成本则相对低廉,而且从工艺上来说,我们不可能在CPU内部集成大量的存储单元。

疑问三 : 高速缓存的功能?

程序在运行时是要将所有可执行的二进制指令代码都装载到内存里面去,CPU每执行一条指令前都需要从内存中将指令读取到CPU内并执行。如果按这样每次都从内存读取一条指令来依次执行的话,那还是存在着CPU和内存之间的处理瓶颈问题,从而造成整体性能的下降,所以就出现了高速缓存。当程序在运行时,就可以预先将部分在内存中要执行的指令代码以及数据复制到高速缓存中去,而CPU则不再每次都从内存中读取指令而是直接从高速缓存依次读取指令来执行,从而加快了整体的速度。

虚拟内存 : 当我们向系统申请内存时,系统并不会给你返回物理内存的地址,而是给你一个虚拟内存地址。每个进程都拥有相同大小的虚拟地址空间,只有我们开始使用申请到的虚拟内存时,系统才会将虚拟地址映射到物理地址上,从而让程序使用真实的物理内存。

栈区(stack):由系统去管理。地址从高到低分配。先进后出。会存一些局部变量,函数跳转地址、对象指针 。
堆区(heap):需要我们自己管理内存,alloc申请内存release释放内存。创建的对象也都放在这里。 地址是从低到高分配。堆是所有程序共享的内存,当N个这样的内存得不到释放,堆区会被挤爆,程序立马瘫痪。这就是内存泄漏。
全局区/静态区(staic):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放。
常量区:常量字符串就是放在这里的,还有const常量。
代码区:存放App代码。

相关文章

  • iOS系统底层之CPU寄存器、内存(虚拟内存)

    计算机是由CPU、内存和外部设备组成的。CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通...

  • linux性能监控命令

    linux性能监控命令 vmstat 可以用来监控虚拟内存。可对操作系统的虚拟内存、IO、CPU等多个指标的整体情...

  • 并发编程(十一):共享模型之内存

    Java内存模型 JVM即Java Memory Model,定义了主存、工作内存抽象概念,底层对应CPU寄存器、...

  • iOS内存管理及优化

    iOS内存管理的基本介绍: 1.iOS使用的是虚拟内存:段式虚拟内存+页式虚拟内存。 2.iOS没有Swap机制,...

  • Linux-什么是CPU上下文切换(下)

    怎么查看系统的上下文切换情况 过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢...

  • 漫谈Windows共享内存

    01.虚拟内存 在讲共享内存之前先来聊聊虚拟内存的那些事。 对于整个系统而言,主存与CPU的资源都是有限的,随着打...

  • linux的内存机制

    物理内存和虚拟内存,虚拟地址和物理地址。计算机存储一般包含高速缓存(cpu寄存器),内存储,外存储,而外存储又包含...

  • 理解 Linux 的虚拟内存[转]

    由来 虚拟内存 毋庸置疑,虚拟内存绝对是操作系统中最重要的概念之一。我想主要是由于内存的重要”战略地位”。CPU太...

  • 获取系统基本信息的命令_CentOS 7

    获取系统基本信息的命令 查看系统版本 查看cpu信息 查看ip地址 查看系统内存、虚拟内存的大小及占用情况 系统启...

  • 什么是虚拟内存?服务器虚拟内存怎么设置最好?

    一、什么是虚拟内存?虚拟内存有什么用处? 操作系统中所运行所有的程序全部都是经过内存提交给CPU然后才执行的,不过...

网友评论

    本文标题:iOS系统底层之CPU寄存器、内存(虚拟内存)

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