【Linux】内存管理机制

本文介绍了Linux内存管理机制,包括进程空间地址管理、物理内存管理和虚拟内存技术。解释了虚拟地址到物理地址的转换过程,以及内核如何通过页表管理内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux内存管理机制

内存的表象层次依次为 逻辑地址------>线性地址----->物理地址

逻辑地址经过段机制转换成线性地址。

线性地址经过页机制转换成物理地址。

Linux将所有程序的段地址定为 0 - 4G(Linux中),所有虽然逻辑地址和线性地址不一样,但是在Linux中它们的值是一样的,可以认为是等价的。

问题:
  1. 进程空间地址如何管理?

  2. 进程地址如何映射到物理内存?

  3. 物理内存如何被管理?

进程内存空间

Linux使用虚拟内存管理技术,使得每个进程都有互不干涉的内存空间。该空间在32位操作系统上是4G的线性虚拟空间。用户所接触到的空间都是虚拟地址空间,无法看见实际的物理空间。使用这种技术不仅能保护操作系统,还可以获得比实际物理空间更大的地址。

  1. 4G虚拟地址空间被分为用户空间和内核空间。用户占0-3G,内核栈3G-4G。用户只能访问自己的虚拟地址空间,不能访问内核空间。之一用户进程进行系统调用(代表用户空间在内核态运行)才可以访问内核空间

  2. 用户空间对应进程,所以当进程切换时,用户空间就会变化。内核空间是内核负责映射的,并不会根据进程进行改变,是固定的。

    内核空间有自己的页表(init_mm.pgd),用户进程有不同的页表

  3. 每个进程的用户空间都是完全独立、互不相干的。

进程内存管理

进程内存管理的对象是进程线性地址空间上的内存镜像,这些内存镜像起始就是进程使用的虚拟内存区域。统一管理这么大的空间非常不容易。为了方便管理,虚拟空间被划分程成许多大小可变的内存区域(一般是4K),这些区域在进程线性地址中像停车场一样有序排列。这些区域的划分原则是将访问的属性一致的(可读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值