【虎彡】保护模式,跳转‘定律’
时间:2011-02-15
来源:互联网
所有的程序转跳,CPU都不会把段选择子的RPL赋给转跳后程序的CS.RPL. .
转跳后程序的CPL(CS.RPL)只会有下面的俩种可能
转跳后程序的CPL(CS.RPL) = 转跳前程序的CPL(CS.RPL)
或
转跳后程序的CPL(CS.RPL) = 转跳后程序的CodeDescriptor.DPL
有点抽象 请高手解释一下呗!
转跳后程序的CPL(CS.RPL)只会有下面的俩种可能
转跳后程序的CPL(CS.RPL) = 转跳前程序的CPL(CS.RPL)
或
转跳后程序的CPL(CS.RPL) = 转跳后程序的CodeDescriptor.DPL
有点抽象 请高手解释一下呗!
作者: znxllyuan 发布时间: 2011-02-15
选择子出现在几个地方,一种是在指令的操作数中,这时候的选择子的RPL只是用于检测访问是否合法的,如果符合max(CPL,RPL)<=DPL就允许访问,但这个RPL不会形成最终的CPL。为什么不能直接用这个RPL作为新的CPL呢?其实从访问规则就可以看出如果这个做的话特权就只能变低或者相同不能变高了,也就是特权3的代码永远也无法调用特权更高的代码了,这个和调用规则刚好相反,调用规则要求权限低的代码之后调用权限相同或者更高的代码,也就是应用程序级能调用操作系统级代码,不能反过来。对于任务切换就任何权限之间切换都有可能。
所以CPU不可能直接把选择子的RPL赋给新的CS.RPL。对于外层代码调用内层代码也就是低权限调用高权限就只能通过调用门间接处理,这时候call只能中出现的选择子的RPL用于检查访问是否符合要求,真正形成最新的CS.RPL的是调用门里面代码选择子所指向的代码描述符的DPL。
至于同权限调用没那么多问题,就相当于你说的转跳后程序的CPL(CS.RPL) = 转跳前程序的CPL(CS.RPL)。
所以CPU不可能直接把选择子的RPL赋给新的CS.RPL。对于外层代码调用内层代码也就是低权限调用高权限就只能通过调用门间接处理,这时候call只能中出现的选择子的RPL用于检查访问是否符合要求,真正形成最新的CS.RPL的是调用门里面代码选择子所指向的代码描述符的DPL。
至于同权限调用没那么多问题,就相当于你说的转跳后程序的CPL(CS.RPL) = 转跳前程序的CPL(CS.RPL)。
作者: manfeng 发布时间: 2011-02-15
引用 1 楼 manfeng 的回复:
选择子出现在几个地方,一种是在指令的操作数中,这时候的选择子的RPL只是用于检测访问是否合法的,如果符合max(CPL,RPL)<=DPL就允许访问,但这个RPL不会形成最终的CPL。为什么不能直接用这个RPL作为新的CPL呢?其实从访问规则就可以看出如果这个做的话特权就只能变低或者相同不能变高了,也就是特权3的代码永远也无法调用特权更高的代码了,这个和调用规则刚好相反,调用规则要求权限低的代码之……
选择子出现在几个地方,一种是在指令的操作数中,这时候的选择子的RPL只是用于检测访问是否合法的,如果符合max(CPL,RPL)<=DPL就允许访问,但这个RPL不会形成最终的CPL。为什么不能直接用这个RPL作为新的CPL呢?其实从访问规则就可以看出如果这个做的话特权就只能变低或者相同不能变高了,也就是特权3的代码永远也无法调用特权更高的代码了,这个和调用规则刚好相反,调用规则要求权限低的代码之……
哦 同权限跳转后 CPL不变
用门跳转可把低级CPL变成高级段DPL的级别?
书上从开始说 特权的性质是同级和同级高级访问低级,不能用低级访问高级
可是为什么现在变成高级不能访问低级了?
作者: znxllyuan 发布时间: 2011-02-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28