operating

您所在的位置:网站首页 用户通过系统调用指令来调用操作系统对吗 operating

operating

2024-07-08 05:07| 来源: 网络整理| 查看: 265

没有特别的顺序:

您的困惑主要是由于操作系统社区没有标准化的词汇造成的。这里有一些经常使用的术语,有时意思相同,有时不同:异常、故障、中断、系统调用和陷阱。任何个人作者通常都会一致地使用这些术语,但不同的作者对它们的定义不同。

有 3 种不同类型的事件会导致进入特权模式。

异步中断(例如,由需要服务的 i/o 设备引起。) 系统调用指令(int在 x86 上)。(更一般地,在 x86 手册中,这些被称为陷阱并包括一些其他指令(主要用于调试器。)) 执行异常操作的指令(非法指令、保护错误、除以 0、页面错误……)。(不同的作者称这些异常、故障或陷阱。x86 手册称这些故障。)

每个中断、陷阱或故障都有一个与之关联的不同编号。

在所有情况下:

处理器进入特权模式。 用户模式寄存器保存在某处。 处理器找到中断向量表的基地址,并使用中断/陷阱/故障编号作为表中的偏移量。这为该中断/陷阱/故障提供了一个指向服务程序的指针。 处理器跳转到服务程序。现在我们处于保护模式,用户级别的状态都保存在我们可以得到的地方,并且我们在操作系统中的正确代码中。 当服务程序完成时,它会调用中断返回指令(iret在 x86 上)。(这是 x86 上故障和陷阱之间的细微区别:故障返回到导致故障的指令,陷阱在陷阱。)

请注意令人困惑的名称“中断向量表”。尽管它被称为中断表,但它也用于故障和陷阱。(这导致一些作者将一切都称为中断。)

这个popf问题比较微妙。这本质上是 x86 架构中的一个错误。当popf从用户模式执行时,它不会导致陷阱或错误(或异常或中断或任何你想调用它的东西)。它只是充当一个 noop。

这有关系吗?好吧,对于普通的操作系统来说,这并不重要。另一方面,如果您正在实施虚拟机监视器(如 VMWare 或 Xen 或 Hyper-V),则 VMM 正在保护模式下运行,并且您希望在用户模式下运行来宾操作系统并有效地模拟任何保护模式代码。当客户操作系统使用popf指令时,您希望它生成一般保护故障,但它没有。(如果从用户模式调用, cliandsti指令会生成一般保护错误,这正是您想要的。)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3