Notes on Logical Address: segment selector/descriptor/table

Segment Selector: 16-bit field  ==> segment identifier    ━┓

                                                                                            ┣━  Logical Address                  

                   offset: 32-bit field           ━┛

 

 

 

Segment Selectors    ┏━━ index: 13-bit, segment descriptor entry index in GDT/LDT

(stored in                  ┃       TI (Table Indicator) :  TI=0, Segment Descriptor is in GDT;

Segmentation     ━━┫                                          TI=1, Segment Descriptor is in LDT

registers)  ┃      RPL(Requestor Privilege Level): 2-bit, specifies the CPL when this 

                                 ┗━━                                                  segment selector is loaded into cs register

                     

 RPL field may also be used to selectively weaken the processor privilege level when accessing data segments.

 

 


 


                                            ┏━━  cs: Code Segment. containing program instructions

Segmentation Registers      ┃        ss: stack segment, containing current program stack

(6)     ==>                  ━━┫       ds: data segment, containing static and external data

only to hold                         ┃       

Segment Selectors              ┗━━ es, fs, gs: general purpose, arbitrary segments

                                             

 

cs register: includes a 2-bit field that specifies CPL (current privilege level).

                                        

 


Segment Descriptor(8-byte): describes segment characteristics, storing in LDT or GDT.

                          

                                     ┏━━  Base: 32-bit  segment linear address

Segment Descriptor   ━┫        Limit: 20-bit  segment length in byte

                                     ┗━━  Other: G, S , Type, DPL

 

DPL(Descriptor privilege level): 2-bit field. 

minimal CPU privilege level requested for accessing the segment.

    DPL=0:  segment is accessible only when CPL=0, Kernel Mode

    DPL=3:  segment is accessible with every CPL value

 

 


 

1 GDT              ==> gdtr processor register

1 LDT for each process   ==> ldtr processor register

 

 

since a Segment Descriptor is 8 bytes long, its address is obtained by

GDT/LDT base address + index*8

e.g.

GDT is at 0x00020000 (stored in gdtr register),

index specified by Segment Selector is 2,

Segment Descriptor is at: 0x00020000 + (2*8), or 0x00020010.

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值