虚拟内存是内存管理的一种方式,主要是为了解决“大作业”无法同时装入内存的问题。它将多个物理内存碎片和部分磁盘空间重定向为连续的地址空间,以此让程序认为自己拥有连续的可用内存,当物理内存不足时,操作系统会根据页面置换算法将程序需要的数据交换到内存中。
虚拟地址空间:在程序运行时,操作系统(linux系统)会为每个进程分配一个4g的虚拟地址空间,其中0-3g为用户空间,3-4g为内核空间
而3-4g的内核空间被所有进程所公用。
名称 | 存储内容 |
---|---|
栈 | 局部变量、函数函数、返回地址等 |
堆 | 动态分配的内存 |
BSS段 | 未初始化化或初始值为0的全局变量和静态局部变量(可读可写) |
数据段 | 已初始化且初始值非0的全局变量和静态局部变量(可读可写) |
代码段 | 可执行代码、字符串字面值、只读变量(可读不可写可执行) |