美文网首页
深入理解计算机系统笔记 2020-10-25

深入理解计算机系统笔记 2020-10-25

作者: White夏天baby | 来源:发表于2020-10-25 20:52 被阅读0次

1.7.3

虚拟内存,一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占的使用主存。每个进程看到的内存都是一致的,称为虚拟地址空间

如下图所示,地址空间最上面区域是保留给操作系统的代码和数据的,对所有进程来说都一样。底部区域存放用户进程定义的代码和数据。地址从下往上是增大的。

进程的虚拟地址空间

每个进程看到的虚拟地址空间由大量准确定义的区域构成,每个区都有专门的功能。

1.程序代码和数据。对所有进程来说,代码是从同一固定地址开始,接着是和C全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的内容初始化的。从可执行文件中加载代码和数据

2.。代码和数据区后是运行时堆。代码和数据区在进程一开始运行时就被指定了大小,堆不同,当调用像malloc和free这样的C标准函数库时,堆可在运行时动态的扩展和收缩。

3.共享库。大约在地址中间的空间部分,是一块用来存放向C标准库和数学库这样的共享库的代码和数据的区域。

4.。位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态的扩展和收缩。每次调用一个函数时,栈就会增长,从函数返回时,栈就会收缩。

5.内核虚拟内存。地址空间顶部的区域是为内核保留的。禁止应用程序读写这个空间的内容或直接调用内核代码定义的函数。它必须调用内核来执行这些操作。

虚拟内存的运作需要硬件和操作系统软件之间交互,包括对处理器生成的每个地址的硬件翻译。基本思想是,把一个进程虚拟内存的内容存储在磁盘上然后主存作为磁盘的高速缓存

一直对虚拟内存这儿不太理解,这几天通过查阅与反复阅读,大概有了个人理解了

个人理解:虚拟内存

左边的时虚拟地址空间,其中的虚拟地址映射真正的地址空间,在进程来看,这就是一个完整的内存空间,尽管在真实中是一个分散的存储空间。现实中,真正的空间肯定要更大,但是,映射原理一样。另外:注意上面的最后一句话,虚拟内存的基本思想,就知道真正的存储空间在哪里,有多大。

相关文章

网友评论

      本文标题:深入理解计算机系统笔记 2020-10-25

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