一致和非一致段

  •  一致代码段

同——> 同:O   相同总是可以的;

低——> 高:O   这就是一致的目的,当前的特权级将被延续下去;

例:应当允许应用程序调用操作系统提供的服务代码;

高——> 低:X  高特权级代码不应依赖于低特权级代码;

例:操作系统不应调用应用程序提供的服务代码

 

  • 非一致代码段:

同——> 同:O   相同总是可以的

低——> 高:X   不想提供给应用程序调用的操作系统服务代码应放入非一致代码段;

注意:应用程序可以通过“调用门”和任务门间接访问操作系统服务代码;

高——> 低:X  高特权级代码不应依赖于低特权级代码;

 

由上述描述可知:无论是一致或非一致代码段,“同同”和“高低”的设计对于代码段而言处理逻辑是相同的;不同的是“低高”,在一致代码段中,设计想法是很自然的,操作系统(系统层)当然应该提供服务给应用程序(用户层)访问;但操作系统中某些服务的误用会导致操作系统自身崩溃,因而出于保护操作系统自身运行环境的目的,此类服务应放置于非一致代码段中,一般情况下不直接提供给应用程序(用户层)访问,如需访问,可通过“调用门”和”任务门” 间接访问之。

值得一提的是:代码跳转时,通过某种手段(调用门)可以实现“低高”。然而“高低”无论是在一致或非一致代码段都是不允许的。我们知道,操作系统有从内核层到用户层的转移过程,那么操作系统是如何实现由“高低”的访问呢?答案是通过ret指令,ret指令的程序操作发生在堆栈(也就是数据段),因而可实现由高->低的转移。数据段特权级的关系如下:

 

  •  数据段、堆栈 (总是非一致):

同——> 同:O   相同总是可以的;

低——> 高:X   操作系统的数据当然不应该让应用这种级别的代码访问;

高——> 低:O  操作系统的高特权级代码当然有权利使用应用程序提供的数据;

数据段、堆栈是非一致段,与非一致代码段不同的是,允许高特权级代码访问低特权级的数据段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值