conforming与non-conforming代码段

conforming与non-conforming代码段

Content #

  1. conforming类型强迫使用低权限或相等权限(CPL>=DPL)来运行,进入conforming段运行不改变当前运行的CPL值(无论是通过直接调用还是gate调用)。
  2. nonconforming类型限制用户使用低权限来运行(进入高权限代码需要通过gate符调用)。

conforming段: 用于不重要、无须保护的代码。 non-conforming段:用于需要保护的代码和数据。

在某些场合下,使用conforming段会比使用non-conforming段灵活:某个库routine并不涉及重要的数据和使用系统资源,它能在任意权限下运行:

  1. 使用conforming段将DPL设为0级权限,在3级权限下可以直接调用(CPL>DPL),在0级权限下,依然可以使用直接调用(CPL==DPL)。
  2. 使用non-conforming段将DPL设为3级权限,在3级权限下可以直接调用(CPL==DPL),而在其他级别无法直接调用,例如在0级不能直接调用3级权限的代码(CPL!=DPL)。将DPL设为0级权限,在3级权限下可以使用gate符进行调用,在0级权限下也可以使用gate符进行调用。

相比之下,non-conforming段的执行权限需要被定义为0级,通过gate符进行调用,显得不如conforming段灵活。并且conforming段定义在3级权限,不会改变调用者的CPL值。对于不重要的库routine来说,使用conforming段会更适合些。

Viewpoint #

From #