1

我正在以下链接中阅读有关半同步/半异步模式的信息。

http://www.cs.wustl.edu/~schmidt/PDF/PLoP-95.pdf

http://www.cs.wustl.edu/~schmidt/PDF/HS-HA.pdf

8.2 节中提到了识别短期任务并使用异步 I/O 实现它们。

使用被动的被动对象模型来实现这些短期任务。被动对象从其他地方(例如调用者或单独的中断堆栈)借用它们的控制线程。因此,这些任务必须使用异步 I/O,因为它们不能长时间阻塞。不阻塞的主要动机是确保其他系统任务有足够的响应时间。

我的问题是

  1. 作者从上面的单独中断堆栈中借用线程是什么意思?

编程简单性的需要:异步 I/O 模型的编程可能很复杂,因为输入和输出操作是由中断触发的。当当前控制线程被中断处理程序抢占时,异步可能会导致微妙的计时问题和竞争条件。此外,除运行时堆栈外,中断驱动程序还需要额外的数据结构。

  1. 作者所说的 aysnc 是什么意思会导致微妙的时序问题(在此处请求示例)?

  2. 为什么中断驱动程序除了运行时堆栈外还需要额外的数据结构。

  3. 一般来说,作者将信号或中断称为异步和多线程,将多进程称为同步?为什么?

我是 aysnc 概念的新手,所以在这里需要你的帮助。

感谢您的时间和帮助。

4

1 回答 1

1
  1. 操作系统可以被编码为使用一个线程从网络读取数据包,并使用另一个线程处理数据包。但是,如果效率低下,则使用同一个线程来读取和处理数据包。如果您将线程视为“属于”操作系统中读取数据包的代码,那么从某种意义上说,它是由处理数据包的代码“借用”的。即使在线程运行过程中线程优先级或特权发生变化,它仍然是同一个线程。

    此外,如果需要考虑创建和销毁线程的成本,则可以将一组线程预先分配为线程池。可以从该池中“借用”线程并随后返回。

  2. 异步处理容易出现竞争条件,因此编程比同步处理更具挑战性。

于 2013-11-14T17:45:00.423 回答