好记性不如铅笔头

kernel, linux, 操作系统, 深入理解LINUX内核, 读书笔记

《深入理解LINUX内核》读书笔记:内存寻址-分段

备注:

1 本笔记是作者根据自己的理解简化和总结的,可能有遗漏或者错误,还请各位路过的大拿们指正。

2 本笔记中的所有截图版权归属于原作者所有。

内存寻址:

内存地址的三种不同的表示方式:

三种地址间的相互转换:

逻辑地址如何转换为线性地址:

一个逻辑地址由两部分组成:

1 16位长的段标识符,或称为段选择符

2 32位长的段偏移量

段描述符:

段描述符里有一个很重要的字段Base,它包含了该段的首字节的线性地址

段描述符号计算线性地址公式:

段描述符的Base + 段偏移量 = 线性地址

根据段选择符快速定位段描述符:

段选择符中的字段的意义:

段选择符计算段描述符公式:

段描述地址 = 段选择符中Index * 8 + GDT/LDT(根据段选择符中TI)

Linux下的分段

Linux下简化了操作,将四个主要的段描述符的字段中的Base设置为0,那么计算线性地址时就只需要段偏移量了。

Leave a Reply

20 + 20 =

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据