20、内核内存管理全解析

内核内存管理全解析

1. 内核内存概述

内核运行操作系统需要内存,用于存储内核代码、数据和数据结构。内核使用虚拟内存,并通过内存管理单元将虚拟地址转换为物理页。内核有自己的地址空间和虚拟内存布局,其大部分内存是非分页的,即“固定”的。这是因为内核在执行操作系统任务时需要确保内存的可用性,若在执行内存管理任务时发生缺页错误,可能会导致死锁。不过,Solaris 允许部分内核组件从可分页内存中分配,主要用于轻量级进程线程栈。

内核内存由物理内存到内核虚拟地址空间的多种映射组成,通过一系列分层的内核内存分配器进行分配。其中, segkmem 内核段驱动用于映射非分页内核内存, segkp 段驱动用于映射可分页内核内存。在支持大页面的平台上,内核的关键和常用部分会从 4MB 大页面进行映射,以提高硬件 TLB 的效率。

2. 内核虚拟内存布局
2.1 内核地址空间

内核虚拟内存布局因平台而异,主要取决于平台的 MMU 架构。除 sun4u 平台外,其他平台的内核使用进程和内核共享的通用虚拟地址空间的顶部 256MB 或 512MB。这种共享方式限制了可用的内核虚拟地址空间大小,在一些较旧的平台上影响较大。而 sun4u 平台的内核有自己的虚拟地址空间上下文,32 位内核的地址空间为 4GB,64 位内核则覆盖整个 64 位地址范围。

内核虚拟地址空间包含以下主要映射:
- 内核代码和数据(内核二进制文件的映射)
- 内核映射空间(数据结构、缓存等)
- 32 位内核映射(仅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值