内存管理机制关键点

虚拟内存大小:

1、对于32位系统,最大能够选址4G,其中用户态虚拟地址空间是3G,内核态是1G。

2、对于64位系统,虚拟地址只使用了48位。就像代码中写的一样,1左移了47位,就相当于48位地址空间一半的位置,0x0000800000000000,然后减去一个页,就是0x00007FFFFFFFF000,共128T。同样,内核空间也是128T。内核空间和用户空间之间隔着很大的空隙,以此来隔离

虚拟内存与物理内存映射关系:

3、操作系统引入了虚拟内存,进程持有的虚拟地址会通过 CPU 芯片中的内存管理单元(MMU)的映射关系,来转换变成物理地址,然后再通过物理地址访问内存

4、内存用页来表示,一个页大小为4K,在内核中一个物理页用一个struct page表示。

虚拟地址分布情况

分布情况
用户空间:

5、
(1) 代码段.text:存放程序执行代码的一块内存区域。只读,代码段的头部还会包含一些只读的常数变量。
(2)数据段.data:存放程序中已初始化的全局变量和静态变量的一块内存区域。
(3)BSS 段.bss:存放程序中未初始化的全局变量和静态变量的一块内存区域。
(4) 堆区:程序运行时动态申请内存用。堆从低地址向高地址增长。
(5) 栈区:存储局部变量,函数参数、返回值。栈从高地址向低地址增长。是一块连续的空间。
(6)内存映射段:是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。

内核空间:
DMA区、常规区(NORMAL)、高位区(HIGHMEN)。

ZONE_ DMA: 可以用来DMA操作的页。 ZONE_NORMAL :正常规则映射的页。
ZONE_ HIGHMEM: 高内存地址的页,并不永久性映射。 ( >896MB)

内核空间只能使用最大1G物理内存,高端内存可以映射更多的物理内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值