architecture - 除了中断驱动架构还有其他模型吗?

标签 architecture operating-system interrupt

我正在阅读有关操作系统如何使用中断与硬件通信的信息,只是想知道除了中断驱动之外是否还有其他架构?在 Robert Love 的 Linux 内核一书中,他说 Linux 处理的大部分架构都是中断驱动的,那么其他的呢?有人可以举个例子吗?谢谢。

最佳答案

对您的问题的简短回答是,只有一种其他模型,那就是轮询。在轮询模型中,系统反复询问硬件是否发生了任何事情。这种模型的缺点是 CPU 总是忙于请求,并且只有在请求时才能知道事件。如果它开始做其他事情,它可能会错过一个 Action (因为它在 Action 发生时并没有请求事件)。

较长的答案:

如果您考虑一下,实际上只有两种可能的系统:轮询(拉)和事件驱动(推)。在前者中,您询问硬件是否发生了任何事情,在后者中,硬件告诉您。换句话说:前者中的代理与 CPU/OS 相关,而后者中的代理与硬件相关。由于有两方,每一方都可以做两件事中的一件,这意味着我们只能有两种类型的系统(推/中断和拉/轮询),加上一个混合(中断驱动和基于轮询)不同的时间或不同的环境)。

人们可以想象多种方式来实现这三个系统中的任何一个,并且可以将它们算作不同的模型,即使在幕后,它们实际上是在实现其中一个可能的系统。不过,我想这并不是您要找的东西。

关于architecture - 除了中断驱动架构还有其他模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12649089/

相关文章:

javascript - 架构:组合几个 JavaScript 项目(模块化)

architecture - 如何构建使用多个独立 View 的 Knockout.js 应用程序?

reactjs - AG-Grid 与 Redux

c++ - 段错误后会发生什么?

java - 三层Controller、BO和DAO是标准方式吗?为什么不只是 Controller 和 DAO?

fonts - 操作系统中的字符集和字体有什么区别?

c - 如何在不使用循环的情况下调用 3 次 fork() 并创建 6 个进程

c - 简单中断程序陷阱/卡住cpu(USART/PIC18F/MICROCHIP/XC8)

java - Java Concurrency in Practice中 "Using interruption for cancellation"是否有错字

c++ - 停止 C++ 11 std::threads 等待 std::condition_variable