逻辑上应该是这样: - 为什么要有特权级概念? “现实”的需要,导致了硬件设计中包括了所谓特权级的概念,我们对现实问题的分析和认识,发现了特权级的思想应该存在于OS设计中,这种思想的物理表现形式就是硬件寄存器中的CPL,DPL,RPL位以及一整套实现特权级审查逻辑的电路; - 为什么要有所谓一致和非一致代码段的概念呢?还是因为“现实”的需要,由于OS设计时的需要,OS无疑应该是整个计算机系统环境中最高级的部分,但是也不能一概而论,OS中有些高权级代码(比如提供服务的代码)是允许低权级程序访问的,而有些又不允许,为了区分这些代码,就引入了所谓一致和非一致的概念,允许低权级访问的高权代码,我们把它放在一致码段里,不允许低权级访问的高权代码,我们把他们放在非一致码段里,这里,我们可以把OS看成一个提供服务的公仆。 而对于数据段,高权对于低权的访问总是允许的,关于这么设计的原因,不妨这么想,显然不能允许低权者访问高权者的数据,而高级者为了监视低级者的运行,应该可以访问低级者的数据。(注意,高级者仅仅是“监督”已经运行的低级者,而不是“导致或发起”低级者的运行,高级者不能导致低级者的运行就是说,高级者不能“访问或调用”低级者代码。) 代码:高 -〉低 X (高级者不应“发起”低级者的运行)低 -〉高 O (低级者可以使用高级者提供的服务,但能够提供服务的高级者必须位于一致码段) 数据:高 -〉低 O (高级者必须能够监视低级者的运行)低 -〉高 X (低级者绝不允许窥探高级者的秘密) 这是我的理解,我感觉OS以及硬件的设计体现了很多我们现实生活中分析问题,解决问题的哲学思想,甚至是世界观。
关于[特权级],[一致/非一致] 代码段 [内核栈] 的思考
最新推荐文章于 2020-03-09 16:17:33 发布