3.《深入理解Linux内核》(2007) 作者:Daniel P.Bovet

文章访问量:

P42 段选择符

一个逻辑地址由两部分组成:一个段标识符和一个指定段内相对地址的偏移量。段标识符是一个16位长的字段,称为段选择符(Segment Selector)。而偏移量是一个32位长的字段。

段选择符:16位。段选择符存入段寄存器。段选择符的字段index指定了放在GDT(全局描述符表)或LDT(局部(local)描述符表)中的相应段描述符的入口。
段描述符:64位。段描述符存入CPU寄存器。

为了快速方便地找到段选择符,处理器提供寄存器,段寄存器的唯一目的是存放段选择符。这些段寄存器称为cs,ss,ds,es,fs和gs。

cs 代码段寄存器,指向包含程序指令的段

ss 栈段寄存器 指向包含当前程序栈的段

ds 数据段寄存器 指向包含静态数据或者全局数据段

其他三个段寄存器作一般用途,可以指向任意的数据段。

cs寄存器还有一个很重要的功能:它含有一个两位的字段,用以指明CPU的当前特权级(Current Privilege Level,CPL)。值为0代表最高优先级,而值为3代表最低优先级。Linux只用0级和3级,分别称之为内核态和用户态。

Subscribe
提醒
0 评论
Inline Feedbacks
View all comments
0
在此留下你的评论x