操作系统中的半同步和半异步模式

时间:2013-09-02 06:36:12

标签: architecture operating-system

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

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. 作者的意思是从上面的单独中断堆栈借用线程?
  2.   

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

    1. 作者对aysnc的意思是什么导致细微的计时问题(这里有请求示例)?

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

    3. 总的来说,作者提到信号或中断是异步和多线程,多进程是同步吗?为什么呢?

    4. 我是aysnc概念的新手,所以需要你的帮助。

      感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题