物理内存虚拟内存bufferscached共享内存swap

Posted 沧海一粟,何以久远

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了物理内存虚拟内存bufferscached共享内存swap相关的知识,希望对你有一定的参考价值。

物理内存:

实际使用的内存;

 

虚拟内存:

虚拟内存是操作系统内核为了对进程地址空间进行管理(process address space management)而精心设计的一个逻辑意义上的内存空间概念。我们程序中的指针其实都是这个虚拟内存空间中的地址。比如我们在写完一段C++程序之后都需要采用g++进行编译,这时候编译器采用的地址其实就是虚拟内存空间的地址。因为这时候程序还没有运行,何谈物理内存空间地址?凡是程序运行过程中可能需要用到的指令或者数据都必须在虚拟内存空间中。既然说虚拟内存是一个逻辑意义上(假象的)的内存空间,为了能够让程序在物理机器上运行,那么必须有一套机制可以让这些假象的虚拟内存空间映射到物理内存空间(实实在在的RAM内存条上的空间)。这其实就是操作系统中页映射表(page table)所做的事情了。内核会为系统中每一个进程维护一份相互独立的页映射表。页映射表的基本原理是将程序运行过程中需要访问的一段虚拟内存空间通过页映射表映射到一段物理内存空间上,这样CPU访问对应虚拟内存地址的时候就可以通过这种查找页映射表的机制访问物理内存上的某个对应的地址。“页(page)”是虚拟内存空间向物理内存空间映射的基本单元。

 

共享内存:

多个进程之间共享的内存部分,比如公共库libc.so等

 

交换分区、交互内存:

交互分区属于硬盘空间,做为内存不足时的临时内存使用

swap 主要的功能是当实体内存不够时,则某些在内存当中所占的程序会暂时被移动到 swap 当中,让实体内存可以被需要的程序来使用。另外,如果你的主机支持电源管理模式, 也就是说,你的 Linux 主机系统可以进入“休眠”模式的话,那么, 运行当中的程序状态则会被纪录到 swap 去,以作为“唤醒”主机的状态依据! 另外,有某些程序在运行时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要创建的!只是不需要太大!


buffer是缓存将要放到硬盘里的数据

cache是缓存从硬盘读出来的数据

 

A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.

 

来自:http://blog.csdn.net/rebirthme/article/details/50402082

http://blog.51cto.com/frankch/1862697

以上是关于物理内存虚拟内存bufferscached共享内存swap的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核 内存管理内存映射原理 ② ( 内存映射概念 | 文件映射 | 匿名映射 | 内存映射原理 | 分配虚拟内存页 | 产生缺页异常 | 分配物理内存页 | 共享内存 | 进程内存 )

[svc]共享内存

Linux进程通信 | 共享内存

Win3内存管理之私有内存跟共享内存的申请与释放

Linux 操作系统原理 — 内存管理 — 页式内存管理技术

理解 Linux 的虚拟内存(虚拟地址物理内存)