内存
- 1. 指针与引用
- 2. 进程的内存模型
- 3. 幻象大师---操作系统
- 4. 总结
本篇是 关于计算机内存最后一篇文章
什么是内存
C/C++内存模型
堆区与栈区的本质
Java、Python等内存模型
Java内存模型
Jave中的堆区与栈区是如何实现的
Python内存模型
指针与引用
进程的内存模型
幻想大师-操作系统
总结
1. 指针与引用
- 在各种编程语言中我们经常听到两个词:指针或者引用,这两个词都是好内存相关的,指针和引用的作用都是“如何找到存放在内存上的数据”
- C++中有指针和引用的概念,Java、Python 只有引用的概念(指针强调位置,引用强调强调别名)
由于Java/Pyhton 是通过解释器来查找对象的,也只有解释器知道这个对象在内存中的具体位置。C++是没有解释器的,所以需要指针来查找位置。
2. 进程的内存模型
- 我们知道不管是什么语言,最后操作系统看到的都是C程序,C程序在内存运行起来就是进程
- 下图是描述 32位操作系统下进程在内存中是什么样子
- 在上图汇总多出一块内存,这块内存就是操作系统在运行时候所占用的内存
- 每个进程独占一个连续的4G大小的内存,内存从地址0开始,一直到 0xffffffff ,其中最上方的1G留给操作系统使用,下方的3G留给进程自己使用,程序员可以操作的区域就是堆区和栈区。
请思考下面两个问题
为什么每个进程认为自己占用的是 4G内存了 ? 如果我的 计算机上只有2G内存,进程还会认为自己拥有4G内存吗?
操作系统可以运行很多程序,但是内存是由限的,力图只有2G ,每个进程都认为自己拥有4G内存,这会不会有什么问题 ?
要回答上面两个问题,下面就由我来带你了解下 操作系统 。
3. 幻象大师—操作系统
- 其实进程看到的内存是 操作系统制造的幻觉,操作系统让每个进程都认为内存只有两部分,一部分是操作系统的,一部分是自己的,这个就是 ------虚拟内存。
- 在虚拟内存上程序员分配内存不受真实物理内存限制。
4. 总结
要想学号操作系统,学号虚拟内存是必不可少的