Linux内存管理的基本概念

1、页和页框的区别:

    页框,通俗的说是物理内存上的单元,请注意与页的区别,页有两层意思,但是最多的是线性地址的单元,所以,一个是实际物理内存的单元,一个是线性地址/虚拟内存的单元。

2、地址

(1)逻辑地址:指由程序产生的与段相关的偏移地址部分。在C语言指针中,读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址。

(2)线性地址:段中的偏移地址(逻辑地址),加上相应段的基地址就生成了一个线性地址。

(3)物理地址: 放在寻址总线上的地址。

(4)虚拟地址:保护模式下段和段内偏移量组成的地址,而逻辑地址就是代码段内偏移量,或称进程的逻辑地址。

3、内存

(1) 虚拟内存:计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存(例如RAM)的使用也更有效率。

(2) 物理内存:实际的内存(DRAM)。物理地址被分成离散的单元,成为页(page)。目前大多数系统的页面大小都为4k。

4、地址转换

    Linux采用段页式管理机制,有两个部件用于地址转换:分段部件和分页部件。

(1) 分段部件:将逻辑地址转换为线性地址。分段提供了隔绝各个代码、数据和堆栈区域的机制,因此多个程序(任务)可以运行在同一个处理器上而不会互相干扰。

(2) 分页部件:将线性地址转换为物理地址(页表和页目录),若没有启用分页机制,那么线性地址直接就是物理地址。

5、内存分配

    Malloc,kmalloc 和vmalloc区别?

(1) kmalloc和vmalloc是分配的是内核的内存,malloc分配的是用户的内存。

(2) kmalloc保证分配的内存在物理上是连续的,vmalloc保证的是在虚拟地址空间上的连续。

(3) kmalloc申请的内存比较小,一般小于128 K。它是基于slab(内存池)的,以加快小内存申请效率。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值