【发布时间】:2015-02-08 01:52:37
【问题描述】:
来自Computer Organization and Design, by Patterson et al
为什么是“I/O设备请求”外部中断?
“I/O 设备请求”是否意味着用户程序通过系统调用请求 I/O 设备服务?如果是,系统调用不是内部异常吗?
谢谢。
【问题讨论】:
标签: exception operating-system interrupt
来自Computer Organization and Design, by Patterson et al
为什么是“I/O设备请求”外部中断?
“I/O 设备请求”是否意味着用户程序通过系统调用请求 I/O 设备服务?如果是,系统调用不是内部异常吗?
谢谢。
【问题讨论】:
标签: exception operating-system interrupt
它指的是外围设备发出需要注意的信号,例如。磁盘控制器硬件现在已准备好满足它之前收到的读取请求,(或已完成对读取请求的数据的 DMA 处理)。
【讨论】:
操作系统的路径是一个指针数组。此进位可能有不同的名称,具体取决于系统。我将其称为“调度表”。调度表处理所有需要操作系统注意的事情:中断、故障和陷阱。最后两个统称为“例外”。
执行指令导致异常。它们是同步的。 中断是由正在执行的进程/线程之外发生的事情引起的。
用户通过执行导致陷阱的指令来同步调用操作系统(在英特尔芯片上,他们将此类陷阱称为“软件中断”)。这样的偶数是指令流的同步的、可预测的结果。
这样的陷阱将用于对设备的 I/O 请求进行排队。表格中的“从用户程序调用操作系统”。
当请求完成时,设备会产生中断。这就是表中“I/O 设备请求”的含义。
令人困惑的是,操作系统通过调度表以相同的方式处理中断、故障和陷阱。而且,正如我所说,在英特尔领域,他们将陷阱和中断都称为“中断”。
【讨论】:
因为中断不是由处理器或程序生成的。它是连接到状态改变的中断控制器的物理线路。由设备的控制器驱动,在处理器外部。中断处理程序通常位于知道如何处理设备控制器的服务请求的驱动程序中。
“调用操作系统”是一个软件中断,通常将处理器切换到保护模式来处理请求。
“算术溢出”通常是由处理器上的浮点单元生成的陷阱。
“使用未定义的指令”是另一个陷阱,由处理器自身在由于指令无效而无法再执行代码时生成。
处理器通常有更多这样的陷阱。就像除以零一样。或执行特权指令。或者当虚拟内存尚未映射到物理内存时出现页面错误。或者程序读取未映射的虚拟内存地址时出现保护错误。
【讨论】: