我是靠谱客的博主 跳跃故事,最近开发中收集的这篇文章主要介绍物理内存 虚拟内存 和进程地址空间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 物理内存:

物理内存指的是插在计算机主板内存槽上的实际物理内存,CPU可以直接进行寻址;

物理内存的容量是固定的,但是寻址空间却取决于cpu地址线条数,如32位机,则寻址空间为2^32=4G,

即最大支持4G的寻址空间,即使我们插入了32G容量的内存条,我们也只能拥有4G的物理内存;

 

2. 虚拟内存:

进程执行需要将代码和数据放在内存中,但是物理内存是有限的,当进程比较多的时候,容易造成内存耗尽,而虚拟内存有效的解决了这个问题;

 

进程创建加载的时候,自身感知获得到了一个连续的内存地址空间,而实际上内核只是分配了一个逻辑上的虚拟内存空间,并且对虚拟内存和磁盘通过mmap做映射关系,对虚拟内存和物理内存做映射关系;等到程序真正运行的时候,需要某些数据,并且不在物理内存中,才会触发缺页异常,进行数据拷贝;

 

虚拟内存空间和磁盘之间的映射使用mmap完成,说白了虚拟内存空间就是磁盘上的一块区域;

 

3. 进程地址空间:

Linux进程地址空间包含以下几个部分:

1. 代码段:指令;

2. 数据段:初始化的全局变量;

3. BSS段:未初始化的全局变量;

4. 堆:malloc动态分配内存使用堆,从低地址向高地址增长;

5. 共享库和共享内存:加载共享库和使用mmap共享内存;

6. 栈:自动变量和函数使用栈,从高地址向低地址增长;

最后

以上就是跳跃故事为你收集整理的物理内存 虚拟内存 和进程地址空间的全部内容,希望文章能够帮你解决物理内存 虚拟内存 和进程地址空间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部