来自虚拟化的硬件和软件支持 - 计算机体系结构综合讲座,第 2 章(波佩克/戈德堡定理),
...考虑一下这种架构的操作系统会是什么样子(在 缺少 VMM)。
内核将运行在管理模式(M = s),应用程序将始终运行在 用户模式(M = u)。
在初始化过程中,内核首先设置陷阱入口点:MEM[0] (M:s,B:0,L:SZ,PC:trap_en).
内核将为每个应用程序分配连续的物理内存范围。
要启动或恢复存储在 [B,B+L[ 处的物理内存中且当前正在执行指令 PC 的应用程序,操作系统只需加载 PSW (M:u,L,C,PC)。
在陷阱入口点(PC =trap_en),内核首先解码指令 存储在 MEM[1].PC 中以确定陷阱的原因,然后采取适当的措施。
虽然是理想化的,特别是由于缺乏寄存器,但这种架构模型与我们今天所熟悉的架构模型并没有本质上的不同。 ...
上面提到的“陷阱入口点”在上下文中意味着什么?这是否意味着 发生陷阱时保存旧 PSW 的内存位置,如原始 Popek 和 Goldberg 论文中所述,其中 MEM[0] 或 E[0] 用于此目的?
波佩克和戈德堡论文对陷阱有这样的描述:
陷阱
我们通过定义陷阱的动作来继续第三代机器的模型。如果 i(E1,M1,P1,R1) = (E2,M2,P2,R2 则表示指令 i 被捕获)哪里
E2[j] = E1[j],对于 0
E2[0] = (M1,P1,R1)
(M2, P2, R2) = E1[1].
因此,当指令捕获时,存储保持不变,除了位置零,其中放置了指令捕获之前有效的 PSW。捕获指令后生效的 PSW 取自位置一。在大多数第三代机器的软件中,人们期望 M2 = s 且 R2 = (0,q-1)。
直观地说,陷阱会自动保存机器的当前状态,并通过将处理器模式、重定位边界寄存器和程序计数器更改为 E1[1] 中指定的值来传递对预先指定例程的控制。我们的定义可以放宽到包括这样的情况:陷阱不会阻塞指令,而是立即获得控制权,甚至稍后获得一定数量的指令,前提是机器的状态以可逆的方式存储。导致陷阱的指令即将被执行的点。
(请注意,两个文本之间的命名法有点不同。)
陷阱入口点是发生陷阱时分支到的内存地址。
是指trap发生时保存旧PSW的内存位置的地址吗
不。 这是陷阱发生时加载到 PC 中的值。