Linux内存寻址——分段机制

本文详细介绍了Linux内存寻址中的分段机制,包括物理地址、虚拟地址和线性地址的概念,以及MMU如何通过分段和分页将虚拟地址转换为物理地址。重点讲解了段描述符、地址转换过程以及Linux如何在实际应用中简化段机制,通过设置特定的段寄存器和全局描述符表实现有效的内存管理和保护。

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

一、物理地址、虚拟地址和线性地址

将主板上的物理内存条所提供的内存空间定义为物理内存空间,其中每个内存单元的实际地址是物理地址;将应用程序员看到的内存空间定义为虚拟地址空间,其中的地址是虚拟地址。线性地址空间是指一段连续的,不分段的,范围从0到4GB的地址空间,一个线性地址就是线性地址空间的一个绝对地址。

MMU内存管理单元是硬件电路,包含两个部件,分段部件(分段机制)和分页部件(分页机制)。分段机制把虚拟地址转换为线性地址;分页机制把线性地址转换为物理地址

二、段机制

段是虚拟地址空间基本单位,段机制必须把虚拟地址空间的一个地址转换为线性地址空间的一个线性地址。

1、段描述符

为实现地址映射,需要一个数据结构,包括以下三个方面的内容。

(1)段的基地址:线性地址空间中段的起始地址。

(2)段的界限(Limit):虚拟地址空间中,段内可以使用的最大偏移量。

(3)段的保护属性:表示段的特性。例如,该段是否可被读出或写入,或者该段是否作为一个程序来执行,以及段的特权级等。

如图2.5所示,虚拟地址空间中偏移量是从0到Limit范围内的一个段,映射到线性地址空间中是从Base到Base+Limit。

把图2.5用一个表描述则如表2.1所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值