手机虚拟内存 安卓虚拟内存swapper

2024-12-3011:32:30常识分享0

Linux内核地址空间划分通常分为用户空间和内核空间。在32位系统中,0~3G的范围被分配给用户空间,用于运行用户态的程序;而3~4G的范围被分配给内核空间,用于操作系统内核的运行。在64位系统中,这种划分方式有所不同,但总体上仍然存在用户空间和内核空间的分离。

Linux内核高端内存是指当内核模块代码或线程访问内存时,所使用的逻辑地址在高端区域。这部分内存的访问需要通过地址一对一的映射关系,将逻辑地址转换为物理内存地址。

物理地址与逻辑地址的对应关系是通过一个固定的偏移量(0xC0000000)来实现的。例如,逻辑地址0xc0000003对应的物理地址为0x00000003,逻辑地址与物理地址的对应关系是线性的。

在Linux内核中,高端内存的管理非常重要。由于物理内存的有限性,内核需要有效地管理可用的内存空间。当需要访问高于896MB的物理地址时,内核会从高端内存中借出一段逻辑地址空间,建立临时地址映射,用完后归还。这样其他进程或代码也可以借用这段地址空间访问其他物理内存。

在Linux内核中,虚拟内存的高端内存区又分为非连续内存区、永久内核映射区和固定映射区等不同区域。每个区域都有特定的用途和管理方式。例如,非连续内存区主要用于系统硬件中断处理和内核模块生产空间一次性准备;永久映射区是给系统底层空间分区和硬件及驱动准备的;固定映射区则是为用户配置和应用软件运行提供可用空间准备的。

关于Linux内核启动过程中的实模式和保护模式切换,这是指在启动初期,CPU运行在实模式下,直接存取物理地址。随后,当Linux内核映像转入内存并做好准备后,CPU通过一条转移指令转到映象代码段的开始执行,从而转入保护模式,启用分页机制。在这个过程中,页目录和页表的结构和管理非常重要,它们是实现虚拟内存和物理内存映射的关键。