慢慢欣赏linux之段式管理,以及DPL RPL和CPL

用户态代码段段选择子排行14。 148+3==0x73
用户态数据段段选择子排行15。 15
8+30x7B
内核态代码段段选择子排行12。 12*8
0x60
内核态数据段段选择子排行13。 13*8==0x68

#define GDT_ENTRY_DEFAULT_USER_CS	14
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3)

#define GDT_ENTRY_DEFAULT_USER_DS	15
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3)

#define GDT_ENTRY_KERNEL_BASE	12

#define GDT_ENTRY_KERNEL_CS		(GDT_ENTRY_KERNEL_BASE + 0)
#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)

#define GDT_ENTRY_KERNEL_DS		(GDT_ENTRY_KERNEL_BASE + 1)
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)

这里写图片描述
这样跟深入理解linux内核描述的一致

gdt每个CPU一个

static inline struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
{
	return per_cpu(gdt_page, cpu).gdt;
}

gdt的描述符定义了256个

idt_descr:
	.word IDT_ENTRIES*8-1		# idt contains 256 entries
	.long idt_table

TSS段每个CPU一个
init_TSS

CS.RPL Register PrivilegeLevel
Selector.RPL Request Privilege Level

段选择子的RPL永远也不会加载到CS的RPL上。
段选择子的RPL类似于函数的参数。例如设备间的权限为一般,DPL为1,对于物业(RPL 0)和员工(RPL 1 )来说,可以访问;但是对于访客(RPL为3)则限制不能访问。

RPL的故事 ——《x86汇编语言:从实模式到保护模式》读书笔记31
https://blog.csdn.net/longintchar/article/details/51379555

RPL保存在选择子里,那么CPL是保存在哪里的
https://blog.csdn.net/linuxheik/article/details/7542320

DPL,RPL,CPL 之间的联系和区别
https://blog.csdn.net/better0332/article/details/3416749

【x86 & x64 沉思录】
http://bbs.chinaunix.net/thread-2010713-1-1.html

Linux保护模式之-CPL、RPL、DPL
https://blog.csdn.net/hzrandd/article/details/51002903

DPL RPL CPL区别与联系
https://blog.csdn.net/ithzhang/article/details/8579433

总结一下linux中的分段机制
https://www.cnblogs.com/tolimit/p/4775945.html

Linux 从虚拟地址到物理地址
http://blog.chinaunix.net/uid-24774106-id-3427836.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值